====== Kommandozeilen Schnipsel ====== ===== fli4l ===== Abfrage der aktuellen Übertragungsrate eines Fli4l Routers via Imond/Telnet Schnittstelle: (sleep 0.2; echo "pass xxxxxxxxxxx"; sleep 0.2; echo "rate pppoe"; sleep 0.2; echo "quit") | telnet 5000 ===== ShellCheck ===== [[https://www.shellcheck.net/|https://www.shellcheck.net/]] - Shell Checker ===== System ===== ==== Betriebssystem-Informationen ==== Das aktuell laufende System ermitteln: cat /etc/os-release Geschwindigkeit der LAN Schnittstelle ermitteln: sudo mii-tool -v enp7s0 ==== speziellen Prozess beenden ==== Beispiel ''vlc'': vlc_pid=`pstree -n -p | grep -i vlc -m 1 | cut -d"(" -f2 | cut -d")" -f1`; kill -9 $vlc_pid # oder vlc_id=`pstree -n -p | grep -m1 -i vlc | cut -f2 -d'('| cut -f1 -d')'`; kill -9 $vlc_id ==== Prozesse kontrollieren ==== Laufende (Hintergrund-) Prozesse anzeigen: $ jobs [1]+ Running PROCESS_1 & Aktuellen im Vordergrund laufenden Prozesse in den Hintergrund verschieben: $ jobs [1] Running PROCESS_1 & bg %1 [1]+ PROCESS_1 & Aktuellen im Hintergrund laufenden Prozesse in den Vordergrund holen: $ jobs [1] Running PROCESS_1 & fg %1 ==== Systemd ==== Aktiverte Systemdienste anzeigen: systemctl list-unit-files | grep enabled To list all the systemd service which are in state=active and sub=running\\ systemctl list-units --type=service --state=running\\ To list all the systemd serice which are in state=active and sub either running or exited\\ systemctl list-units --type=service --state=active\\ systemctl show service -p TimeoutStartUSec systemctl cat networking systemctl cat dhcpcd systemctl status dhcpcd.service ==== Apt-Tools ==== === Paketarchiv löschen ==== apt-get clean apt-get autoclean === Update installierter Pakete ==== Sollte mal ein ''apt-get upgrade'' nicht funktionieren und eine Reihe Pakete zurückgehalten werden kann die Ursache mit folgender Zeile ermittelt werden: apt-get -o Debug::pkgProblemResolver=yes upgrade Quelle: [[http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.de.html|http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.de.html]] === aktualisierbare Pakete anzeigen === aptitude search ~U === aktualisierbare Pakete installieren === aptitude install ~U ==== Power Management ==== Im Akkubetrieb die aktuelle Leistungsaufnahe anzeigen lassen: powerstat -d 10 5 100 Mit [[http://wiki.ubuntuusers.de/PowerTOP2|PowerTop]] den Energieverbrauch des Systems analysieren und daraus eine HTML-Seite erstellen powertop --html SATA Leistungsaufnahme reduzieren echo SATA_ALPM_ENABLE=true | tee /etc/pm/config.d/sata_alpm IDLE Timer zum automatischen Dimmen der Displaybeleuchtung auslesen: gsettings get org.gnome.settings-daemon.plugins.power idle-dim-time IDLE Timer setzen: gsettings set org.gnome.settings-daemon.plugins.power idle-dim-time 90 ==== Kernel Log-Meldungen: ==== Fortlaufende Ausgabe der Kernel Meldungen, z.B. nützlich bei der Inbetriebnahme neuer Hardware: tail -f /var/log/messages Fortlaufende Ausgabe der Kernel Meldungen auf dem Desktop per ''osd_cat'' tail -f /var/log/messages | osd_cat --pos=bottom --delay=20 --color=black --offset=50 --indent=500 --lines=10 --font=-*-terminal-*-*-*-*-14-*-*-*-*-*-* ==== Mount ==== Finde alle eingebundenen Partitionen ''[sda...sdz]'' und unmounte sie: MP=`mount | grep -i sd[a-z] | cut -d" " -f3`; echo "Mountpoint: \"$MP\""; umount $MP Wenn ''sda1'' im System vorhanden ist dann mounte diese Partiton nach ''/ftp'' cat /proc/partitions | grep -q -e sda1 && mount /dev/sda1 /ftp Eine Partition anhand Ihrer Herstellerbezeichung finden und mounten: ls -l /dev/disk/by-id/ ... lrwxrwxrwx 1 root root 10 Jul 27 08:22 usb-TOSHIBA_External_USB_3.0_20150324xxxxxxxxxxxxxx-0:0-part1 -> ../../sde1 ... mkdir -p /media/Toshiba-2TB mount /dev/disk/by-id/usb-TOSHIBA_External_USB_3.0_20150324xxxxxxxxxxxxxx-0:0-part1 -t ext4 /media/Toshiba-2TB \\ Prozesse finden, die ein ''unmount'' blockieren sudo su fuser -kim /PFAD/ZUM/MOUNTPOINT /PFAD/ZUM/MOUNTPOINT: wird angezeigt # mit ''N'' abbrechen pstree -n -p | grep -i UUID eines Laufwerkes ermitteln: sudo su blkid /dev/mmcblk0: PTUUID="c62b16eb" PTTYPE="dos" /dev/mmcblk0p1: UUID="42146a70-75a6-4ee7-b315-ffad2d408385" TYPE="ext2" PARTUUID="c62b16eb-01" /dev/mmcblk0p2: UUID="855ca3a0-0307-45e5-8ac7-020275c8801f" TYPE="ext4" PARTUUID="c62b16eb-02" /dev/mmcblk0p5: UUID="2f3771cc-68e2-4e44-a97d-6fe99eea34f0" TYPE="swap" PARTUUID="c62b16eb-05" /dev/sda1: LABEL="TOSHIBA-1TB" UUID="afeb5bfa-bf16-42f0-a8d0-8f57619746a8" TYPE="ext4" PARTUUID="00084934-01" # nano /etc/fstab UUID=afeb5bfa-bf16-42f0-a8d0-8f57619746a8 / ext4 defaults 1 1 smbclient -L -U Eine Sambafreigabe eines Servers komfortabel einbinden:\\ ''vi /etc/fstab'' ... /// /home//LOKALER_MOUNTPUNKT> cifs credentials=/ Sog. ''credentials'' File anlegen: username= password= ==== Grafik ==== Grafikkarte ermitteln: lshw -C video ==== RAID ==== RAID Status ermitteln: cat /proc/mdstat Defekte Festplatte aus dem System entfernen: mdadm /dev/md1 --remove /dev/hdf1 ==== USB-Laufwerke ==== === bootfähige USB-Sticks erstellen === Einen bootfähigen USB-Stick zur Installation von Windoews 10 erstellen: # getestet mit Ubuntu 16.04 LTS sudo add-apt-repository ppa:nilarimogard/webupd8 sudo apt update sudo apt install winusb sudo winusb --format /home/andrei/Downloads/win10.iso /dev/sdc === USB-Stick ohne Partition mit VFAT formatieren === Um einen USB-Stick mit VFAT zu formatieren muss man zusätzlich die Option -I angeben. In einigen Fällen ist die Schreibgeschwindigkeit eines USB-Sticks ohne Partition(en) deutlich schneller als mit. Bei mir z.B. bei einem Intenso 64GB USB 3.0 Stick. Nach dem Entfernen der ersten Partition stieg die Schreibgeschwindigkeit von ca. 17MB/s auf knapp über 30MB/s an. mkfs.vfat -I [-n DEVICENAME] /dev/sd[x] === USB-Stick mit exFAT formatieren === Für die Verwendung mit USB-Sticks sind die standard Dateisysteme wie z.B. ''VFAT'' (FAT16/FAT32) oder ''NTFS'' eher ungeeignet. Speziell für FLASH Speicher wurde das Dateisystem ''exFAT'' entwickelt. Installation: sudo apt-get install exfat-fuse exfat-utils Formatierung eines USB-Sticks: mkfs.exfat [-n DEVICENAME] /dev/sd[x][n] === Partitionstabelle löschen === dd count=1 bs=512 if=/dev/zero of=/dev/sdx && sync === Integritäts-Check === In regelmäßigen Abständen sollte eine Festplatte oder Partition auf defekte Blöcke untersucht werden. Das erledigt der folgende Aufruf indem er einen Dateisystemcheck erzwingt (''-f'') und anschließend nach defekten Böcken sucht (''-c''). Dabei wird ein Fortschrittsbalken im Terminal ausgegeben (''-C0''). sudo su umount /dev/sdd1 fsck.ext4 -fc -C0 /dev/sdd1 Und für FAT formatierte Partitionen: fsck.vfat -w -r -l -a -v -t /dev/sdd1 === Kapazitäts-Check === Es kann immer mal vorkommen, dass ein USB-Stick nicht die angegebene Speicherkapazität hat die er laut Hersteller oer Verkäufer haben soll.\\ Um das herauszufinden gibt es die Tools ''f3read'' und ''f3write''.\\ sudo su apt-get install f3 f3write /media/testuser// Free space: 975.86 MB Creating file 1.h2w ... OK! Free space: 16.00 MB Average writing speed: 1.84 MB/s f3read /media/testuser// SECTORS ok/corrupted/changed/overwritten Validating file 1.h2w ... 1965792/ 0/ 0/ 0 Data OK: 959.86 MB (1965792 sectors) Data LOST: 0.00 Byte (0 sectors) Corrupted: 0.00 Byte (0 sectors) Slightly changed: 0.00 Byte (0 sectors) Overwritten: 0.00 Byte (0 sectors) Average reading speed: 10.81 MB/s === USB HDD - reset high speed USB device === Tritt der Fehler "reset high speed USB device using ehci_hcd and address yy" beim Schreiben auf eine per USB angeschlossene Festplatte (hier /dev/sda1) häufiger auf so hilft evtl. folgendes: echo 128 > /sys/block/sda/device/max_sectors Quelle: [[http://jolzer.blogspot.de/2009/12/usb-1-6-reset-high-speed-usb-device.html|http://jolzer.blogspot.de/2009/12/usb-1-6-reset-high-speed-usb-device.html]] === USB Speed === hwinfo --usb Eine praktische Methode die Übertragungsrate (nur Schreiben) eines USB-Sticks zu testen ist folgende: dd count=1000 bs=1M if=/dev/urandom of=/media/usb/test # oder dd if=/dev/zero of=/mnt/sda1/test bs=1M count=1k; rm /mnt/sda1/test Mit der o.a. Komandozeile werden 1000 * 1 Megabyte = 1GB Zufallsdaten aus dem Zufallszahlengenerator (/dev/urandom) in die Datei ...\test geschrieben.\\ Dabei ist **unbedingt** zu beachten dass ''dd'' ohne Rückfrage auf das angegebene Ziel (of = output file), hier ''of=/media/usb/'' schreibt. Wer sich hier vertippt oder einen anderen Fehler macht zerstört evtl. sein gesamtes System. **ALSO ERHÖHTE VORSICHT BEI DER VERWENDUNG VON ''dd''!!!**. Dafür beloht ''dd'' dann am Ende der Schreiboperatin mit der Ausgabe einer realen Transferrate ;-). ==== (gepacktes) Image einer SD-Karte erstellen ==== === Image erstellen === dd bs=4M if=/dev/sdd of=sd-card_backup.img === mit gzip gepacktes Image erstellen === dd bs=4M if=/dev/sdd | gzip > sd-card_backup.img.gz === gepackte Image auf SD-KArte zurückschreiben === cat sd-card_backup.img.gz | gunzip | dd bs=4M of=/dev/sdd ==== Dateien/Verzeichnisse packen/entpacken ==== Ein komplettes Verzeichnis als "*.tar.gz" packen: tar -zcvf FILENAME.tar.gz /Pfad/zum/Verzeichnis Ein komplettes Verzeichnis als "*.tar.gz" packen und Unterverzeichnisse ausschließen: tar --exclude='Verzeichnis/Unterverzeichnis_1' --exclude='Verzeichnis/Unterverzeichnis_2' -zcvf yyyymmdd_Dateinme.tar.gz Verzeichnis Ein komplettes Verzeichnis als "*.zip" packen: zip -r DATEINAME.zip QUELLORDNER Mit Datum/Uhrzeit im Dateinamen: TIMESTAMP=`date "+%Y%m%d_%H:%M"` && tar -zcvf $TIMESTAMPFILENAME.tar.gz /Pfad/zum/Verzeichnis TIMESTAMP=`date "+%Y%m%d_%H:%M"` && tar -zcvf $TIMESTAMP_rootfs.tar.gz /mnt/rootfs Eine Datei in selben Verzeichnis entpacken: tar xfz FILENAME.tar.gz Eine Datei in ein anderes Verzeichnis entpacken: tar xfz FILENAME.tar.gz -C /anderes/Verzeichnis/absolut # oder tar xfz FILENAME.tar.gz -C ../../anderes/Verzeichnis/relativ 7z-Dateien entpacken: sudo apt-get install p7zip-full 7z x PACKAGE.7z ==== Verzeichnisbaum kopieren ==== cd /PFAD/ZUR/QUELLE/ find . -depth -print | cpio -pdm /PFAR/ZUM/ZIEL/ ==== Mehrfaches umbenennen ==== for TMP in `ls`; do mv $TMP `echo $TMP| cut -d. -f1,3`; done ==== Dateien in einem Verzeichnisbaum zählen ==== find /PFAD/ZUM/VERZEICHNIS/ -type f | wc -l ==== Verzeichnisse in einem Verzeichnisbaum zählen ==== find /PFAD/ZUM/VERZEICHNIS/ -type d | wc -l ==== Dateien finden ==== Findet alle Dateien mit "DATEINAME" im Dateinamen, unabhängig von der Schreibweise find -iname <*DATEINAME*> Findet alle Dateien mit "DATEINAME" im Dateinamen und sucht nur darin das "WORT" find . -name <*DATEINAME*> -print0 | xargs -0 grep -iHR "WORT" ==== Zeichensatz einer (txt-) Datei herausfinden ==== file -i ==== Zeichensatz einer (txt-) Datei konvertieren ==== iconv -f ISO-8859-1 -t UTF-8 Input-file.txt -o Output-file.txt ==== Rekursiv Zeichensatz einer (txt-) Datei konvertieren ==== #!/bin/sh for file in ./*/*/*/info.vdr ; do echo "Bearbeite Datei: $file" iconv -f ISO-8859-1 -t UTF-8 "$file" -o "$file".tmp mv $TMP.tmp $TMP #fname=$(basename "$file") #echo "hat den Namen: $fname" #fdir=$(dirname "$file") #echo "und steht im Verzeichnis: $fdir" done ==== in Textdateien suchen ==== Grundsätzliche RegEx Metazeichen:\\ | Zeichen | Bedeutung/Funktion | | ''.'' | nur ein einzelnes Zeichen | | ''(..)'' | Gruppe von Elementen | | ..''|''.. | ODER-Verknüpfung | | ''[0-9A-F]'' | eigene Gruppe von Zeichen | | ''^'' | Invertierung (einer Zeichengruppe) | | ''\d'' | Ziffern, entspricht der Gruppe ''[0-9]'' | | ''\D'' | keine Ziffern, entspricht der Gruppe ''[^0-9]'' | | ''\w'' | alphanumerische Zeichen, entspricht der Gruppe ''[a-zA-Z0-9_]'' | | ''\W'' | keine alphanumerischen Zeichen, entspricht der Gruppe ''[^a-zA-Z0-9_]'' | | ''\s'' | Whitspace, z.B. Leerzeichen, Tab, Return | | ''\S'' | kein Whitspace | | ''?'' | kein Mal oder ein Mal | | ''*'' | kein Mal oder beliebig oft | | ''+'' | min. einmal | | ''{n,m} '' | min. n-mal, max. m-mal | | ''^'' | am Anfang | | ''$'' | am Ende | ==== Dateisynchronisierung mit rsync: ==== "Quellverzeichnis" wird unterhalb von "Zielverzeichnis" angelegt und der komplette Inhalt dort hin kopiert: rsync --progress --stats -a /PFAD/ZUM/QUELLVERZEICHNIS /PFAD/ZUM/ZIELVERZEICHNIS/ Nicht mehr vorhandene Daten im Zielverzeichnis löschen: rsync --progress --stats --delete -a /PFAD/ZUM/QUELLVERZEICHNIS /PFAD/ZUM/ZIELVERZEICHNIS/ Per Netzwerk auf einen anderen Rechner: rsync -a -v --delete --password-file/.rsync/secret /PFAD/ZUM/QUELLVERZEICHNIS rsync://HOST/ZIELVERZEICHNIS/ Auf einen Datenträger mit ''exFAT'' Formatierung, z.B. USB-Stick: rsync -rltDv --progress --stats --delete /PFAD/ZUM/QUELLVERZEICHNIS /PFAD/ZUM/ZIELVERZEICHNIS/ # oder rsync -rltDv --progress --stats --delete-before --delete-excluded --exclude="System Volume Information" --exclude="\$RECYCLE.BIN" /PFAD/ZUM/QUELLVERZEICHNIS /PFAD/ZUM/ZIELVERZEICHNIS/ # oder #TEMPLATE: rsync -rltDv --progress --stats --delete-before --delete-excluded --exclude="System Volume Information" --exclude="\$RECYCLE.BIN" --exclude="lost+found" --exclude=".Trash-1000" --exclude="\#recycle" /PFAD/ZUM/QUELLVERZEICHNIS /PFAD/ZUM/ZIELVERZEICHNIS/ ==== Webseiten spiegeln mit wget: ==== z.B. die Seiten des ''29C3'' wget --wait=2 --limit-rate=200K -r -p -U Mozilla --no-parent -c http://mirror.fem-net.de/CCC/29C3/ oder eine spezielle Seite innerhalb einer Homepage wget -p -m -k -K -E -np http:///innere/ebene/ === Stabile Version von fli4l herunter laden === wget -m -np http://download.fli4l.de/3.10.3/x86/ wget -m -np http://download.fli4l.de/3.10.3/x86_64/ oder besser mit: FLI4L_VERSION="3.10.x" wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://download.fli4l.de/${FLI4L_VERSION}/x86/ cd non_gpl wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://download.fli4l.de/${FLI4L_VERSION}/x86/non_gpl/ # oder wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://download.fli4l.de/${FLI4L_VERSION}/x86_64/ cd non_gpl wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://download.fli4l.de/${FLI4L_VERSION}/x86_64/non_gpl/ # # oder # FLI4L_VERSION="4.0" wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://tarball.fli4l.de/${FLI4L_VERSION}/testing/x86/ cd zusatzpakete wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://tarball.fli4l.de/${FLI4L_VERSION}/testing/x86/opt_db/ cd .. cd non_gpl wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://tarball.fli4l.de/${FLI4L_VERSION}/testing/x86/non_gpl # # oder # wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://tarball.fli4l.de/${FLI4L_VERSION}/testing/x86_64/ cd zusatzpakete wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://tarball.fli4l.de/${FLI4L_VERSION}/testing/x86_64/opt_db/ cd .. cd non_gpl wget -r -l1 -H -t1 -nd -N -np -erobots=off -A .gz http://tarball.fli4l.de/${FLI4L_VERSION}/testing/x86_64/non_gpl # # -r recursive # -l1 maximum recursion depth (1=use only this directory) # -H span hosts (visit other hosts in the recursion) # -t1 Number of retries # -nd Don't make new directories, put downloaded files in this one # -N turn on timestamping # -A .gz download only *.gz files # -erobots=off execute "robots.off" as if it were a part of .wgetrc ==== SSH ==== SSH-Key aus ''~/.ssh/known_hosts''-Datei entfernen ssh-keygen -R "hostname" # oder ssh-keygen -f ".ssh/known_hosts" -R Generierung eines neuen öffentlich/privaten Schlüsselpaares mit dem RSA Algorithmus (RSA ist der default) und einer "Stärke" von 4096 Bit: ssh-keygen -b 4096 -f .wg Kopieren des neu generierten **öffentlichen** Schlüssels auf das Zielsystem ssh-copy-id -i ~/.ssh/id_rsa.pub user@[hostname|IP] Bekommt man beim Versuch sich auf einem "frischen" Server per SSH einzuloggen eine Fehlermeldung wie diese hier: user@host:~$ ssh @123.123.123.123 The authenticity of host '123.123.123.123 (123.123.123.123)' can't be established. RSA key fingerprint is 55:b7:aa:9f:14:48:76:50:33:7c:41:11:ee:0c:fd:ef. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '123.123.123.123' (RSA) to the list of known hosts. Received disconnect from 123.123.123.123: 2: Too many authentication failures for user so funkt wahrscheinlich der ''gnome-keyring-daemon'' dazwischen. Folgendes schafft Abhilfe: user@host:~$ ps -AH | grep keyring 2223 ? 00:00:00 gnome-keyring-d sudo kill 2223 Jetzt ist ein Login per ssh möglich und der neue Key kann übertragen werden. === Dateien per SCP kopieren === Eine datei zum Host kopieren: scp Quelldatei.bsp Benutzer@Host:Verzeichnis/Zieldatei.bsp Eine Datei vom Host kopieren: scp Benutzer@Host:Verzeichnis/Quelldatei.bsp Zieldatei.bsp === Remote Desktop === Eine Remote Desktop Session zu einem Windows Rechner aufbauen: rdesktop -u -p -g -k de [HOSTAME.DOMAIN|IP] #z. B.: rdesktop -u hans -p wurst -g 1600x900 -k de [dellgx270.wg|192.168.100.26] ==== Netzwerk Einrichtung und Diagnose ==== Proxy fürdie Shell hinzufügen: echo "export http_proxy=http://:" >> ~.bashrc echo "export ftp_proxy=ftp://:" >> ~.bashrc Anzeige der im System befindlichen Netzwerkschnittstellen: cat /proc/net/dev DNS local eintragen: ''vi /etc/resolve.conf'' nameserver 192.168.100.1 DNS Manipulationen des ISP kann man mittels ''host'' oder ''dig'' erkennen. Beide liefern Infos über den Domain Name/Inhaber etc...\\ Geöffnete Ports des localen Rechners anzeigen: sudo netstat -tulpan oder ss state established '(dport =:imaps)' Wireshark Filterausdruck z.B. für Bilder ''"http.content_type matches "image/*""''\\ Ports scannen mit ''-A'' = Traceroute und ''-T4'' = schneller arbeiten :-) nmap -T4 -A 192.168.100.1-254 ... mit Vorgabe der Ports: namp -sV -p 22,80,443,587,25 192.168.100.1-254 === Datendurchsatzanalyse === Quelle: [[https://speedtest.wtnet.de/|https://speedtest.wtnet.de/]] iperf3 -c speedtest.wtnet.de -p 5200 -4 -R # -c = Client # -R = Reverse, also vom Server zum Client # -4 = IPv4 only === Netzwerkkonfiguration von LAN und WLAN === ^Funktion: ^ifconfig (alt) ^ip (neu) ^ |Adressen anzeigen |ifconfig eth0 |ip addr show eth0 | |Adresse setzen |ifconfig eth0 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255 |ip addr set 192.168.100.1/24 broadcast 192.168.100.255 dev eth0 | |Adresse löschen |-- |ip addr del 192.168.100.1/24 dev eth0| |Alias anlegen |ifconfig eth:1 192.168.100.1/24 |ip addr add 192.168.100.1/24 dev eth0 label eth0:1| |Schnittstelle aktivieren |ifconfig eth up |ip link set eth0 up| |Routen anzeigen |route [-6] |ip [-6] route | |Gateway setzen |route add default gw 192.168.100.1 |ip route add default via 192.168.100.1 dev eth0 | |ARP/NDP |arl -a |ip neigh | |Sockets anzeigen |netstat -tulpan |ss -tulpan| Der Parameter '-6' ist nur für IPv6 Adressen gültig. == Statistiken zu einem Interface == ip -s link Die Option ''-o'' gibt Angaben (Adressen, Schnittstellen und Routen) in einer Zeile aus und die Option ''-r'' mit DNS auflösung.\\ == Standard Netzwerkroute ändern == ip route replace default via 192.168.100.1 == Ping auf die Multicast Adresse ''ff02::1'' == ping6 -c 5 -I eth0 ff02::1 == Netzwerkkarte für "Wake on LAN" konfigurieren == pre-down /usr/sbin/ethtool -s eth0 wol g === WLAN === == Benachbarte WLANs anzeigen und nur 7 Zeilen der Infos zum jeweiligen Netz ausgeben == iwlist wlan0 scanning | grep -A 7 Cell == WPA Fehlerdiagnose und Status == sudo wpa_cli -i wlan0 status verbose DNS Manipulationen des ISP kann man mittels ''host'' oder ''dig'' erkennen. Beide liefern Infos über den Domain Name/Inhaber etc...\\ Geöffnete Ports des localen Rechners anzeigen: xxxx ===== sonstige nützliche Tools ===== ==== Cross compile classic "C" Program for ARM hf Architecture ==== arm-linux-gnueabihf-gcc-4.6 testrtc.c -o testrtc -static ==== Quellcode Patch ... ==== === ... für eine Datei erstellen === diff -u OriginalFile UpdatedFile > PatchFile === ... auf eine Datei anwenden === patch OriginalFile < PatchFile === ... für ein Verzeichnis (rekursiv) erstellen === diff -ruN OriginalDir UpdatedDir > PatchFile === ... auf ein Verzeichnis (rekursiv) anwenden === patch -p0 < PatchFile ==== Passworte erzeugen ==== Ohne Sonderzeichen: apg -m 15 -n 1 oder besser mit Sonderzeichen: apg -M SNC -m 15 -n 1 ==== Garmin GPS12: ==== === Vorraussetzung - die richtige Gruppenzugehörigkeit === Damit man als normaler Benutzer auf eine serielle Schnittstelle (hier z.B. /dev/ttyUSB0) zugreifen darf, muss man Mitglied in der Gruppe ''dialout'' sein. Unter Ubuntu 10.04 lässt sich die Gruppenzugehörigkeit über "System" -> "Systemverwaltung" -> "Benutzer und Gruppen" -> "Gruppen verwalten" -> "dialout" -> "Eigenschaften" einsehen. Evtl. fehlende Haken vor den Benutzern setzten. Damit die neue Gruppenzugehörigkeit wirksam wird muss sich der entsprechende Benutzer anschliessend erneut am System anmelden. === USB-Seriell-Adapter verwenden === - USB-Seriell-Adapter anschliessen - Terminal Fenster öffnen und den Gerätenamen des neuen, seriellen Anschlusses ermitteln: dmesg | grep -i "attached to ttyUSB" Dabei ist die letzte Zeile entscheidend. Sie gibt an, unter welchem Namen die neue serielle Schnittstelle angesprochen werden kann. In diesem Beispiel hier ''/dev/ttyUSB0''\\ Parallel kann man über "System" -> "Systemverwaltung -> "Systemprotokoll" einsehen was der Kernel beim Anstecken des Seriell-USB-Adapters meldet. In diesem Fall z.B. folgendes: ... usb 3-1: new full speed USB device using uhci_hcd and address 7 ... usb 3-1: configuration #1 chosen from 1 choice ... pl2303 3-1:1.0: pl2303 converter detected ... usb 3-1: pl2303 converter now attached to ttyUSB0 Der angesteckte Adapter verwendet einen Controller Chip vom Typ ''pl2303'' des Herstellers ''Prolific''. Dieser wird von Kernel unterstützt und ist als serieller Anschluss unter ''/dev/ttyUSB0'' eingerichtet worden.\\ - Garmin GPS12 anschliessen und die Schnittstelle des Garmin auf NMEA / NMEA (9600 Baud) einstellen. - Serielle Schnittstelle am PC für einen ersten Test konfigurieren: stty -F /dev/ttyUSB0 9600 stty -F /dev/ttyUSB0 raw - Test der Datenübertragung zum PC: cat /dev/ttyUSB0 Sobald der Garmin GPS12 Daten liefert erfolgt eine fortlaufende Ausgabe die ungefähr so aussieht: ... $PGRMM,WGS 84*06 $GPBOD,,T,,M,,*47 $GPRTE,1,1,c,0*07 $GPRMC,065558,A,5210.243,N,00958.310,E,000.0,360.0,041012,000.9,E*72 $GPRMB,A,,,,,,,,,,,,V*71 $GPGGA,065558,5210.243,N,00958.310,E,1,05,2.4,110.1,M,46.5,M,,*49 $GPGSA,A,3,02,,09,,,,,25,27,29,,,4.2,2.4,3.4*37 $GPGSV,3,1,12,02,20,116,42,04,23,071,00,09,42,135,44,12,85,340,32*7B $GPGSV,3,2,12,14,42,283,00,17,06,040,00,20,00,008,00,25,47,265,30*79 $GPGSV,3,3,12,27,35,136,45,29,15,202,46,31,02,305,00,32,05,341,00*75 $PGRME,9.5,M,13.1,M,16.2,M*24 $GPGLL,5210.243,N,00958.310,E,065559,A*25 $PGRMZ,361,f,3*1F ... Abbrechen kann man die Ausgabe mit der Tastenkombination ''STRG + C''.\\ Der Seriell-USB-Adapter kann nun per ''/dev/ttyUSB0'' verwendet werden. === Download Garmin GPS12 Data === Tracks sichern: gpsbabel -t -i garmin -f /dev/ttyUSB0 -o kml -F test.kml gpsbabel -t -i garmin -f /dev/ttyUSB0 -x track,merge -o kml -F test.kml Wegpunkte sichern: gpsbabel -i garmin -f /dev/ttyUSB0 -o gpx -F === Upload GPX Daten zum Garmin GPS12 === gpsbabel -i gpx -f -o garmin -F /dev/ttyUSB0 ==== Temperatur-Feuchte-Datenlogger TFD 128 ==== Ein sehr praktischer kleiner Helfer ist der Temperatur-Feuchte-Datenlogger TFD 128 von [[http://www.elv.de/temperatur-feuchte-datenlogger-tfd-128-komplettbausatz.html|ELV]].\\ Wer kein MS Windows zur Installation der mitgelieferten Software zur Hand hat kann alternativ ein in Python geschriebenes CLI Tool verwenden. Das läßt sich, zumindest unter Linux, wunderbar scripten. Zu finden hier: [[http://projects.nesrada.de/tfd128/|Programming the TFD 128]]\\ Wer doch MS Windows lieber mag findet hier einen Ersatz für die mitgelieferte Software: [[http://vd-software.inside1.net/TFD128/|Temperatur-/Feuchte-Datenlogger TFD-128 - alternative Software für Win32/Win64]].\\ Eine gute Informationsquelle ist auch [[http://www.netzmafia.de/skripten/hardware/TFD128/|http://www.netzmafia.de/skripten/hardware/TFD128/]]\\ ./tfd128 --start --interval 5 --mode th # Aufzeichnung starten, Intervall: 5 Min., Temp & Feuchte ./tfd128 --stop # Aufzeichnung stoppen ./tfd128 --dump-values --output data.txt --data-fmt="%d\t%t\t%h" # Logger auslesen ==== Multimedia ==== Notwendige Pakete: vlc, mplayer, w32codecs, lame, sox, ffmpeg, libdvdcss2, streamripper, eyeD3 sudo apt-get install vlc mplayer w32codecs lame sox ffmpeg libdvdcss2 eyeD3 === Audio === Eine ''3gp'' Audiodatei ins ''mp3''-Format umwandeln: ffmpeg -i INPUTFILE.3gp -acodec libmp3lame OUTPUTFILE.mp3 Mehrere WAV-Dateien in einem Verzeichnis in das MP3 Format mit 256kBit/s wandeln: for f in *.wav ; do ffmpeg -i "$f" -acodec libmp3lame -ab 256k "${f%.*}.mp3"; done Mehrere MP3-Dateien zu einer Datei zusammenfügen ffmpeg -i "concat:01.mp3|02.mp3|03.mp3|04.mp3|05.mp3|06.mp3|07.mp3|08.mp3|09.mp3|10.mp3|11.mp3|12.mp3|13.mp3|14.mp3|15.mp3|16.mp3|17.mp3|18.mp3|19.mp3|20.mp3" -acodec copy output.mp3 Ein Cover-Bild einer MP3-Datei hinzufügen: eyeD3 --add-image="cover.jpg":FRONT_COVER "file.mp3" === Audio streaming === z.B. NDR Info eine Stunde lang (-l 3600 Sekunden) aufzeichnen (output: -a FILENAME) streamripper http://ndrstream.ic.llnwd.net/stream/ndrstream_ndrinfo_hi_mp3 -a FILENAME.mp3 -l 3600 oder NDR Kultur eine Stunde lang (-l 3600 Sekunden) aufzeichnen (output: -a FILENAME) streamripper http://ndrstream.ic.llnwd.net/stream/ndrstream_ndrkultur_hi_mp3 -a FILENAME.mp3 -l 3600 === Video streaming === * [[https://ytdl-org.github.io/youtube-dl/index.html|https://ytdl-org.github.io/youtube-dl/index.html]] Youtube-DL: youtube-dl -F # Listet verfügbare Formate auf Audio eines Youtube Videos archivieren: youtube-dl --extract-audio --audio-format mp3 Playlist herunterladen: while read $f do; curl -s $f >> video.ts done < playlist.m3u8 Streams speichern - Artikel im [[http://wiki.ubuntuusers.de/Streams_speichern|Ubuntuusers Wiki]]\\ RealPlayer Datei ''*.rm'' Herunterladen und Speichern: mplayer -noframedrop -dumpfile -dumpstream rtsp://url/to/file.rm Dump MMS Stream with Mplayer mplayer -dumpstream -dumpfile stream_video_name.wmv mms:// oder mplayer mms:/link/something.xxx -dumpstream -dumpfile file.xxx mplayer -dumpstream -dumpfile ".rm" "" vlc -v rtsp://SOURCE_IP:554/ipcam.sdp --sout file/ts:FILENAME.ts === Video (re)encoding === Infos zu diesem Thema habe ich [[videobearbeitung|hier]] abgelegt.\\ ==== Bildbearbeitung ==== Verkleinere alle Fotos im aktuellen Ordner auf 50% der ursprünglichen Größe mit Hilfe des Tools ''imagemagick'' und füge ein ''-klein'' dem Dateinamen hinzu: for i in *.JPG; do convert $i -resize 50% $(basename $i .JPG)-klein.jpg; done Verkleinere alle Fotos im aktuellen Ordner auf 600x400 Pixel der ursprünglichen Größe: for i in *.JPG; do convert $i -resize 600x400 $(basename $i .JPG)-klein.jpg; done ==== Textbearbeitung ==== [[http://sed.sourceforge.net/sed1line_de.html|deutsche ''sed'' Beispiele]] oder [[http://sed.sourceforge.net/sed1line.txt|die englischen ;-)]], unter anderem diese: Ersetze (Suchen und Ersetzen) "foo" mit "bar" in jeder Zeile sed 's/foo/bar/' # Ersetzt nur das 1. Vorkommen pro Zeile sed 's/foo/bar/4' # Ersetzt nur das 4. Vorkommen pro Zeile sed 's/foo/bar/g' # Ersetzt ALLE Vorkommen von "foo" mit "bar" Ersetze "foo" mit "bar" NUR in Zeilen die "bla" enthalten sed '/bla/s/foo/bar/g' Ersetze "foo" mit "bar" AUSSER in Zeilen die "baz" enthalten sed '/baz/!s/foo/bar/g' Lösche Zeilen die die Regex ''pattern'' erfüllen sed '/pattern/d' #!/bin/sh echo "Hallo Welt" Nicht vergessen ''myexample.sh'' mit ''chmod +x myexample.sh'' auch ausführbar zu machen ;-) ==== PDF-Dokumente komprimieren ==== sudo apt install Ghostscript gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.6 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=[compressed.pdf] "[input.pdf]"