Archiv der Kategorie: Shell

Postgresql: Ermitteln Datenbankname aus postgresql-filesystem

Postgres speichert seine Datenbanken in einem „base“-Ordner mit Unterordnern pro Datenbank. Das Problem ist, dass die Unterordner aus einer Zahlenkombination bestehen (welche die oid der Datenbank darstellt). Falls es zu Problemen mit dem Filesystem kommt, kann man mit folgender Abfrage ermitteln, welcher Unterordner zu welcher Datenbank gehört (von postgresql-console psql):

postgres=# SELECT pg_database.datname,pg_database.oid FROM pg_database ORDER BY datname;

Damit erhält man eine Auflistung aller Datenbanknamen und der zugehörigen oid (welche die Zahl des Unterordners ist).

Ist der Unterordner bekannt (Unterordner = oid zB 16429), kann man mit folgender Abfrage die Datenbank ermitteln:

postgres=# SELECT oid,datname from pg_database WHERE oid=16429;

Beispiel: rsync error in /var/lib/postgresql/9.3/main/base/16429/234035538

Dann verbindet man sich mit der betroffenen Datenbank:

postgres=# \c my-database

Um den Tabellennamen bei Postgresql < 9.4 zu ermitteln:

SELECT 
    n.nspname AS tableschema, 
    c.relname AS tablename
FROM pg_class c
INNER JOIN pg_namespace n ON (c.relnamespace = n.oid)
WHERE c.relfilenode = 234035538; -- "subdir name"
 tableschema |          tablename          
-------------+-----------------------------
public | customers_bookings_services
(1 row)

Für Postgresql > 9.4:

SELECT pg_filenode_relation(0, 234035538); -- "0" stands for default tablespace

Shell: IP’s und MAC-Adressen aus eigenem Netz – sortiert

Welche IP’s sind in meinem Netzwerk und welche MAC-Adresse ist ihnen zugeordnet?

arp -e | sort -t . -k 3,3n -k 4,4n

„arp -e“ listet IP-Adressen und MAC-Adressen im Netz auf (Linux-Style).

„sort“ sortiert diese (-t . = Delimiter „.“, -k x,xn sortieren nach x-tem Element und numerisch sortieren („n“ am Ende vom k-Parameter).

Um den ARP-Cache (IP und MAC gecached) anzuzeigen und zu sortieren:

ip n s | sort -t . -k 3,3n -k 4,4n

Shell: SSH-Verbindung zu altem Server mit ssh-dss (oder ssh-rsa)

Nach einem Update funktioniert die SSH-Verbindung zu einem älteren Server nicht mehr? (Meldung: „Unable to negotiate with 192.168.80.95 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss„)

Dann kann das mitliefern der erlaubten/geduldeten Host-Key Alggorithmen helfen:

ssh -oHostKeyAlgorithms=+ssh-dss user@192.168.80.95

Alternativ kann auch in der ~/.ssh/config der Verbindungsparameter eingetragen werden:

Host OldServer
    Hostname 192.168.80.95
    HostKeyAlgorithms=+ssh-dss

Anmerkung: Parameter funktioniert auch mit scp.

Linux Mint: Docker installieren lsb_release Problem lösen

Bei Installationsroutinen für zB Docker wird oft der Befehl „lsb_release“ verwendet. Für Ubuntu klappt das auch, bei Linux Mint gibt es Probleme. Statt lsb_release wird /etc/os-release gesourced und dann kann die Variable $UBUNTU_CODENAME verwendet werden:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

source /etc/os-release

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $UBUNTU_CODENAME stable " | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt install docker-ce

sudo systemctl status docker