Nützliche Einzeiler: Unterschied zwischen den Versionen

Aus Si:Wiki von Siegrist SystemLösungen - Informatik und Rezepte
Wechseln zu: Navigation, Suche
K (SSH Remote-Tunnel Server Client-ohne-public-port-access)
K
Zeile 58: Zeile 58:
 
==== Perl Oneliner um ein Unix-Socket File (Typ: s) zu erstellen ====
 
==== Perl Oneliner um ein Unix-Socket File (Typ: s) zu erstellen ====
 
:<code><nowiki> perl -MIO::Socket::UNIX -e 'IO::Socket::UNIX->new(Type => SOCK_STREAM(),Local => "/tmp/einsocket");' </nowiki></code>
 
:<code><nowiki> perl -MIO::Socket::UNIX -e 'IO::Socket::UNIX->new(Type => SOCK_STREAM(),Local => "/tmp/einsocket");' </nowiki></code>
 
==== Aliases aus sendmail /etc/aliases extrahieren und mit Domainname in eine Postgresql Datenbank als source,destination Paar einfügen ====
 
Der Oneliner gibt lediglich die 'psql' Statements aus, es wird nichts geschrieben oder verändert.
 
Sind in der Aliases-Datei bereits Einträge in der Form 'user@domain.tld' vorhanden, werden diese so übernommen. Einträgen ohne '@domain.tld' wird jeweils ein '@example.ch' angehängt.
 
:<code><nowiki> cat /etc/aliases | grep -Pv "^#.*" | grep -v "|" | awk -F: '{ split($2,arr,","); for (i in arr) print $1,arr[i]; }' | sed 's/\\//' | perl -pe 's/(^(?!\S+\@)\S+)\s+((?!.+\@).+)/$1\@example.ch\t $2\@example.ch/' | sort  | awk '{print "psql -h 127.0.0.1 -U dbuser -d database -w -X --set ON_ERROR_STOP=on -t --no-align -t --no-align --field-separator \"|\" --single-transaction -c \"insert into schema.forward (source, destination) values (\047"$1"\047, \047"$2"\047);\"" }' </nowiki></code>
 
  
 
==== ssh mit Keys statt Passwort zu entferntem Host ====
 
==== ssh mit Keys statt Passwort zu entferntem Host ====

Version vom 23. November 2020, 14:15 Uhr

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-Tunnel Server <-> Client-ohne-public-port-access

Bei Internetanschlüssen die keine statische IP-Adresse haben oder CGNAT (bspw. Swisscom) benutzen, kann auf diesen ein Remote-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: nc -l -p 77 -e "tee gaga" -v
  2. remote: cat file.tar.gz | netcat 192.168.1.113 77

netcat proxy

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

Dateifreigabe mit Python HTTP-Server

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

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

sed '/baz/s/foo/bar/g'

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

sed '/baz/!s/foo/bar/g'

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:

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 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 address show 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}'