Benutzer-Werkzeuge

Webseiten-Werkzeuge


nuetzliche_linux-werkzeuge

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
nuetzliche_linux-werkzeuge [2025-06-09 10:58:26] – [socat (nc-Nachfolger)] manfrednuetzliche_linux-werkzeuge [2026-02-10 01:39:59] (aktuell) – [dm_crypt-0] manfred
Zeile 1: Zeile 1:
 +====== nützliche Linux-Werkzeuge ======
 +
 +siehe auch: [[::Terminaleinstellungen]]
 +
 +[[https://youtu.be/OlQMXu4yCGk|GPN18 - Moderne Kommandozeilen Werkzeuge]]
 +...seine Favoriten:
 +  * ''[[tmux]]'' //(Alternative zu ''[[screen]]'')//
 +  * ''zsh'' (inkl. oh-my-zsh) + fzf //(Alternative zu ''[[bash]]'')//
 +  * ''ranger'' //(Alternative zu ''mc'')//
 +
 +
 +===== man =====
 +
 +  To obtain a neat PostScript rendering of a manual page, use ''-t'' switch
 +  of the man(1) utility: ''man -t <topic>'' For example:
 +  
 +          man -t grep > grep.ps   # Save the PostScript version to a file
 +  or
 +          man -t printf | lp      # Send the PostScript directly to printer
 +
 +
 +===== top =====
 +
 +In //top// gibt es drei wichtige Schalter:
 +  - **h** -> //Hilfe//: hier wird eine Kurzanleitung zur Bedinung angezeigt
 +  - **o** -> //Order//: hiermit kann man dann die Reihenfolge der Felder festlegen
 +  - **f** -> //Field//: hiermit kann man festlegen, nach welcher Spalte sortiert die Tabelle angezeigt werden soll
 +    * es ist aber auch möglich, hiermit zusätzliche Spalten zu aktivieren, indem man sie einfach als //Sortierspalte// auswählt; nachher kann man dann wieder eine andere //Sortierspalte// festlegen ohne das die neue Spalte verschwindet
 +
 +man kann die anzuzeigenden Spalten aber auch über eine Konfigurationsdatei festlegen:
 +  > echo "ABEHIOQTWKNMcdfgjplrsuvyzX" > /etc/toprc
 +  oder
 +  > echo "ABEHIOQTWKNMcdfgjplrsuvyzX" > ~/.toprc
 +
 +Die Buchstabenfolge, kann aus der ersten Zeile der Anzeige von "**o**" oder "**f**" nehmen.\\
 +Indem man kleingeschriebene Buchstaben in Grußbuchstaben umwandelt, aktiviert man sichtbare Spalten.
 +Die Reihenfolge der Buchstaben legt die Reihenfolge der Spalten in der Tabelle fest.
 +
 +    m: TIME+      = CPU Time, hundredths
 +    f: GROUP      = Group Name
 +    c: RUSER      = Real user name
 +  * A: PID        = Process Id
 +  * B: PPID       = Parent Process Pid
 +  * K: %CPU       = CPU usage
 +  * H: PR         = Priority
 +  * I: NI         = Nice value
 +  * P: SWAP       = Swapped size (kb)
 +  * Q: RES        = Resident size (kb)
 +  * L: TIME       = CPU Time
 +  * R: CODE       = Code size (kb)
 +  * O: VIRT       = Virtual Image (kb)
 +    d: UID        = User Id
 +    e: USER       = User Name
 +    n: %MEM       = Memory usage (RES)
 +    g: TTY        = Controlling Tty
 +    u: nFLT       = Page Fault count
 +    t: SHR        = Shared Mem size (kb)
 +    s: DATA       = Data+Stack size (kb)
 +    v: nDRT       = Dirty Pages count
 +    y: WCHAN      = Sleeping in Function
 +    w: S          = Process Status
 +    j: P          = Last used cpu (SMP)
 +    z: Flags      = Task Flags <sched.h>
 +  * X: COMMAND    = Command name/line
 +
 +
 +===== netstat / ss =====
 +
 +Alt:
 +  > netstat -anp tcp
 +  > netstat -anf inet
 +  > netstat -Lanf inet
 +
 +Neu:
 +  > ss -anp tcp
 +  > ss -anf inet
 +  > ss -Lanf inet
 +
 +
 +===== netcat (nc) =====
 +
 +Verbindungstest (hier zu einen MySQL-Server):
 +  > nc 10.11.12.13 3306 -v
 +  Connection to 10.11.12.13 3306 port [tcp/mysql] succeeded!
 +
 +
 +===== socat (Nachfolger von netcat) =====
 +
 +<code bash 1. socat-Empfänger auf "host02" starten>
 +root@host02:~# socat - TCP-LISTEN:12345
 +</code>
 +
 +<code bash 2. socat-Sender auf "host01" starten>
 +root@host01:~# echo "Hallo Welt!" | socat - TCP:host02:12345
 +</code>
 +
 +<code bash 3. Daten werden auf "host02" empfangen>
 +root@host02:~# socat - TCP-LISTEN:12345
 +Hallo Welt!
 +root@host02:~# 
 +</code>
 +
 +
 +===== screen =====
 +
 +Will man einen Prozess auf einenen entfernten Rechner starten, dann kann es zu Verbindungsabbrüchen kommen.
 +In soeinem Fall würde der Prozess in aller Regel auch sterben.
 +
 +Um das zu vermeiden kann man den Prozess auch mit dem vorangestellten Befehl "nohup" starten.
 +Allerdings kann man nach einem Verbindungsabbruch nicht wieder auf die Konsole zurück.
 +
 +Deshalb wurde das nützliche Werkzeug "screen" geschrieben.
 +
 +Mit screen öffnet man einen Schirm (screen), in dem dann die Befehle, Scripte und Prozesse gestartet werden, die auch durch einem Verbindungsabbruch nicht gestört werden sollen:
 +  screen
 +
 +Mit der Tastenkombination "[Strg]+[A]+[D]" klinkt man sich aus dem Screen aus und alles was darin gestartet wurde, läuft weiter.
 +
 +Und so kommt man wieder zu seinem Screen zurück:
 +  screen -r
 +
 +Wurden auf einer Maschine ''screen'' mehrfach gestartet, dann bekommt man solche Meldungen:
 +  screen -r
 +    There are several suitable screens on:
 +            14758.pts-2.fritz (12.03.2010 14:44:30)   (Detached)
 +            14730.pts-2.fritz (12.03.2010 14:44:25)   (Detached)
 +    Type "screen [-d] -r [pid.]tty.host" to resume one of them.
 +
 +In soeinem Fall muss man screen sagen welchen Schirm er wieder aufspannen soll:
 +  screen -r 14758.pts-2.fritz
 +
 +Ein Screen beendet man genauso wie eine normale Shell:
 +  exit
 +oder
 +  [Strg]+[D]
 +
 +
 +===== Hard Links =====
 +
 +so werden alle Hard Links angezeigt, die sich im Verzeichnis ''/mnt'' befinden:
 +  > find /mnt/ -links +1
 +
 +so werden alle Dateinamen angezeigt, die keine Hard Links besitzen:
 +  > find /mnt/ -links 1
 +
 +
 +===== iptables =====
 +
 +IPTables-Regeln in Fedora/RHEL/CentOS:
 +
 +  /etc/init.d/iptables save
 +  /etc/init.d/iptables stop
 +  
 +  vi /etc/sysconfig/iptables
 +  /etc/init.d/iptables start
 +
 +
 +==== Firewall-Regeln ====
 +
 +  iptables -L
 +
 +
 +==== Tabellen ====
 +
 +built-in chains (INPUT, FORWARD, OUTPUT)
 +
 +  iptables -L -t filter
 +
 +NAT/Umleitung
 +
 +  iptables -L -t nat
 +              (PREROUTING, OUTPUT und POSTROUTING)
 +
 +specialized packet alteration
 +
 +  iptables -L -t mangle
 +              (PREROUTING, OUTPUT, INPUT, FORWARD und POSTROUTING)
 +
 +exemptions (PREROUTING und OUTPUT)
 +
 +  iptables -L -t raw
 +
 +
 +==== IP-/Port-Umleitung (Portumleitung) ====
 +
 +  ....
 +  -A PREROUTING -d 217.11.195.209 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 9443
 +  ....
 +
 +
 +==== Beispiel ====
 +
 +  # Firewall configuration written by system-config-securitylevel
 +  # Manual customization of this file is not recommended.
 +  *filter
 +  :INPUT ACCEPT [0:0]
 +  :FORWARD ACCEPT [0:0]
 +  :OUTPUT ACCEPT [0:0]
 +  :RH-Firewall-1-INPUT - [0:0]
 +  -A INPUT -j RH-Firewall-1-INPUT
 +  -A FORWARD -j RH-Firewall-1-INPUT
 +  -A RH-Firewall-1-INPUT -i lo -j ACCEPT
 +  -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
 +  -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 +  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
 +  COMMIT
 +
 +
 +===== hdparm =====
 +
 +Infos anzeigen:
 +  > hdparm -Ii /dev/hda
 +
 +gepufferter Lese-Geschwindigkeits-Tests:
 +  > hdparm -Tt /dev/hda
 +
 +ungepufferter Lese-Geschwindigkeits-Tests:
 +  > hdparm -Tt --direct /dev/hda
 +
 +Partitionstabelle neu einlesen:
 +  > hdparm -z /dev/hda
 +
 +
 +===== openssl =====
 +
 +  > openssl s_client -connect www.heise.de:https
 +
 +siehe auch:
 +  * [[::EDV:SSL-Schlüssel generieren]]
 +  * [[einzelne Dateien mit openSSL verschlüsseln]]
 +
 +
 +===== curl und lynx =====
 +
 +Aufruf einer URL, bei der man sich per NTLM (Windows) authentifizieren muss; leider können ''wget'' und ''links'' kein "ntlm", deshalb müssen wir hierfür ''curl'' verwenden;
 +weil ''curl'' immer den Quellkode zurückgibt, müssen wir den Quellkode noch von ''lynx'' in eine menschlich lesbaren Ausgabe umwandeln lassen:
 +  > curl --ntlm -u username:passwort --noproxy webserver.net -S https://webserver.net/webseite 2>/dev/null | lynx -stdin -dump -width=120
 +
 +
 +===== dm_crypt-0 =====
 +
 +<code text>
 +> apt update
 +> apt -y full-upgrade
 +...
 +Trigger für initramfs-tools (0.142ubuntu25.8) werden verarbeitet ...
 +update-initramfs: Generating /boot/initrd.img-6.17.0-14-generic
 +cryptsetup: WARNING: dm_crypt-0: couldn't determine device type, assuming 
 +    default (plain).
 +cryptsetup: WARNING: Option 'cipher' missing in crypttab for plain dm-crypt 
 +    mapping dm_crypt-0. Please read 
 +    /usr/share/doc/cryptsetup-initramfs/README.initramfs.gz and add the correct 
 +    'cipher' option to your crypttab(5).
 +cryptsetup: WARNING: Option 'size' missing in crypttab for plain dm-crypt 
 +    mapping dm_crypt-0. Please read 
 +    /usr/share/doc/cryptsetup-initramfs/README.initramfs.gz and add the correct 
 +    'size' option to your crypttab(5).
 +cryptsetup: WARNING: Resume target dm_crypt-0 uses a key file
 +</code>
 +
 +<code bash>
 +> cat /etc/fstab
 +# <file system> <mount point>   <type>  <options>       <dump>  <pass>
 +/dev/disk/by-id/dm-uuid-CRYPT-PLAIN-dm_crypt-0 none swap sw 0 0
 +
 +> cryptsetup status /dev/disk/by-id/dm-uuid-CRYPT-PLAIN-dm_crypt-0
 +/dev/disk/by-id/dm-uuid-CRYPT-PLAIN-dm_crypt-0 is active and is in use.
 +  type:    PLAIN
 +  cipher:  aes-cbc-essiv:sha256
 +  keysize: 256 bits
 +  key location: dm-crypt
 +  device:  /dev/nvme0n1p3
 +  sector size:  512
 +  offset:  0 sectors
 +  size:    16777216 sectors
 +  mode:    read/write
 +
 +  type:    PLAIN
 +  cipher:  aes-cbc-essiv:sha256
 +  keysize: 256 bits
 +
 +=> ,plain,cipher=aes-cbc-essiv:sha256,size=256
 +
 +> vim /etc/crypttab
 +dm_crypt-0 PARTUUID=bd600e11-0832-48ec-8fdc-83f41d004854 /dev/urandom swap,initramfs,plain,cipher=aes-cbc-essiv:sha256,size=256
 +
 +> update-initramfs -u -k all
 +</code>
 +