Skip to main content

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. loeschen wenn uebereinstimmung (nuetzlich um mailqueues zu leeren)
find . -exec grep -q "spamdomain.net" '{}' \; -exec rm {} \;
  • alle Sonderzeichen in Dateien anzeigen
cat -A datei | less
  • alle Dateinamen im aktuellen Verzeichnis in kleinbuchstaben 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/'