Lustige Sachen mit Linux
Linux Systemverwaltung
-
doppelt vergebene UIDs finden
awk -F: '{print $3}' /etc/passwd | sort -n |uniq -d
-
normale Dateien älter als 2 Tage anzeigen
find . -type f -mtime +2 -printf "%f %Tc\\n"
-
normale Dateien älter als 2 Tage finden und löschen
find . -type f -mtime +2 -exec rm -f {} \;
-
normale Dateien älter als 2 Tage, deren Dateiname nicht mit .gz endet, mit GZIP packen
find . -type f -mtime +2 ! -name "*.gz" -exec gzip {} \;
-
normale Dateien in Unterverzeichnis g*/* mit *2005* im Namen und nicht mit der Endung *.gz„ (also nicht nicht gezippt) mit gzip packen
find g*/* -type f -name "*2005*" -a ! -name "*.gz" -exec gzip {} \;
-
normale Dateien finden größer als 1MB
find . -type f –size +1024k
-
alte (noch ungezippte) Logs, älter als 2 Tage finden und zippen
find /opt/fast/datasearch/var/log/querylogs.backup -type f -mtime +2 ! -name "*.gz" -exec gzip {} \;
-
Inhalt inkl. Unterverzeichnisse eines Ordners löschen, der zu groß für ein rm -rf ist
find /opt/vollesVerzeichnis/ -mindepth 1 -maxdepth 1 -exec rm -rf {} \;
-
Dateien durchsuchen, auch wenn man den genauen Pfad oder den Dateinamen nicht kennt
find /verzeichnis -exec grep -s -l "sucheintrag" {} \;
-
Files nach Inhalt durchsuchen und z.B.
loeschenlöschen wennuebereinstimmungÜbereinstimmung (nuetzlichnützlich um mailqueues zu leeren)
find . -exec grep -q "spamdomain.net" '{}' \; -exec rm {} \;
-
Verzeichnisse rekursiv durchsuchen und jeweils die ältesten 5 Dateien ausgeben
find . -type d -exec bash -c 'echo "next dir: ${1}" ; ls -lt "$1" | grep ^- | head -n 5' bash {} \;
-
alle Sonderzeichen in Dateien anzeigen
cat -A datei | less
-
alle Dateinamen im aktuellen Verzeichnis in
kleinbuchstabenKleinbuchstaben umwandeln
for name in * ; do mv -i $name `echo $name | tr [A-ZAeOeUe] [a-zAeOeUe]` ; done
-
Erweiterung einer Datei ändern (das Beispiel benennt .TXT in .txt um)
for a in *.TXT ; do echo mv -i $a `basename $a .TXT`.txt ; done
-
Kommandozeile verschleiern - verhindert die Anzeige des ausgeführten Programms in der Prozessliste
doexec EigentlichesProgramm Schleier Parameter
-
SSH Tunneln
ssh -g -L3389:192.168.110.17:80 myserver.de
-
Bootsektor einer Festplatte überschreiben (/dev/cciss/c0d0 durch das richtige Laufwerk ersetzen, grub.conf)
cat /etc/grub.conf dd if=/dev/zero of=/dev/cciss/c1d0 bs=512 count=1
-
Datei mit einer bestimmten Größe erstellen (hier z.B. 20MB groß)
dd if=/dev/zero of=/tmp/blafasel bs=1024k count=20
-
Eine Zeile mit awk parsen/ausgeben - Leerzeichen als Feldseparator, Feld 1 ausgeben
cat <datei> | awk -F" " '{ print $1 }'
-
access.log analysieren, nur Requests ausgeben, die Dateien größer als 150 MB runterluden (1024*1024*150)
tail -f access.log | awk '$6 > 157286400'
-
ein .patch-File erstellen
diff -aur file-alt.c file-neu.c
-
DNS-Server reverse-zonefile neu laden
rndc reload 180.34.212.in-addr.arpa.
-
alle mit a beginnenden Dateien und Verzeichnisse inklusive Unterverzeichnisse auflisten → unübersichtlich
ls -a*
-
nur noch Dateien und Verzeichnisse zeigen OHNE die Unterverzeichnisse
ls -d a*
-
Scriptautomatisierung - Texte ausgeben mit yes
Manche Programme verlangen eine Bestätigung der Eingabe mit z.B. y oder no. Dies kann automatisch passieren durch das Programm yes
yes | unzip bla.zip
-
den Kommandostack / die History der Bash löschen
export HISTSIZE=0
-
eigene IP-Adresse rausfinden (nützlich bei Einwahlverbindung) für ipv4 und ipv6
env LC_ALL=C /sbin/ifconfig eth0 | sed -n '/inet addr:/s/ [^r]*..//gp' env LC_ALL=C /sbin/ifconfig eth0 | sed -n '/inet6 addr:/s/ [^r]*..//gp'
-
SWAP-Speicher erweitern (z.B. nach Arbeitsspeichererweiterung)
dd if=/dev/zero of=/var/tmp/swapfile bs=2GB count=1 # erzeugt ein 2GB Swapfile mkswap /var/swap/swapfile #schreibt die Swapsignatur
in /etc/fstab folgende Zeile ergänzen
/var/swap/swapfile swap swap pri=1000 0 0
und nun mit swapon -a den neuen Speicher einschalten
-
VLC-Videostream mit Logitech Quickcam (HTTP mit Authentifizierung) Server-Modus
vlc v4l:/dev/video0:norm=0:frecuency=0:channel=0 --no-audio --no-sout-audio --sout-http-user username --sout-http-pwd passwort --sout '#standard{access=http,mux=asf,dst=0.0.0.0:8080}'
-
schnell ganz viele User anlegen
for i in `seq -w 1 65`; do echo "useradd -c \"Test-Account $i\" test$i; echo `pwgen -1 -c -n -s 8` | passwd --stdin test$i"; done
Backup bezogen
-
Backup eines Servers erstellen
exclude.txt (hier kommen die zu übergehenden Verzeichnisse rein)
/proc /dev /lost+found /tmp /sys
tar czf /tmp/backup.tgz --exclude-from=excludes.txt /
-
tar-Standardausgabe via SSH auf Zielsystem schicken
tar cf - `cat /verzeichnisliste.txt` | ssh -c blowfish remote.meinserver.de "cd /zielverzeichnis/bla && tar xf -"
-
Verzeichnis via rsync auf anderes System spiegeln
rsync -rlvpogDt --size-only --partial --stats --progress -e "ssh -c blowfish" root@<quellserver>:/ /<zielverzeichnis>
HAHA
-
Star Wars Beep auf der Console
beep -l 350 -f 392 -D 100 --new -l 350 -f 392 -D 100 --new -l 350 -f 392 -D 100 --new -l 250 -f 311.1 -D 100 --new -l 25 -f 466.2 -D 100 --new -l 350 -f 392 -D 100 --new -l 250 -f 311.1 -D 100 --new -l 25 -f 466.2 -D 100 --new -l 700 -f 392 -D 100 --new -l 350 -f 587.32 -D 100 --new -l 350 -f 587.32 -D 100 --new -l 350 -f 587.32 -D 100 --new -l 250 -f 622.26 -D 100 --new -l 25 -f 466.2 -D 100 --new -l 350 -f 369.99 -D 100 --new -l 250 -f 311.1 -D 100 --new -l 25 -f 466.2 -D 100 --new -l 700 -f 392 -D 100 --new -l 350 -f 784 -D 100 --new -l 250 -f 392 -D 100 --new -l 25 -f 392 -D 100 --new -l 350 -f 784 -D 100 --new -l 250 -f 739.98 -D 100 --new -l 25 -f 698.46 -D 100 --new -l 25 -f 659.26 -D 100 --new -l 25 -f 622.26 -D 100 --new -l 50 -f 659.26 -D 400 --new -l 25 -f 415.3 -D 200 --new -l 350 -f 554.36 -D 100 --new -l 250 -f 523.25 -D 100 --new -l 25 -f 493.88 -D 100 --new -l 25 -f 466.16 -D 100 --new -l 25 -f 440 -D 100 --new -l 50 -f 466.16 -D 400 --new -l 25 -f 311.13 -D 200 --new -l 350 -f 369.99 -D 100 --new -l 250 -f 311.13 -D 100 --new -l 25 -f 392 -D 100 --new -l 350 -f 466.16 -D 100 --new -l 250 -f 392 -D 100 --new -l 25 -f 466.16 -D 100 --new -l 700 -f 587.32 -D 100 --new -l 350 -f 784 -D 100 --new -l 250 -f 392 -D 100 --new -l 25 -f 392 -D 100 --new -l 350 -f 784 -D 100 --new -l 250 -f 739.98 -D 100 --new -l 25 -f 698.46 -D 100 --new -l 25 -f 659.26 -D 100 --new -l 25 -f 622.26 -D 100 --new -l 50 -f 659.26 -D 400 --new -l 25 -f 415.3 -D 200 --new -l 350 -f 554.36 -D 100 --new -l 250 -f 523.25 -D 100 --new -l 25 -f 493.88 -D 100 --new -l 25 -f 466.16 -D 100 --new -l 25 -f 440 -D 100 --new -l 50 -f 466.16 -D 400 --new -l 25 -f 311.13 -D 200 --new -l 350 -f 392 -D 100 --new -l 250 -f 311.13 -D 100 --new -l 25 -f 466.16 -D 100 --new -l 300 -f 392.00 -D 150 --new -l 250 -f 311.13 -D 100 --new -l 25 -f 466.16 -D 100 --new -l 700 -f 392
-
lecker Bier:
[magenbrot@brot ~]$ cd /pub [magenbrot@brot pub]$ more beer .OOOOOOOOO. .OOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOO ooOOOOOOOOOOOOOOOOOOOOOOOoOO |OooooOOOOOOOOOOOOOOOooooO|O _______|OOOOOoooooOOOOOoooooOOOOO|O / OOOOOOOOOoOOOOOoOOOOOOOOO|O / .------+OOOOOOOOOoOOOOOoOOOOOOOOO| / / |OOOOOOOOOOoOOOoOOOOOOOOOO| | | |.OOOOOOOOOoOOOoOOOOOOOOO.| | | |.....OOOOOOoOOoOOOOO.....| | | |...........OOOo..........| \ \ |...........OOOo..........| \ '------+............Oo...........| \________ .........................| |.........................| /........................... ooo.......................ooo oooo...............oooo ooooooooooooooo
-
schwanzersatz.sh:
echo `uptime|grep days|sed 's/.*up \([0-9]*\) day.*/\1\/10+/'; \ cat /proc/cpuinfo|grep "cpu MHz"|awk '{print $4"/30 +";}'; free|grep '^Mem' \ |awk '{print $3"/1024/3+"}'; df -P -k -x nfs | grep -v 1k \ | awk '{if ($1 ~ "/dev/(scsi|sd)"){ s+= $2} s+= $2;} END \ {print s/1024/50"/15+70";}'`|bc|sed 's/\(.$\)/.\1cm/'