Diverse Linux Befehle

Aus Laub-Home Wiki

Iso Image unter Linux mounten

Zuerst den Mount Point anlegen und dann mit Hilfe des Loop Device einbinden.

mkdir /mnt/cdrom
mount -o loop -t iso9660  /tmp/cdimage.ISO /mnt/cdrom/

Nun ist das Image unter /mnt/cdrom verfügbar

Squashfs unter Linux mounten / entpacken

Zuerst den Mount Point anlegen und dann mit Hilfe des Loop Device einbinden.

mkdir /mnt/squashfs
mount -o loop -t squashfs  /tmp/filesystem.squashfs /mnt/squashfs/

Nun ist das Filesystem unter /mnt/squashfs verfügbar

Man kann das filesystem aber auch mittels folgendem Befehl entpacken:

squashfs filesystem.squashfs

Bonnie++ - Festplatten Benchmark

Bonnie++ ist das Tool wenn es unter Linux um Festplatten Benchmarking geht. Hier kurz die ERläuterung des untenstehenden Befehls:

  • -u root : damit wird der Benchmark als User Root ausgeführt
  • -d /root/ : die Tests testen diesen Mountpoint
  • -s 2000 : Dateigröße in MB, muss mehr als die Ramgröße sein
  • -n 500 : Anzahl der Dateien für den Dateierstellungs Test
  • -r 256 : RAM Größe in megabytes
  • -m PCName : Beschreibung des Benchmarks (z.B.: Rechnername)
  • -x3 : Benchmark läuft 3x und gibt die ERgebnisse im CSV Format aus.
  • >> /root/bonnie.log : Lässt die Ergebnisse in ein Logfile zu weiteren Verarbeitung fließen.
bonnie++ -u root -d /root/ -s 2000 -n 500 -r 256 -m PCName -x3 >> /root/bonnie.log

Hier wird das geschriebene Logfile in eine HTML Tabelle konvertiert.

cat bonnie.log | bon_csv2html > bonnie.html

Iperf - Netzwerkbenchmark

Iperf Testet die TCP/UDP Übertragungsrate einer Netzerkverbindung. Dafür muss auf einem Rechner Iperf als "Server" betrieben werden:

iperf -s

Und dann von einem anderen Rechner aus der Test durchgeführt werden:

iperf -c serverIP -P 4

Bester Test:

iperf -c serverIP -P2 -w 512k -l 512k

Mehr Infos:

iperf --help

TCPTraceroute - Traceroute auf Port Ebene

Kann in Debian Linux mit diesem Befehl nachinstalliert werden:

aptitude install tcptraceroute

So wird das Programm benutzt:

tcptraceroute laub-home.de 80

Postfix Datenbank Dateien erzeugen

Postfix hat manche Dateien als .db abliegen, zum Beispiel die tarnsport.db Datei. Will man Änderungen der Transport Datei machen, werden diese in der Datei /etc/postfix/transport gemacht und diese Datei dann mit postmap als .db File abgespeichert.

postmap /etc/postfix/transport
ls -l /etc/postfix/
-rw-r--r-- 1 root root 12204 19. Jan 12:58 transport
-rw-r--r-- 1 root root 12288 19. Jan 12:59 transport.db

E-Mails aus der Mailq (Postfix) löschen

Mit folgenden Befehlen kann man E-Mails aus der mailq löschen. Zuerst sollte man sich aber einen Überblick über die vorhandenen Mails in der Queue machen:

mailq

ggf. auch mit "| less" zum scrollen verbinden Nun können einzelne Mails anhand ihrer Message-ID gelöscht werden:

postsuper -d Message-ID -d Message-ID

oder aber einfach die gesamte Queue geleert werden:

postsuper -d ALL

E-Mails der Mailq lesen

Mit folgendem Befehl ist es möglich Mails, die sich in der Mailq befinden zu lesen. als erstes benötigt man die Queue ID:

mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
9AA5C817        503 Tue Sep 27 11:28:39  root@xxxx .............

dann einfach mittels postcat lesen:

postcat -q QUEUEID
postcat -q 9AA5C817


rm - Dateien die mit einem "-" beginnen löschen

ab und zu kommt es vor das Dateinamen mit einem "-" beginnen, dann meckert rm beim Aufruf das er den Schalter nicht kennt. Dieses Problem kann man mit einem "--" vor dem Dateinamen umgehen. z.B:

rm -- -filename.txt

Super User Dateisystem-Reservierung löschen

Wenn man sich df -h mal genauer anschaut, wird man merken das Used + Avail ungleich der Size ist. Wo ist denn der Rest? Ganz einfach, Linux reserviert Speicherplatz für den Superuser, damit beim Vollaufen einer Festplatte noch Speicherplatz für Logdateien ist, damit Dienste weiterlaufen. Mit diesem Befehl kann man diese Reservierung deaktivieren oder Reduzieren (Zahlenangabe ist in Prozent von Verfügbaren Platz also entspricht -m3 3% Reservierung vom Verfügbaren Platz.):
Achtung: Ist nur auf reinen Datenplatten empfehlenswert. Bei anderen Platten bietet sich eine Reduzierung an (also z.B.: -m3)

