Nützliche Einzeiler

Aus Si:Wiki von Siegrist SystemLösungen - Informatik und Rezepte
Version vom 25. Juni 2021, 12:14 Uhr von Sigi (Diskussion | Beiträge) (SSH mit Keys statt Passwort zu entferntem Host)

Wechseln zu: Navigation, Suche

SSH forwarding von IPv4 Host zu IPv6 Host (www.example.org) über ein Intermediate Dualstack System

create the tunnel via intermediate system on your local IPv4 host:

ssh -4 user@intermediate-system -L 2222:[2606:2800:220:1:248:1893:25c8:1946]:22

connect to IPv6 host www.example.org (2606:2800:220:1:248:1893:25c8:1946) on port 22:

ssh user@localhost:2222

SSH Remote Port-Forwarding Server <-> Client-ohne-public-port-access

Bei Internetanschlüssen die keine statische IP-Adresse haben oder CGNAT (bspw. Swisscom) benutzen, kann auf diesen ein Tunnel zu einem öffentlich zugänglichen Server aufgebaut werden, so dass von diesem Server trotzdem eine SSH (oder irgendeine andere) Verbindung zu diesem Anschluss aufgebaut werden kann.
Auf dem Client:

ssh -nNT -R 127.0.0.1:22222:localhost:22 -i /home/user/.ssh/id_ed25519 serveruser@server.ch &

Auf dem Server kann dann mit ssh -p 22222 clientuser@127.0.0.1
die SSH-Session aufgebaut werden.
Die Parameter -nNT erlauben für den User "serveruser" keine Shell in der /etc/passwd zu setzen.

netcat filetransfer

  1. local (192.168.1.117): nc -l -p 7788 > file.txt
  2. remote: nc 192.168.1.117 7788 < file.txt

netcat proxy

nc -l -p 1234 | nc www.server.com 80

Dateifreigabe mit Python HTTP-Server

Python2: python -m SimpleHTTPServer [port]
Python3: python3 -m http.server [port]

Ersetze "foo" mit "bar" in einer Datei

sed -i 's/foo/bar/g' filename
sed 's/foo/bar/g' filename > filename-neu

Ersetze "foo" mit "bar" NUR in Zeilen die "baz" enthalten

sed -i '/baz/s/foo/bar/g' filename

Ersetze "foo" mit "bar" AUSSER in Zeilen die "baz" enthalten

sed -i '/baz/!s/foo/bar/g' filename

Ausgabe der Zeilen 45-50 einer Datei

sed -n '45,50p' filename

Directory sharing via http

ipv4: python -m SimpleHTTPServer 80
ipv6: ???

csv to vcard converter

cat addr_book.csv | awk -F"," '{ print "BEGIN:VCARD\nN:" $3 ";" $2 ";" $1 "\nFN:" $3 "\nEMAIL;TYPE=INTERNET:" $5 "\nEND:VCARD"}' > addr_book.vcf

grep access_log und print host info

grep "GET /<URL-PATH>" /var/log/apache2/access_log | awk '{system("host " "\""$1"\"")}' | uniq

Netzwerk Statistiken aus /proc/net/netstat dargestellt

awk '(f==0) { i=1; while ( i<=NF) {n[i] = $i; i++ }; f=1; next} (f==1){ i=2; while ( i<=NF){ printf "%s = %d\n", n[i], $i; i++}; f=0}' /proc/net/netstat

finde alle symlinks die auf DATEI zeigen

find / -type l -print 2>/dev/null | while read symlink; do echo -n "$symlink"; targ=$(readlink -f "$symlink"); echo "-> $targ"; done | grep "DATEI"

finde alle symlinks die auf DIRECTORY zeigen

find / -type l -xtype d -print 2>/dev/null | while read symlink; do echo -n "$symlink"; targ=$(readlink -f "$symlink"); echo "-> $targ"; done | grep "DIRECTORY"

8 Byte Passwort generieren

openssl rand -base64 6

Perl Oneliner um ein Unix-Socket File (Typ: s) zu erstellen

perl -MIO::Socket::UNIX -e 'IO::Socket::UNIX->new(Type => SOCK_STREAM(),Local => "/tmp/einsocket");'

SSH mit Keys statt Passwort zu entferntem Host

Im Homeverzeichnis des Users (SSH-Client):

Schauen was schon an Keys besteht

ls -la .ssh/

RSA Schlüsselpaar erstellen (RSA mit 4096 Bit)

ssh-keygen -t rsa -b 4096

Public-Key zum entfernten Host (SSH-Server) transferieren

cat .ssh/id_rsa.pub | ssh <user>@<host> 'cat >> .ssh/authorized_keys'


... oder noch besser ... mitttels elliptischer Kurven ein Ed25519 Schlüsselpaar:

ssh-keygen -t ed25519

Public-Key zum entfernten Host transferieren

cat .ssh/id_ed25519.pub | ssh <user>@<host> 'cat >> .ssh/authorized_keys'

MAC Adresse des ethx Interface ermitteln

ip a s dev ethx | awk '$1=="link/ether" {print $2}'

Serielle Console mit Python (aka minicom)

python -m serial.tools.miniterm -e -p /dev/ttyXXXX -b 115200

Top 10 Prozesse die realen (physikalischen) Speicher im RAM belegen (RSS - Resident Set Size)

ps axo rss,comm,pid | awk '{ proc_list[$2] += $1; } END { for (proc in proc_list) { printf("%d\t%s\n", proc_list[proc],proc); }}' | sort -n | tail -n 10 | sort -rn | awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}'

Alle Grub Menueinträge (menuentries) auflisten

awk -F\' '/^menuentry / {print $2}' /boot/grub/grub.cfg|cat -n|awk '{print $1-1,$1="",$0}'