Useful shell commands (1)
A selection of useful shell commands
Find a program which blocks a certain port
For example listening on port 8080.
lsof -i :8080
Find a file which contains a certain string
For example find all java, xml and properties files which contain a the string myapp.db.user .
grep --include=\*.{java,xml,properties} -rnw "myapp.db.user" .
Check log files
Find specific entries using grep
You only want to see the errors. Grep for ‘error’ ignoring the case. And also add the 5 lines before and the 2 lines after the matching line, because they contain useful information.
grep -i -B 5 -A 2 "error" XYZ.log
Find specific entries using awk
You’re only interested in the 4th and 7th entry (word) of lines containing the string ‘Error’, e. g. because $4 is a filename and $7 is the error code.
cat XYZ.log | awk '/Error/ {print $4 $7}'
Image the log file contains entries like “… Uploaded Files: 5 ….” and you want to sum these figures up to get a total number of uploaded files:
cat XYZ.log | awk '/Uploaded/ {print $5}' | paste -sd+ | bc
SSH port forwarding
Local
Imagine you have a postgres server running on your machine 192.168.11.1 which only listens on localhost port 5432.
But from you desktop machine you want to use a GUI tool like pgAdmin.
As little extra challenge, the SSH server on the remote server doesn’t even listen on the default port 22, but on port 2222.
Solution: Connect to the database server via SSH and use local port forwarding, forwarding your local port 5555 to the server’s port 5432 . Then point pgAdmin to localhost:5555
ssh -L 5555:localhost:5432 user@192.168.11.1 -p 2222
A slightly different case:
Image your database server runs on 192.168.11.2 which is not directly accessible. But you can SSH into 192.168.11.1 and this server can access 192.168.11.2.
In that case simply forward your local port to 192.168.11.2:5432.
ssh -L 5555:192.168.11.2:5432 user@192.168.11.1 -p 2222
Remote
You have a postgres database running on your local machine (port 5432) and you want to test a program which expects the database running on 192.168.11.1 port 1234.
Open a remote tunnel mapping the port 1234 on the remote machine to your local port 5432.
ssh -R 1234:localhost:5432 user@192.168.11.1
Dynamic (SOCKS)
If you want to tunnel the data from/to your webbrowser through a certain server:
ssh -C -D 1080 192.168.11.1
This will create a SOCKS server listening on 1080 on your local machine. Simply add that for your webbrowser’s proxy configuration.
For the websites you view via this SOCKS proxy it will appear like you came from 192.168.11.1.