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. löschen wenn Übereinstimmung (nü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 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/'
                
No comments to display
No comments to display