This article is an ongoing article to collect usefull bash scripts and helps to reduce overhead in my brain
general
fdupes -r -f . | grep -v '^$' | xargs rm -v #find duplicates and delete them find $PATH -type f -empty find $PATH -type d -empty -delete find $FOLDER -type f | wc -l #counts number of files in a folder mkdir `date '+%Y-%m-%d'`_test # create a folder with current date and a test string cp `ls ./ | head -n 100` 100/
Copy file
If you copy a large amount of files and want to find out which is currently copied:
ls -l /proc/27554/fd lrwx------ 1 admin administ 64 Nov 3 07:39 0 -> /dev/pts/0 lrwx------ 1 admin administ 64 Nov 3 07:39 1 -> /dev/pts/0 lrwx------ 1 admin administ 64 Nov 3 07:39 2 -> /dev/pts/0 lr-x------ 1 admin administ 64 Nov 3 07:39 3 -> .... l-wx------ 1 admin administ 64 Nov 3 07:39 4 -> .....
Where 27554 is the PID of your cp process
MySql
Size of databases in MB
SELECT table_schema "database", sum(data_length + index_length)/1024/1024 "size in MB" FROM information_schema.TABLES GROUP BY table_schema;
Grant access:
CREATE USER 'user'@'%' IDENTIFIED BY PASSWORD '*WHATSOEVER';
Get all users:
mysql> select * from mysql.user;
Convert
PGP
Encrypt a file for multiple recipients:
gpg --output filename_output.gpg --encrypt --recipient foo@bar.a --recipient a@b.d --recipient c@d.ef input.filename.zip
Vms
Access user to shared folders
sudo adduser $USER vboxsf
change keyboard layout permanent
sudo dpkg-reconfigure keyboard-configuration
Rsync
rsync -vzr viper@zoo.basf.net:/mnt/disk1/viper ./
SSH tunnel
Host UltimateDestinationHost ProxyCommand ssh GATEWAYSYSTEM -W %h:%p
key forwarding:
ssh-add ./ssh/id_rsa
pear with proxy
pear config-set http_proxy http://username:password@SERVER-IP_ODER_NAME:PORT
proxy
/etc/envirenment export http_proxy=SERVER-IP_ODER_NAME:PORT export https_proxy=SERVER-IP_ODER_NAME:PORT export ftp_proxy=SERVER-IP_ODER_NAME:PORT export HTTP_PROXY=$http_proxy export HTTPS_PROXY=$https_proxy export FTP_PROXY=$ftp_proxy
processes
ls -l /proc/$PID # to find executed bin netstat -tupan # to get reports
screen
list screens: screen -ls screen -x #open a screen screen -S <$NAME> # start a new screen with name Ctl-a d #detach from screen
external
compressed
tar -zxf file.tar.gz zip -P $PASSWORD-r $OUTPUT.zip $INPUTFILE
Filesize
du -h --max-depth=1 / To get the size of all folders within / or: du -s -h ./
curl
behind a proxy: curl --proxy http://$YOURPROXY:$PORT/ $CURLPARAM
no proxy: curl --noproxy $YOURDESTINATION $CURLPARAM
for-Loop
for i in `dir -1`; do $COMMAND $i; done for i in *; do $COMMAND $i; done find . -type f -exec $COMMAND;
for i in $( seq -w 0 999 ); do echo $i ; done | more #print 0-999 to the bash or anywhere else
grep / fgrep
grep for all keywords within the keywords.txt
fgrep -rf keywords.tst foldertobesuarched/
cat $FILE | grep '$TERM1\|$TERM2' | sort | uniq finds two terms and display only unique results grep $TERM -A N -B M # show lines before and after strings file | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" # IP adresses only grep -v "`cat ignore`" to_be_searched.txt # search but ignore all terms in the given file grep -r -Eo '(http|https)://[^ "]+' . > ../all_links grep -Eo '(http|https)://[^ "]+' all_links > all_links_real cat all_links_real | sort | uniq > all_links_sorted grep -Eo '(http|https)://[^/"]+' all_links_sorted.txt | uniq -c | sort -nr |
awk
$ head -1 $FILE | awk '{print $4, $5}' [16/Nov/2009:09:06:28 +0300] all unique IPs: awk '{print $1}' $FILE | sort | uniq How many requests: awk '{print $7}' $FILE | sort | uniq -c | sort -nr | head Response codes: awk '{print $9}' $FILE| sort | uniq -c | sort -nr | head# awk '($9="404") {print $7}' $FILE | sort | uniq -c | sort -nr | head
Images / DD / raw
qemu
Convert a vmdk to an raw / dd image
qemu-img convert -p -O raw source.vmdk destination.raw (0.00/100%)
zip
zip -P $password $RESULT.zip $FILE1 $FILE2...
unzip \*.zip # unzip all zips in one folder
7z x $FILENAME.7z #extracts a 7zip file more info
python
http_proxy=http://$YOURPROXY:$PORT/ python $YOURPYTHONSCRIPT.py #python behind a proxy
Disable proxy for a request:
import requests import os os.environ['no_proxy'] = '127.0.0.1,localhost,local.domain.net' ...
Regex
https://regex-golang.appspot.com/assets/html/index.html
Logging / Debug
https://docs.python.org/2.4/lib/minimal-example.html
PIP
pip install -–proxy=user:pass@$YOURPROXY:$PORT $PACKAGE #pip behind a proxy
pip freeze # will show you all installed python packages
dig
dig alexanderjaeger.de MX @8.8.8.8 #asks a specific nameserver for results (also usable within your own network and a local DNS resolver)
SCP
scp $USERNMAME@$REMOTEHOST:foo.txt /$DESTINATION/ -R 3-R to do it recursive
git
Find original URL of the repo: git config --get remote.origin.url
git config --global http.proxy http://$YOURPROXY:$PORT/
apt pgp key adden
sudo apt-key adv --keyserver-options http-proxy=http://$YOURPROXY:$PORT/ --keyserver keyserver.ubuntu.com --recv-keys $GPG_KEY
External useful cheatsheets:
http://cli.learncodethehardway.org/bash_cheat_sheet.pdf
Reading logs
lnav
Simply awesome: http://lnav.org/