Unsorted Linux-Tipps
Hier findet man einige Sachen, die ich mir einfach nicht merken kann (hattu Kopf wie Sieb, muttu notieren), oder die ich zu selten gebrauche, um sie mir zu merken :-) Einige Websites nicht aufrufbar (Connection refused, no response): Ab 2.4 Kernel ist ECN (Explicid Congestion Notification, RFC2481) standardmässig eingeschaltet. Fehlkonfigurierte Sites bzw. Router/Firewalls, die alle ICMP-Pakete filtern, sind so nicht erreichbar. Umgehen kann man das Problem indem man ECN ausschaltet: echo 0 > /proc/sys/net/ipv4/tcp_ecn bzw. sysctl -w net.ipv4.conf.default.tcp_ecn=0 Man kann das ganze auch dauerhaft in /etc/sysctl.conf eintragen. Der richtige Weg wäre aber eigentlich, den Administrator der betroffenen Site das Problem an der Wurzel lösen zu lassen.
Sämtliche Syslog-Ausgaben auf einem ungenutzten tty ausgeben:
GPG-Keys signieren:
Ein paar Worte zu DNS+dig:
; <<>> DiG 9.1.3 <<>> -t ns vobis.net ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51942 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;vobis.net. IN NS ;; ANSWER SECTION: vobis.net. 29695 IN NS NS.MGI.DE. vobis.net. 29695 IN NS NS.VOBIS.DE. vobis.net. 29695 IN NS XLINK1.XLINK.net. vobis.net. 29695 IN NS NS.MGI.DE. vobis.net. 29695 IN NS NS.VOBIS.DE. vobis.net. 29695 IN NS XLINK1.XLINK.net. ;; Query time: 37 msec ;; SERVER: 193.189.244.197#53(193.189.244.197) ;; WHEN: Fri Feb 22 14:12:26 2002 ;; MSG SIZE rcvd: 142 Prüfen ob ein SOA-Record vorhanden ist: [andre@Gandalf ~ ] > dig -t SOA vobis.net @NS.MGI.DE ; <<>> DiG 9.1.3 <<>> -t SOA vobis.net @NS.MGI.DE ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 51080 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;vobis.net. IN SOA ;; Query time: 53 msec ;; SERVER: 194.123.45.97#53(NS.MGI.DE) ;; WHEN: Fri Feb 22 14:13:27 2002 ;; MSG SIZE rcvd: 27
Diverse Wege eine CD als ISO-Image auf die Platte zu bekommen:
Ein ISO-Image mounten:
ARP Einträge auf CISCO-Router faken:
Prüfen, ob ein Nameserver tut:
root 139 1 0 Jan15 ? 00:17:12 /usr/sbin/named D.h. zumindest gibt es einen Prozess namens named. Ob der auch arbeitet, kann man via: ndc statusoder ndc querylog ueberpruefen - Nach dem Starten des Loggens mit ndc querylogsollte im /var/log/daemon.log etwa folgendes zu sehen sein: mgr1:~# tail -f /var/log/daemon.log Jan 22 13:10:34 mgr1 named[139]: ns_forw: query(110.81.238.157.in-addr.arpa) All possible A RR's lame Jan 22 13:11:09 mgr1 named[139]: query log on Jan 22 13:11:09 mgr1 named[139]: XX+/217.49.203.141/stations-de.real.com/A/IN Jan 22 13:11:10 mgr1 named[139]: XX+/127.0.0.1/140.210.71.195.in-addr.arpa/PTR/IN Jan 22 13:11:10 mgr1 named[139]: XX+/127.0.0.1/144.210.71.195.in-addr.arpa/PTR/I Jan 22 13:11:15 mgr1 named[139]: XX+/127.0.0.1/hub62.wpr2.mediaways.net/A/IN Jan 22 13:11:16 mgr1 named[139]: XX+/127.0.0.1/144.210.71.195.in-addr.arpa/PTR/IN Jan 22 13:11:16 mgr1 named[139]: XX+/127.0.0.1/143.210.71.195.in-addr.arpa/PTR/IN Jan 22 13:11:16 mgr1 named[139]: XX+/127.0.0.1/hub7.wpr2/A/IN Jan 22 13:11:16 mgr1 named[139]: XX+/127.0.0.1/hub7.wpr2.mediaways.net/A/IN Jan 22 13:11:17 mgr1 named[139]: XX+/127.0.0.1/140.210.71.195.in-addr.arpa/PTR/IN Jan 22 13:11:17 mgr1 named[139]: XX+/127.0.0.1/146.210.71.195.in-addr.arpa/PTR/IN Jan 22 13:11:17 mgr1 named[139]: XX+/217.49.237.204/www.yahoo.com/A/IN Jan 22 13:11:17 mgr1 named[139]: XX+/127.0.0.1/hub5.wpr2/A/IN Jan 22 13:11:17 mgr1 named[139]: XX+/127.0.0.1/hub5.wpr2.mediaways.net/A/IN Jan 22 13:11:17 mgr1 named[139]: XX+/127.0.0.1/146.210.71.195.in-addr.arpa/PTR/IN Nicht vergessen anschliessend das Logging wieder abzuschalten, da sonst über kurz oder lang das Filesystem volllaufen würde. Abschalten durch erneute Eingabe von ndc querlog Zur Erklaerung der Ausgabe: XX+/127.0.0.1/hub7.wpr2/A/IN XX ist das querylog. Danach kommt jeweils durch / getrennt erst der anfragende Host (hier 127.0.0.1) der Name oder die IP Adresse, die angefragt wird (hier hub7.wpr2), der Typ (hier A) und der Network typ (Hier IN). Es koennen die Typen A - A Record (Addresse) PTR - Pointer (Name) SOA - Source of Authority (Zonen header) angefragt werden.
Was ich mir nie merken kann: Radius checken mit radpwtst:
radpwtst -r 1 -d /bla/radius/raddb/ -s SERVER -w PASSWORD -u ppp USER SERVER: ist der Hostname oder die IP eines Servers, auf dem ein radiusd läuft und in dessen Clientsfile die Maschine, auf der man diesen Befehl absetzt, eingetragen ist. Dieser Server bekommt die Anfrage. USER: Username PASSWORD: Password des Users -u gibt den Typ der Anfrage an. Wenn -u nicht angegeben wird, wird ein "Authenticate Only" Request gestellt. Manche Radiusserver mögen solche Requests nicht und lehnen sie ab, auch wenn User und Passwort ok sind.
Usage: radpwtst [-a ACKs] [-c code] [-d directory] [-f file]
[-g group] [-h] [-i client-id] [-l async port] [-n]
[-p UDP-port] [-r retries] [-s server] [-t timeout]
[-u type] [-v version] [-w password] [-x] accessID
Codes: Access-Request = 1
Accounting-Request = 4
Password = 7
Status-Server = 12
Types: challenge, chap, dumb, slip, ppp, arades, dbdumb,
dpslip, dbppp, outbound, admin, exec, dbadmin
Alle Dateinamen in einem Verzeichnis modifizieren:
Newline am Zeilenende entfernen mit dem vi:
Doppelte Datensätze in allen Dateien suchen:
Die grössten Files in einem Verzeichnis ausfindig machen:
Festplatten sicher löschen:
Grafische Konsole einschalten:
In der /etc/lilo.conf kann dann der Videomode z.B. mit: vga=0x317 (1024x768, 16Bit Farbtiefe)angegeben werden. Wenn man bei jedem Booten nach dem gewünschten Mode gefragt werden möcte, fügt man: vga=askin der /etc/lilo.conf an. Möglich sind folgende Modes: Colours 640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200 --------+-------------------------------------------------------------- 4 bits | ? ? 0x302 ? ? ? ? 8 bits | 0x300 0x301 0x303 0x305 0x161 0x307 0x31C 15 bits | ? 0x310 0x313 0x316 0x162 0x319 0x31D 16 bits | ? 0x311 0x314 0x317 0x163 0x31A 0x31E 24 bits | ? 0x312 0x315 0x318 ? 0x31B 0x31F 32 bits | ? ? ? ? 0x164 ? ?
Shoutcast-Playlisten an die Playlist vom xmms anhängen:
MIME type: audio/x-scpls File ext: pls Open with other application: /usr/local/bin/xmms-e.sh Das dazu gehörende Shellscript xmms-e.sh ist ein einfacher Einzeiler: #!/bin/sh xmms -e $1
Magic SysRq keys nutzen:
echo 1 > /proc/sys/kernel/sysrq ausführen.Um die Magic SysRq keys zu nutzen, muss man nicht eingelogged sein! Mögliche Befehle sind: SysRq : HELP : loglevel0-8 reBoot tErm kIll saK showMem Off showPc unRaw Sync showTasks UnmountBefehle kann man mit: Strg+Alt+[Druck/S-Abf]+[0-8,B,E,I,K,M,O,P,R,S,T,U]absetzen, wobei obige Hilfe immer dann angezeigt wird, wenn man eine Taste drückt, die nicht belegt ist.
rpm hat seit Version 4.1 einen kleinen Bug
Speicher und I/O-Last anzeigen:
[root@Gandalf root]# vmstat 1 procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 1 0 0 138328 7288 5892 100908 2 2 23 7 59 29 9 8 83 2 0 0 138328 8064 5916 100908 0 0 0 52 340 10847 13 17 71 1 0 0 138328 8060 5916 100908 0 0 0 0 277 8409 12 11 77 3 0 0 138328 7932 5916 101036 0 0 128 0 323 9462 10 13 77 3 0 0 138328 7932 5916 101036 0 0 0 0 565 10232 9 16 75 4 0 0 138328 7932 5916 101036 0 0 0 0 381 8812 8 15 77
Perlmodule mit CPAN nachinstallieren:
[root@crawler nmstools-2.0.1]# perl -MCPAN -e shell cpan shell -- CPAN exploration and modules installation (v1.63) ReadLine support enabled cpan> install Expect
Linux Bootprozess:
Inodes: df -i zeigt die benutzten Inodes an.
Wenn ein Device wegen busy nicht umounted werden kann:
Vorteil von Labels beim Mounten:
dumpe2fs gibt den Superblock einer Partition aus (hier findet man z.B. auch das Label der Pa
rtition)
Dateien aus RPMs extrahieren geht mit rpm2cpio oder mit dem mc.
Dependencies mit rpm auf der Komandozeile lösen (undocumented feature):
/etc/default/useradd enthält die Defaults für das useradd Kommando
/etc/passwd muss worldreadable sein, da viele Daemons darauf zugreifen (/etc/shadow ist dafür nur für root lesbar)
suid und sgid
chmod setzt die Bits von rechts nach links. chmod 7 xxx führt zu -------rwx, chmod 77 xxx zu
----rwxrwx ...
Wenn ein File /etc/nologin existiert, kann sich sofort kein User mehr anmelden. Das File wird beim nächsten Booten automatisch gelöscht.
/etc/security/limits.conf: Limiterungen betreffend Login, data, fsize, memlock, cpu, nproc .
...
Bespielkonfigurationen zur RAID-Konfiguration liegen unter /usr/share/doc/raidtools-xxx/
Die Beispiele können einfach nach /etc/raidtab kopiert und angepasst werden.
Apache:
[root@mymx conf.d]# httpd -t -D DUMP_VHOSTS
VirtualHost configuration:
195.71.86.230:80 is a NameVirtualHost
default server www.mymx.org (/etc/httpd/conf/httpd.conf:1081)
port 80 namevhost www.mymx.org (/etc/httpd/conf/httpd.conf:1081)
port 80 namevhost mymx.org (/etc/httpd/conf/httpd.conf:1089)
port 80 namevhost aptrpm.mymx.org (/etc/httpd/conf/httpd.conf:1097)
195.71.86.230:443 mail.mymx.org (/etc/httpd/conf.d/ssl.conf:91)
Syntax OK
anzeigen.
Um die smb.conf zu checken:
DNS:
Zonen können mehrere Domains enthalten.
Die initrd updaten:
xinetd und TCPwrapper:
X-Session exportieren oder eine zweite Seesion in der Session.
Freier X-Server für Windows:
Beim Start des Desktop Environment passiert:
Syntaxchecker:
Korruptes Filesystem reparieren:
Devices:
Datenfelder aufsummieren mit awk:
Maximum in einem File mit awk ermitteln:
awk's Ausgabeformat beeinflussen:
MP3 nach OGG transcoden:
Ein self signed Zertifikat für Apache erzeugen: #!/bin/sh host=`/bin/hostname` cd /etc/apache-ssl openssl genrsa -out $host.key 1024 chmod 600 $host.key openssl req -new -key $host.key -out $host.csr -in infile openssl x509 -req -days 1460 -in $host.csr -signkey $host.key -out $host.crt mv apache.pem apache.pem.old cp $host.key apache.pem cat $host.crt >> apache.pem chmod 600 apache.pem /etc/init.d/apache-ssl restart
MRTG ohne SNMP:
#!/bin/sh
# executed by mrtg. Returnes CPU load 5min avg.
echo 0
cat /proc/loadavg | awk '{OFMT="%.0f"; print $2*100}'
uptime| awk '{print $3,$4,gensub(",",".00","2",$5)}'
hostname
Partitionsauslastungen:
#!/bin/sh
# executed by mrtg. Returnes usage percentage of /boot and /
df | grep "/dev/md0" | awk '{print gensub("%","","1",$5)}'
df | grep "/dev/md2" | awk '{print gensub("%","","1",$5)}'
uptime| awk '{print $3,$4,gensub(",",".00","2",$5)}'
hostname
Speicherauslastung:
#!/bin/sh
# executed by mrtg. Returnes usage percentage of Mem and Swap
cat /proc/meminfo | grep Mem: | awk '{OFMT="%.0f"; print $3/$2*100}'
cat /proc/meminfo | grep Swap: | awk '{OFMT="%.0f"; print $3/$2*100}'
uptime| awk '{print $3,$4,gensub(",",".00","2",$5)}'
hostname
Netzwerktraffic:
#!/bin/sh
# executed by mrtg. Returnes transfered bytes
cat /proc/net/dev| grep eth1 | sed -e s/eth1:// | awk '{print $1,"\n"$9}'
uptime| awk '{print $3,$4,gensub(",",".00","2",$5)}'
hostname
Anzahl Prozesse:
#!/bin/sh
# executed by mrtg. Returnes number of processes
echo 0
ls /proc/| egrep "[1-9]+"| wc -l
uptime| awk '{print $3,$4,gensub(",",".00","2",$5)}'
hostname
Die passende mrtg.cfg kann dann z.B. so aussehen:
# Global configuration WorkDir: /var/www/mrtg WriteExpires: Yes Title[^]: Traffic Analysis for root48.filoo.de Target[Ethernet]: `/usr/local/mrtg/net.sh` MaxBytes[Ethernet]: 1250000 Refresh: 600 Title[Ethernet]: Traffic Analysis for eth1 PageTop[Ethernet]: Traffic Analysis for eth1 Target[CPU_Load]: `/usr/local/mrtg/cpu.sh` MaxBytes[CPU_Load]: 100 Unscaled[CPU_Load]: dwmy YLegend[CPU_Load]: Load % ShortLegend[CPU_Load]: % Options[CPU_Load]: noi,gauge Refresh: 600 Title[CPU_Load]: CPU Load Legend2[CPU_Load]: CPU Load LegendO[CPU_Load]: CPU Load PageTop[CPU_Load]: CPU Load target[Memory]: `/usr/local/mrtg/mem.sh` options[Memory]: gauge title[Memory]: Utilisation Memory and Swap maxbytes[Memory]: 100 unscaled[Memory]: dwmy YLegend[Memory]: Utilisation % ShortLegend[Memory]: % Legend1[Memory]: Utilisation Memory Legend2[Memory]: Utilisation Swap LegendI[Memory]: Memory LegendO[Memory]: Swap PageTop[Memory]: Utilisation Memory and Swap Target[Proc]: `/usr/local/mrtg/proc.sh` MaxBytes[Proc]: 160 Unscaled[Proc]: dwmy YLegend[Proc]: Processes ShortLegend[Proc]: % Options[Proc]: noi,gauge Refresh: 600 Title[Proc]: Processes Legend2[Proc]: Processes LegendO[Proc]: Processes PageTop[Proc]: Processes target[HD]: `/usr/local/mrtg/hd.sh` options[HD]: gauge title[HD]: Utilisation /boot and / in percent maxbytes[HD]: 100 unscaled[HD]: dwmy YLegend[HD]: Utilisation % ShortLegend[HD]: % Legend1[HD]: Utilisation /boot Legend2[HD]: Utilisation / LegendI[HD]: /boot LegendO[HD]: / PageTop[HD]: Utilisation /boot and / in percent Und so sieht's aus
Kommentarzeilen und leere Zeilen ignorieren beim Parsen mit Skripten: cat FILE | sed -e 's/#.*//' | egrep -v '^ *$' Perl: Kommentarzeilen überspringen: next if (/^#+/); Leere Zeilen überspringen: next if (/^\s*$/);
Logfileeinträge der letzten x Stunden finden: for i in `seq -4 0`;do grep `date "+%d/%b/%Y:%H" --date="$i hours"` /var/log/apache2/access.log | grep " 404"; done Das Format, das date liefert, muss natürlich zum Format im Logfile passen. Obiges Format passt für meinen Apache mit LANG=c
Allen Dateien in einem Verzeichnis unabhängig von ihrem aktuellen Namen umbenennen und mit Datum versehen:
/bin/ls -lt --time-style=+%y%m%d *.xls |\
while read i
do DATE=`echo $i | awk '{print $6}'`; NAME=`echo $i | awk '{print $7}'`; mv $NAME MDF-Report-$DATE.xls
done
Audio Tracks von einer DVD rippen: for i in `seq 2 18`;do mplayer dvd://1 -aid 128 -chapter $i-$i -dumpfile title2.wav -vc null -vo null -ao pcm:waveheader ; mv audiodump.wav track$i.wav; done Ich mache das in einer Schleife, damit ich für die einzelnen Kapitel separate Tracks bekomme. Wenn ich mp3s haben möchte, konvertiere ich die Tracks anschliessend mit lame: for i in `seg 2 18`; lame -h -V0 -q0 --resample 44.1 track$i.wav track$i.mp3; done
andre@host:[ ~ ] > date --date=@1202465255 Fr 8. Feb 11:07:35 CET 2008
Mountoptionen für VFAT Laufwerke unter linux
mount -t vfat -o shortname=mixed,codepage=850,umask=002,uid=500,gid=500 /dev/sdc1 /tmp/mountWenn z.B. ein USB-Laufwerk automatisch über hal und gnome-mount gemountet wird, kann man diese Optionen mit dem gconf-editor unter /system/storage/default_options/vfat eintragen.
cryptsetup create -c aes-cbc-essiv:sha256 -s 256 -y private /dev/sdb1 cryptsetup luksOpen /dev/sdb1 privateDanach wird das Filesystem erzeugt: mkfs.ext3 -m1 /dev/mapper/privateInformationen über das erzeugte Volume kann man sich folgendermassen anzeigen lassen: cryptsetup luksDump /dev/sdb1Weitere keys (bis zu 8) kann man mit: cryptsetup luksAddKey /dev/sdb1hinzufügen. Löschen kann kann man keys natürlich auch (unter Angabe des key-slot): cryptsetup luksDelKey /dev/sdb1 <key slot>Damit das Volume beim Einloggen über GDM automatisch gemountet werden kann, muss das Passwort für das Volume dem Passwort für das Login entsprechen und das Paket pam_mount installiert sein. In der Datei /etc/security/pam_mount.conf.xml muss zusätzlich folgende Zeile eingefügt werden: <volume user="USERNAME" mountpoint="/data/private" path="/dev/sdb1" fstype="crypt" />Ausserdem muss die Datei /etc/pam.d/gdm zwei zusätzliche Einträge enthalten: #%PAM-1.0 auth optional pam_mount.so auth [success=done ignore=ignore default=bad] pam_selinux_permit.so auth required pam_env.so auth substack system-auth auth optional pam_gnome_keyring.so account required pam_nologin.so account include system-auth password include system-auth session required pam_selinux.so close session include system-auth session optional pam_mount.so session required pam_loginuid.so session optional pam_console.so session required pam_selinux.so open session optional pam_keyinit.so force revoke session required pam_namespace.so session optional pam_gnome_keyring.so auto_startDas wärs dann auch schon ;-)
GPS-Tracks aus einem Garmin Gerät auslesen:
gpsbabel -i garmin -t -f usb: -o gpx -F tracks.gpx Umwandeln ins KML Format für Google Earth: gpsbabel -i gpx -f tracks.gpx -o kml -F tracks.kml
Videos für den IPod Touch oder IPhone umwandeln:
#!/bin/bash
IN=$1
OUT=`echo $1 | sed 's/avi/mp4/'`
ffmpeg -y -i ${IN} -vcodec libx264 -acodec libfaac -ab 128k -ac 2 -b 640k -threads 4 -flags +loop \
-cmp +chroma -partitions 0 -me epzs -subq 1 -trellis 0 -refs 1 -coder 0 -me_range 16 -g 300 \
-keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -maxrate 1M -bufsize 1M -rc_eq 'blurCplx^(1-qComp)' \
-qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 ${OUT}
Ganze Datei in Großschreibung oder Kleinschreibung wandeln mit dem vi:
:%s/.*/\L&/ Uppercase: :%s/.*/\U&/
to be continued...
|