linux

Mount

Written by  on September 21, 2019

Mach.
Hab ich schon.
Machs rückgängig!
Geht nicht, ist nichts gemacht.
Mach.
Hab ich schon.

root@nas:~# mount -a
mount: /dev/md127 is already mounted or /data busy
root@nas:~# umount /data
umount: /data: not mounted
root@nas:~# mount /data
mount: /dev/md127 is already mounted or /data busy

Wird ja nichts damit zu tun haben?

[   44.106137] sd 2:0:0:0: [sdc] Media Changed
[   44.110342] sd 2:0:0:0: [sdc]  Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[   44.117621] sd 2:0:0:0: [sdc]  Sense Key : Unit Attention [current]
[   44.124023] Info fld=0x0
[   44.126570] sd 2:0:0:0: [sdc]  Add. Sense: Not ready to ready change, medium may have changed
[   44.135167] sd 2:0:0:0: [sdc] CDB: Read(10): 28 00 00 30 00 20 00 00 08 00
[   44.142197] end_request: I/O error, dev sdc, sector 3145760
[   44.147806] Buffer I/O error on device sdc1, logical block 393216
[   44.551986] EXT2-fs (sdc1): warning: mounting unchecked fs, running e2fsck is recommended

ext4 Filesystem Features

Written by  on Januar 20, 2019

Ein Filesystem lässt sich nicht mounten, obwohl es gerade frisch erstellt wurde.
dmesg liefert diese Ausgabe:

EXT4-fs (sdX): couldn't mount RDWR because of unsupported optional features (400)

Ursache dahinter ist, das die File System Tools neuer sind wie der verwendete Kernel. Ganz sauber lässt sich das nur lösen, wenn man zusammenpassende Versionen verwendet.
Oder etwas einfacher, indem man das Feature das der Kernel nicht kennt vom File System entfernt.

tune2fs -O ^metadata_csum /dev/sdX

Oder gleich beim Erstellen weglässt

mke2fs /dev/sdX -O ^metadata_csum

Quelle Stackexchange
Definition der File System Features
Details zu Ext4 Metadata Checksums

Zu welchem Paket gehört eine Datei

Written by  on Dezember 7, 2018

Wie finde ich schnell raus, zu welchem Paket eine Datei gehört?

dpkg -S $(which dig)

Ubuntu 18.10 Cosmic Cuttlefish

Written by  on Oktober 23, 2018

Ubuntu 18.10 Cosmic Cuttlefish und die IP Adresse
Ubuntu merkt sich einen DHCP Lease. Auch wenn sich die MAC Adresse (nach dem Klonen einer VM) geändert hat, bestehen die Instanzen darauf die gleiche IP Adresse zu benutzen. Was soll das denn?
Versuch den Lease zu löschen mit “> /var/lib/dhcp/dhclient.leases”. File ist leer, auf beiden Instanzen. Reboot. Beide Instanzen mit anderer MAC Adresse… wieder die gleiche IP.
Alternativ auf fixe IP Adresse umstellen:
/etc/netplan/50-cloud-init.yaml

# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp0s3:
            addresses: [10.0.0.151/24]
            gateway4: 10.0.0.138
            nameservers:
                    addresses: [10.0.0.110]
            dhcp4: true
    version: 2
netplan apply

Ubuntu 18.10 Cosmic Cuttlefish

Written by  on Oktober 22, 2018

Ubuntu 18.10 Cosmic Cuttlefish und die Hostname Umbenennung
Eben das neue Ubuntu aufgesetzt. In einer Virtual Box. Aber eigentlich brauch ich gleich zwei solche Maschinen. Also was liegt näher als die VM zu klonen. Geht ja einfach, sogar eine neue MAC Adresse wird generiert. Jetzt noch schnell den zweiten Server umbenannt in /etc/hostname -> reboot -> hostname ist wieder der von Maschine 1.
Suchen, googlen, setzen mit hostname command. Reboot. Und immer wieder zurück auf dem alten Hostname. Was ist da los Ubuntu?
Es finden sich erste Hinweise dass das an cloud-init liegt. Was macht das mit meinem hostname, bitteschön? Auch DHCP wird nicht frisch geholt, aber das ist eine andere Geschichte…
/var/lib/cloud/instances/3f1ebbef-73c0-49db-9207-fde1dce2b8f4/cloud-config.txt
Exakt hier kann man den hostnamen ändern. Reboot und es wurde übernommen!
Update: Einen Reboot später -> wieder der alte Hostname!
Update: Um Ubuntu zu klonen und umzubenennen muss man diesen cloud configuration service abändern:
/etc/cloud/cloud.cfg

# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true

RHEL7 X11Forward

Written by  on April 5, 2017

Wenn auf einem frischen RHEL7 (oder CentOS) System kein X11 Forwarding funktioniert, dann checken ob das Paket xorg-x11-xauth installiert ist.

Quelle

Start a not running process via cron

Written by  on Februar 24, 2017

Beispielcode zum Starten eines Prozesses, wenn diese nicht mehr Läuft. Direkt zur Verwendung in Cron.

#!/bin/bash

PROG="apache"
ps -ww aux | grep -v grep | grep $PROG >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
  echo "$PROG found"
else
  echo "$PROG not found"
  # hier restart einfügen
fi

Achtung: Das Script einfach parametrisierbar zu machen via $1 statt $PROG funktioniert nicht, da $1 auch wieder von PS gefunden wird. Es wird daher immer der $PROG found Zweig durchlaufen!

Zitat des Tages

Written by  on Oktober 21, 2016

Trying to optimize a system that’s already working correctly is often a waste of time.

From String to Array of Strings in Bash

Written by  on Oktober 13, 2016

Definition eines String:

STRING="A"

Definition eines Array:

STRING[0]="A"
STRING[1]="B"

oder

STRING="A"
STRING[1]="B"

Das heißt, nur mit STRING=”A” kann noch nicht unterschieden werden, ob es nur ein String ist, oder ein Array. D.h. man kann eine bestehende Definition einfach weiterverwenden. Und auch, diese bei Bedarf einfach um ein zweites Feld erweitern.
Wie aber muss der Code aussehen, damit er von Haus aus mit der Erweiterung umgehen kann?

Feststellen der Anzahl der Elemente im Array

${#STRING[*]} 
COUNT=0
while [[ ${COUNT} -lt ${#STRING[*]} ]]; do 
  echo ${STRING[$COUNT]}; 
  COUNT=$((COUNT+1)); 
done

Output für

unset STRING

(kein Output)

Output für

STRING="a"
a

Output für

STRING="a"
STRING[1]="b"
a
b

Voraussetzungen: Elemente im Array von 0 weg zählend durchnummerieren. Das erleichtert das durchlaufen einer Zählschleife ungemein!

OpenSSL STR_COPY variable has no value

Written by  on September 23, 2016

Openssl kann Shellvariablen im der Konfigurationsdatei verarbeiten. Kommt dabei eine Fehlermeldung wie

openssl.exe version
6870300:error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 19

liegt das daran, dass die Shellvariable nicht definiert ist.
Eine leere Variable dagegen ist aber OK.
Ich dachte schon einen Bug gefunden zu haben. Der Report dafür wurde aber nicht anerkannt, weil das Verhalten so gewünscht und dokumentiert ist.

Wie kommt man zum Fehler? Mit einer Config wie:

[req]
promt=no
distinguished_name=dn
default_md=sha256
default_bits=2048
req_extensions=alt_names

[dn]
C=AT
ST=NOe
L=xxx
O="org"
OU="ou"
E="test@example.com"

[alt_names]
subjectAltName=${ENV::SAN}

Wie repariert man es?
Indem man einen Default Wert in der Config setzt:

SAN=""
[req]
promt=no
distinguished_name=dn
default_md=sha256
default_bits=2048
req_extensions=alt_names

[dn]
C=AT
ST=NOe
L=xxx
O="org"
OU="ou"
E="test@example.com"

[alt_names]
subjectAltName=${ENV::SAN}

Dokumentation, wenn auch leicht verwirrend findet man unter https://www.openssl.org/docs/man1.0.2/apps/config.html bzw. https://www.openssl.org/docs/manmaster/apps/config.html für die letzte Version.
Suchen auf der Seite nach Begrif “ENV”.