Bei LVM Volumes:

tune2fs -m0 /dev/mapper/VG01-daten

Bei normalen Partitionen:

tune2fs -m0 /dev/sda1

Debian/Ubuntu Konfigurationsdaten nachträglich löschen

löscht die Konfigurationsdaten von bereits deinstallierten Paketen.

aptitude purge '~c'

Alternativ, falls aptitude nicht installiert ist:

dpkg -l | grep '^rc' | awk '{print $2}' | xargs dpkg --purge

Debian/Ubuntu Obsolete Pakete suchen bzw. löschen

aptitude search ~o
aptitude remove '~o'

Nach broken Links suchen und diese löschen

Hiermit kann man im aktuellen Verzeichnis nach Links suchen die nicht mehr funktionieren:

find . -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done)

gelöscht werden sie dann mit:

find . -type l | (while read FN ; do test -e "$FN" || rm -f "$FN"; done)

Freien Festplatten Platz mit Nullen vollschreiben

dd if=/dev/zero of=/root/null

Ausgabe einer Konfigurationsdatei ohne Kommentarzeilen mittels grep

grep ^[^#] DATEINAME

Mehrere Strings an grep übergeben

Will man an grep nicht nur einen String, bzw. Argument übergeben, dann hilft einem die oder-Verknüpfung mittels \|

# gibt ARG1 bis 3 aus
grep 'ARG1\|ARG2\|ARG3'

# gibt ARG1 bis 3 nicht aus
grep -v 'ARG1\|ARG2\|ARG3'

Mail versenden von der Konsole

So kann man E-Mails von der Konsole verschicken:

mail -s "Betreff" root

Nun den gewünschten Inhalt schreiben und mit STRG-D versenden.

MySQL User Root volle Rechte von überall

Wenn man sich zum Beispiel von einem PHPMyadmin auf beliebige MySQL Server verbinden will, muss man dem Benutzer root volle Rechte geben, dies geschieht im mysql mit folgendem Befehl:

mysql -u root -p

und dann im MySQL:

grant all on *.* to 'root'@'%' identified by 'password' with grant option;

Aptitude andere Versionen eines Paketes anzeigen bzw. installieren

Will man zum Beispiel auf eine ältere Version eines Paketes zurück, kann man sich als erstes alle verfügbaren Versionen anzeigen lassen:

aptitude update
aptitude show samba -vv

zum installieren einer anderen Version, dann einfach mit der Versions Nummer installieren:

aptitude install samba=3.2.5-4lenny13

snmpwalk

snmpwalk -v 2c -c COMMUNITY localhost .1

Tar Pipe

Wenn man von einem System auf ein anderes Dateien übertragen will und dies über ein 3tes System anstoßen muss, da die Systeme nicht direkt miteinander kommunizieren können, kann dies mit folgender Tar Pipe gemacht werden.

ssh -C system1 "cd /path/to/file; tar -cf - filename" | ssh -C system2 "cd /path/to/file; tar -xf -"

Dieser Befehl kopiert kopiert die Datei filename vom Pfad /path/to/file vom Rechner system1 nach system2 in den Pfad /path/to/file.
Mit SCP würde dies auch funktionieren, wenn die Systeme untereinander kommunizieren können. SCP macht den Datentransfer direkt zwischen den beiden Systemen. Dafür wäre folgender Befehl benutzbar:

scp system1:/path/to/file/filename system2:/path/to/file

nur bestimmte Dateien mit tar entpacken

Will man eine bestimmte Datei oder einen bestimmten Ordner aus einem Tar Archive entpacken kann das wie folgt gemacht werden:

tar -xzvf archive.tar.gz Ordner/unterordner/datei.txt
tar -xzvf archive.tar.gz Ordner/unterordner/

Domains in Apache Konfigs zählen

mit folgendem Befehl kann man Domains in Apache Konfigurationen zählen:

egrep -h "ServerAlias|ServerName" /etc/httpd/conf/*.conf | egrep -v "^#|212.21.187|agroasp" | cut -f 5- -d " " | wc -w

Datei/Ordner-Größen nach Megabyte Sortieren

Will man wissen was in einem Ordner alles wieviel Platz verbraucht, dann helfen folgende Befehle weiter:
Inhalt des aktuellen Ordners in Megabyte auswerten und nach Größe von klein nach groß sortieren

du -scm * | sort -n

Inhalt des aktuellen Ordners in Megabyte auswerten und nach Größe von groß nach klein sortieren

du -scm * | sort -nr

und das ganze mit Kilobytes:

du -sck * | sort -n
du -sck * | sort -nr

Reboot mit FSCK Filesystemcheck

Will man den Rechner auf Dateisystemfehler beim Systemstart prüfen lasse, dann kommt folgender Befehl zum Einsatz:

shutdown -rF now

Unter Ubuntu (wegen Upstart)

touch /forcefsck

Bei beiden Methoden muss in der /etc/fstab unter <pass> eine "1" für das Boot Filesystem und eine "2" für alle anderen Dateisysteme die gescannt werden sollen eingetragen werden.

Filesystem Check forcen

Will man das ein Filesystem geprüft wird, obwohl es ohne Fehler ausgehängt wurde, kann dies durch den folgenden Befehl durchgeführt werden:

fsck.ext4 -f /dev/sda1

ServerNames und ServerAliases im DNS Auflösen

Hier ein kleiner Einzeiler, mit dem man alle Servernames oder Serveraliase einer HTTPd Konfiguration, zur IP Adresse auflösen kann.

cd /etc/apache2/sites-enabled/
for i in $(egrep -i "servername|serveralias" * | awk '{ print $3 }'); do echo "Name: $i"; nslookup $i; done

mit netstat Port zu Prozess herausfinden

will man wissen welcher Prozess zu einem offenen Port gehört kann man dies mit folgendem Netstat-Aufruf machen, hier wird nur nach Port 143 gefiltert.

netstat -lnp | grep 143

dies zeigt die komplette Liste an

netstat -lnp

Festplatten UUID auslesen

Will man in der /etc/fstab mit UUID arbeiten, muss man diese vorher für die einzelne Partition auslesen, dies geschieht mit folgendem Befehl:

blkid /dev/sdb1

oder mit tune2fs

tune2fs -l /dev/sda1
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          cd4274af-7ae4-4744-94cc-af69a812e431

Standard Gateway auslesen

Will man in einem Shellskript das Standardgateway auslesen und zum Beispiel eine Variable damit füllen, kann das durch die folgenden Befehle geschehen.

ip r | grep default | cut -d ' '  -f 3

oder

ip r | grep default | awk '{print $3}'

oder

route | grep default | awk '{print $2}'

"Telnet" auf SSL vhost

will man via "telnet" auf einen https Webserver vhost machen, wird man schnell merken das dies nicht funktioniert. Am besten verbindet man sich mit folgendem Befehl:

openssl s_client -connect wiki.laub-home.de:443
GET / HTTP/1.1
Host: wiki.laub-home.de

IP Adresse via iptables sperren

iptables -A INPUT -s <IP-ADRESSE> -j DROP

-A INPUT: hängt die Regeln an die INPUT Chain an
-s : ist die zu bannende IP Adresse
-j DROP: gibt die Aktion an, die ausgeführt werden soll, wenn die Regel greift. In diesem Fall DROP (verwerfen)
oder besser noch:

iptables --insert INPUT <POSITION> -s <IP-ADRESSE> -j DROP

Fügt die Regel an der gewünschten Stelle ein.

iptables alle NAT Regeln anzeigen

iptables -t nat -L --line-numbers -n

Hohe CPU-Last generieren

Wenn man auf einem Linux-System eine hohe CPU-Last generieren will (z.B. zum testen von Monitoring), dann kann dies mit diesem Befehl gemacht werden:

top -d 0

Dieser ruft top auf und greift die Systemwerte so schnell wie möglich ab. Dies ist effektiver, wenn das SSH-Fenster möglichst klein ist, da dann der Bildschirm nicht immer ganz aufgebaut werden muss.

Oder man installiert das Tool stress

apt update && apt install stress
stress --cpu 4

Anzeigen der inodes

Mit folgendem Befehl kann man sich die Anzahl der inodes anzeigen lassen, welche im momentanen Verzeichnis verwendet werden (kann je nach Größe des Systems etwas länger dauern):

find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

Dies ist u.a. dann nützlich, wenn man noch sehr viel Speicherplatz frei hat, aber einem die inodes ausgehen.

Ip Adresse auslesen

Hier ein kurzer Befehl der einem die IP ausgibt, die eth0 hat:

ifconfig eth0 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1

Virtualisierung/Hypervisor Erkennen

Will man wissen auf welchem Hypervisor eine VM läuft hilft folgender Befehl:

systemd-detect-virt

Öffentliche IP anzeigen

Möchte man wissen unter welcher öffentlichen IP Adresse man online ist, geht das mit Hilfe des folgenden Befehls:

curl ifconfig.me

Warten bis Webseite Online ist

Möchte man zum Beispiel einen Befehl ausführen nachdem eine Webseite verfügbar ist, dann kann man das mit der until Schleife tun:

until curl --fail -s http://yourwebsite; do sleep 1; done && echo "Website is online"

Schreibzugriffe auslesen

mit dem kleinen Tool iotop, ist es Möglich auf einem Laufenden System zu schauen, was alles auf die Festplatte oder SD Karte schreibt. Dafür einfach das Tool installieren und mit diesem Befehl starten:

iotop -oPak