Inhaltsverzeichnis
- FreeBSD: Intel CPU Microcode updaten
- Shell Beep abschalten
- Vim als Anzeigeprogramm für Manpages benutzen
- GRML 2017.05 auf einem YUMI Bootstick einrichten
- Im Webserver Logging tauchen PHP Fehler zur Zeitzone auf
- Dateien unterhalb von aktiven Mountpoints erreichen
- FreeBSD Packagemanager pkg mit Bibliothekproblem
- HTTP Download direkt aus PHP Einzeiler
- Im exec Teil des find Kommandos eine Pipe verwenden
- IBM AIX Einstellungen für korrekten Übergang in die Sommerzeit bzw. Winterzeit
- SuSE Online Update im Textmodus und automatisch
- Sound unter Debian Woody auf einem Toshiba 320CDT
- Mit i4l und dynamischem Passwort eine PPP Verbindung herstellen
- XTerm Titelzeile mit ksh dynamisch verändern
- Shellscripts SUID laufen lassen
- Einen Rechner als Client an einen CUPS Server anbinden
- /etc/sysctl.conf mit SuSE Linux 7.3 nutzen
- Mit RPM das Paket zu einem bestimmten File finden
- Mit DPKG das Paket zu einem bestimmten File finden
- Mit APT das Paket zu einem bestimmten File finden
- Eine Chroot Umgebung bauen
- ISO-Image von einer CD-ROM erstellen
- Cisco WLAN Karten unter Linux in den Monitoring Mode schalten
- Festplatte komplett löschen
- Eine Chrootumgebung von einem installierten Linux erstellen
- Shell: Script abbrechen, wenn eine Variable nicht deklariert ist
- Die Paketinformationen von apt automatisch aktualisieren
- Linux: Die Netzwerkkarte bekommt eine falsche Nummer zugewiesen (z.B. eth1)
- Linux: IPV6 abschalten in Debian und Ubuntu
- tcpdump per ssh ohne die eigenen ssh Pakete
- Reboot/Halt zu einem bestimmten Zeitpunkt einplanen
- FreeBSD 8 – Englisches System und deutsche Tastatur
- Ubuntu – Kein Passwortwechsel möglich
- Moderne Rechner laufen nur leise mit konfiguriertem Powermanagement Subsystem
- Das S.M.A.R.T System hilft beim Erkennen von Festplattenfehlern
- OpenBSD: Deutsche Umlaute in der Konsole anzeigen
- OpenBSD: Eine XDMCP Verbindung zu einem X11 Server aufbauen
- X11: Tastaturbelegung auf Deutsch umschalten
- Zwei Bildschirme mit X11 Boardmitteln anordnen
- Debian – Schriftart, Codesatz und Kodierung neu konfigurieren
- Zwischenstand von dd Tool abrufen
- tar Archiv direkt auf ein Remote-System schreiben
FreeBSD: Intel CPU Microcode updaten
12/2019
Zuerst das Paket devcpu-data installieren.
Dann den Ladebefehl
microcode_update_enable="YES"
in /etc/rc.conf
eintragen.
Entweder Rebooten oder zur Laufzeit mit service microcode_update start
starten
02/2024
FreeBSD 14 hat neue Paketnamen für die Software. cpu-microcode-amd AMD CPU microcode updates
cpu-microcode-intel Intel CPU microcode updates
cpu-microcode-rc-1.0_1 RC script for CPU microcode updates
rc.conf Parameter ist gleich geblieben.
# service microcode_update start
Updating CPU Microcode…
Done.
# tail daemon.log
Feb 13 23:43:46 server45 microcode_update[1019]: /usr/local/share/cpucontrol 06-3c-03.32: updating cpu /dev/cpuctl0 from rev 0x1a to rev 0x28… done.
Feb 13 23:43:46 server45
microcode_update[1024]: /usr/local/share/cpucontrol 06-3c-03.32: updating cpu /dev/cpuctl1 from rev 0x1a to rev 0x28… done.
Feb 13 23:43:46 server45
microcode_update[1029]: /usr/local/share/cpucontrol 06-3c-03.32: updating cpu /dev/cpuctl2 from rev 0x1a to rev 0x28… done.
Feb 13 23:43:46 server45
microcode_update[1034]: /usr/local/share/cpucontrol 06-3c-03.32: updating cpu /dev/cpuctl3 from rev 0x1a to rev 0x28… done.
Shell Beep abschalten
Januar 2019
Manchmal nervt das Piepen der Shell, vor allem die Kollegen im gleichen Büro.
So kann man es abschalten.
Bash Shell:setterm -blength 0
Vim Editor::set visualbell
X-Window System:xset b off
Vim als Anzeigeprogramm für Manpages benutzen
07.2017
Der Editor Vim eignet sich auch als Anzeigeprogramm für die Manpages. Zum Einstellen von Vim als Manpager muss die Shell Variable $MANPAGER in einer der passenden Startdateien (bspw. .bashrc) umgesetzt werden.
Die folgende Einstellung macht Vim zum Manpager:
export MANPAGER="col -b | vim -c 'set ft=man ts=8 nomod nolist nonu' -c 'nnoremap i <nop>' -"
Das ganze sieht dann so aus und ist mit der „normalen“ Navigation von vi zu bedienen:
GRML 2017.05 auf einem YUMI Bootstick einrichten
Juli 2017
Das YUMI Management Tool kommt mit dem ISO Image von GRML 2017.05 überhaupt nicht klar. Es kann aus dem Image weder mit ISOLINUX noch mit Grub eine bootfähige Konfiguration erzeugt werden. Ich habe daher den Bootprozess von YUMI und GRML analysiert und eine Konfiguration von Hand erstellt. Das hat auch noch den Vorteil, dass man sich auf das wirklich notwendige Beschränken kann und „den Rest“ gar nicht auf dem Stick hat.
Folgende Schritte sind für ein 64 Bit System notwendig:
- Verzeichnis grml64-2017.05 im Multiboot Verzeichnis von YUMI erstellen.
- Den Linux Kernel (vmlinuz) und die Initrd (initrd.img) aus dem Image (Pfad boot/grml64full) in das YUMI Verzeichnis /multiboot/grml64-2017.05 kopieren.
- Das Live Filesystem (grml64-full.squashfs) und die Beschreibungsdatei (filesystem.module) aus dem Image (Pfad /live/grml64-full) in das YUMI Verzeichnis /multiboot/grml64-2017.05 kopieren.
- Im multiboot Verzeichnis die Datei installed.txt ergänzen.
Ergänzung in einer eigenen Zeile anhängen:
grml64-2017.05 - Im multiboot/menu Verzeichnis die Datei system.cfg ergänzen:
Ergänzung am Ende anfügen
#start grml64-2017.05
LABEL grml64-2017.05
MENU LABEL grml64-2017.05
MENU INDENT 1
CONFIG /multiboot/grml64-2017.05/default.cfg
APPEND /multiboot/grml64-2017.05
#end grml64-2017.05 - Im multiboot/grml64-2017.05 Verzeichnis die Datei default.cfg mit den Bootinformationen erstellen.
Inhalt:
default grml
label grml
menu DEFAULT
menu label grml64 2017.05 amd64
kernel /multiboot/grml64-2017.05/vmlinuz
append initrd=/multiboot/grml64-2017.05/initrd.img boot=live apm=power-off vga=791 nomce net.ifnames=0 live-media-path=/multiboot/grml64-2017.05/ boot=live ignore_bootid
Im Webserver Logging tauchen PHP Fehler zur Zeitzone auf
01.2017
Auf „einmal“ tauchen im Logging des Webservers Fehler zur Zeitzoneneinstellung von PHP auf.
[Thu Jan 19 08:11:47.452749 2017] [:error] [pid 41491] [client 192.168.22.10:64455] PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/local/www/apache24/data/index.php on line 202
Beheben lässt sich das durch setzen der korrekten Zeitzone in der php.ini (die der Webserver benutzt).
Dazu den vermutlich auskommentierten Eintrag date.timezone aktivieren und mit der richtigen Zeitzone konfigurieren.
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Berlin"
Jetzt muss der Webserver noch einmal neu gestartet werden und der Fehler kommt nicht mehr vor.
# service apache24 restart
Performing sanity check on apache24 configuration:
Syntax OK
Stopping apache24.
Waiting for PIDS: 1611.
Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.
Dateien unterhalb von aktiven Mountpoints erreichen
01.2017
Wenn ein Filesystem auf einem Mountpoint gemountet wurde, sind im Mountpointverzeichnis (und unterhalb davon) existierende Dateien und Verzeichnisse nicht mehr sichtbar und nutzbar.
Mit dem (neueren) mount Parameter –bind kommt man auf einem Umweg an die Dateien, indem man als Quelle Verzeichnisse angibt und keine Blockgeräte. Sinnvoll ist das beispielsweise, um im laufenden Betrieb /usr oder /var Filesysteme zu migrieren.
Angenommen /dev/sda1 ist das Rootfilesystem und ein LVM Logical Volume ist als /usr gemountet.
Man kann dann folgendermaßen an die Daten in /dev/sda1/usr/* gelangen:
# mount --bind / /mnt
Jetzt ist unterhalb von /mnt alles aus dem „echten“ Rootfilesystem (parallel) sichtbar, ohne das die Mounts etwas überlagern.
# cd /mnt/usr # ls testdatei1 testdatei2 testdatei3 # df -h . Filesystem Size Used Avail Use% Mounted on /dev/sda1 4.5G 3.0G 1.3G 70% /mnt # cd /usr # ls bin games include lib local lost+found sbin share src # df -h . Filesystem Size Used Avail Use% Mounted on /dev/mapper/data_vg-usr_lv 2.7G 1.9G 673M 75% /usr
FreeBSD Packagemanager pkg mit Bibliothekproblem
01.2017
Wenn der Packagemager pkg nicht mehr funktioniert ist eine Änderung an der Softwareausstattung unter FreeBSD nicht mehr ohne weiteres möglich.
Beispielsweise dieses Problem hatte ich „plötzlich“:
# pkg update
Shared object "libssl.so.7" not found, required by "pkg"
Glücklicherweise haben die Macher von pkg eine statisch gelinkte Version vorgesehen, die mit auf dem System installiert ist.
So kann man pkg durch pkg selber neu auf das System installieren bzw. aktualisieren:
# pkg-static install -f pkg
HTTP Download direkt aus PHP Einzeiler
07.2016
Auf den meisten Webservern ist PHP installiert. Man kann damit auch HTTP Downloads als Einzeiler starten und auf weitere Zusatztools (wget, curl, lync, etc.) verzichten:
# php -r "readfile('http://www2.kleinboelting.de/download/testpicture.jpg');" >localpic.jpg
# file localpic.jpg
localpic.jpg: JPEG image data, EXIF standard 2.2
Im exec Teil des find Kommandos eine Pipe verwenden
04.2016
Mit dem Tool find lassen sich mächtige Konstrukte zum Auffinden von Dateien und Verzeichnissen bilden.
Der exec Parameter von find kann für jeden Fund ein Kommando ausführen. Allerdings kann man über die exec Parametrisierung keine Verkettung mit Pipes machen. Find quittiert den Versuch mit einer Fehlermeldung.
# find /tmp/ -exec ls -l {} | grep wheel \;
find: -exec: no terminating ";" or "+"
grep: ;: No such file or directory
#
Die Lösung ist der Aufruf einer Shell, die via STDIN Daten zur Verarbeitung bekommt und selber wiederum Pipes nutzen kann. Üblicherweise muss man die Shell dazu mit dem Shell Parameter -c starten.
Das ganze sieht dann beispielsweise so aus:
# find /tmp -exec sh -c "file {} | grep ASCII" \;
/tmp/samplefile: ASCII text
#
IBM AIX Einstellungen für korrekten Übergang in die Sommerzeit bzw. Winterzeit
Unter smit müssen diese Werte eingestellt sein um einen sauberen Übergang zu haben.
Vor allem einen Übergang am richtigen Datum!
Change Time Zone Type or select values in entry fields. Press Enter AFTER making all desired changes. [Entry Fields] * Standard Time ID(only alpahabets) [NFT] * Standard Time Offset from CUT([+|-]HH:MM:SS) [-1] Day Light Savings Time ID(only alpahabets) [DFT] Day Light Savings Time Offset from CUT([+|-]HH:MM: [] SS) Start Daylight Savings Day([Mmm.ww.dd|Jn]) [M3.5.0] Start Daylight Savings Time(HH:MM:SS) [] Stop Daylight Savings Day([Mmm.ww.dd|Jn]) [M10.5.0] Stop Daylight Savings Time(HH:MM:SS) []
SuSE Online Update im Textmodus und automatisch
Das SuSE Tool YaST2 kann im Textmodus laufen. Dazu mit unset DISPLAY
eine event. gesetzte DISPLAY Variable löschen.
Um ein Update automatisch z.B. per cron zu starten kann man YaST2 mit den Parametern .auto.get
und .auto.install
aufrufen. Für jeden Parameter ist ein eigener Start von YaST2 nötig.
Sound unter Debian Woody auf einem Toshiba 320CDT
Um die Soundkarte richtig zu konfigurieren müssen die aktuellen Parameter der Hardware im BIOS des Rechners herausgefunden werden. Dazu direkt beim Einschalten ESC
gedrückt halten und nach der Aufforderung mit F1
ins BIOS wechseln. Dort mit Page down
in die zweite Seite wechseln und der Cursor mit den Pfeiltasten auf Sound Setup bringen.
Hier werden die Adressen für IRQ, DMA und I/O konfiguriert und angezeigt. Bitte alle Werte notieren, diese werden im Betriebssystemegebraucht. Dann das BIOS mit Taste End
verlassen.
Nach dem Booten von Woddy startet man als root
das Programm modconf
und stellt als Soundkarte opl3sa
ein. Die Parameter für den Treiber werden so angegeben:
io=0x370 mss_io=0x530 irq=5 dma=1 dma2=0
Die richtigen Werte richten sich natürlich nach der vorher notierten Konfiguration des Rechners.
Desweiteren wird noch der Treiber opl
eingebunden. Auch hier werden Parameter erwartet.
io=0x388
Beim nächsten Booten lädt das Module
ad1848/cs4248 codec driver Copyright (C) by Hannu Savolainen 1993-1996 ad1848: No ISAPnP cards found, trying standard ones... opl3sa2: No PnP cards found opl3sa2: Search for a card at 0x880. opl3sa2: chipset version = 0x5 opl3sa2: Found OPL3-SA3 (YMF715E or YMF719E) opl3sa2: Control I/O port 0x370 not free opl3sa2: There was a problem probing one of the ISA PNP cards, continuing opl3sa2: Control I/O port 0x370 not free opl3sa2: There was a problem probing one of the ISA PNP cards, continuing opl3sa2: Control I/O port 0x370 not free opl3sa2: There was a problem probing one of the ISA PNP cards, continuing YM3812 and OPL-3 driver Copyright (C) by Hannu Savolainen, Rob Hooft 1993-1996
Trotz der Fehlermeldungen wird das Modul korrekt geladen. Ich konnte mit PnP Tools die Karte auch nicht sehen. Vermutlich ist das auch der Grund für die PnP Fehler.lsmod
bringt u.a. folgende Ausgabe:
opl3 10984 0 (unused) opl3sa2 7840 0 (unused) ad1848 20672 0 [opl3sa2] mpu401 18784 0 [opl3sa2] sound 52876 0 [opl3 opl3sa2 ad1848 mpu401] soundcore 3236 5 [sound] isa-pnp 27432 0 [opl3sa2 ad1848]
Mit z.B. XMMS kann jetzt Sound abgespielt werden.
Falls es nicht funktioniert unbefingt prüfen, ob der Benutzer in der Gruppe audio
ist. Bei Debian ist der Gerätezugriff stark durch Gruppenrechte abgesichert.
Mit i4l und dynamischem Passwort eine PPP Verbindung herstellen
Um mit einem regelmässig wechselnden Passwort eine PPP Verbindung von einem Linux Router mit i4l herzustellen kann man das Interface auf manuelles Wählen einstellen und mit einem Skript die Verbindung hochziehen.
#!/bin/bash PAPFILE="/etc/ppp/pap-secrets" PAPUSERNAME="myusername" TMPFILE="/etc/ppp/pap-secrets.tmp" INTERFACE="ippp1" EXITCODE=0 GREP="/usr/bin/grep" MV="/bin/mv" ISDNCTRL="/usr/sbin/isdnctrl" SLEEP="/bin/sleep" if [ $# -eq 1 ] ; then umask 177 $GREP -v $PAPUSERNAME $PAPFILE > $TMPFILE echo "\"$PAPUSERNAME\" * \"$1\"" >> $TMPFILE $MV $TMPFILE $PAPFILE # Das Interface muss restartet werden um das neue PW zu erkennen /etc/init.d/i4l restart $INTERFACE > /dev/null $SLEEP 1 $ISDNCTRL dial $INTERFACE EXITCODE=$? else echo "Es muss das Passwort fuer den Zugang als Parameter uebergeben werden." echo "Das muss der einzige Parameter fuer das Skript sein." EXITCODE=1 fi exit $EXITCODE
Update 23.11.2005: Vielen Dank an Holger Petersen für das Feedback zum Script. Ich habe den eq-Teil übernommen.
XTerm Titelzeile mit ksh dynamisch verändern
Mit diesem PS1 Prompt hat man in einem Xterm den User- und Hostnamen sowie das aktuelle Verzeichnis in der Fenstertitelzeile anzeigen. Das funktioniert aber auf diese Weise, wenn als Shell im Xterm die ksh benutzt wird. Andere Shells haben andere Escape Sequenzen.
case $TERM in xterm*) HOST=`hostname` PS1='^[]0;${USER}@${HOST}:${PWD}^G# ' ;; *) PS1='# ' ;; esac
Achtung: Die Zeichnen ‚^[‚ und ‚^G‘ sind eigene (einzelne) Zeichen für ESC und BEL. Sie können im Emacs-Mode per
C-q ESC
bzw.
C-q C-g
generiert werden.
In vi können die Zeichen auch erstellt werden: ESC (^[) wird erstellt durch
Ctrl+v
direkt gefolgt von
Ctrl+Esc
BEL (^G) wird erstellt durch
Ctrl+g
Shellscripts SUID laufen lassen
ACHTUNG! Bitte nur machen, wenn absolut klar ist, was hier passiert. Man hat sich damit sehr schnell ein Sicherheitsloch eingebaut!
Um ein Shellscript SUID laufen zu lassen muss man einen kleinen C-Wrapper drumherumbauen. Denn die Kernel der meisten Unices droppen das SUID Bit wenn ein Programm mit #! (Programm, welches einen Interpreter braucht) startet.
Der Code für das C-Programm:
main(){ setuid(0); seteuid(0); system("/path/filename"); }
Dieser Code wird dann compiliert.
Das Binary noch per chmod 4755 /path/filename
SUID setzten. Falls andere Berechtigungen benutzt werden sollen muss in den Sourcen die 0 gegen die jeweilige User-ID ausgetauscht werden.
Einen Rechner als Client an einen CUPS Server anbinden
Auf dem Rechner muß nur die CUPS Clientsoftware installiert sein. Bei Debian lenny zum Beispiel das Paket cupsys-client. Andere Distributionen verwenden ähnliche Pakete.
Um den CUPS Drucker anzusprechen setzt man den Eintrag ServerName
in der Datei /etc/cups/client.conf
auf den richtigen Druckserver und entfernt das Kommentarzeichen.
Danach gibt z.B. lp /etc/hosts
die hosts Datei auf dem entsprechenden Drucker aus.
Diese Methode benutzt keinen eigenen Spooler. Es kann also nur gedruckt werden, wenn der Druckserver eingeschaltet ist und der CUPS Server läuft.
Viele Programme benutzten zum Drucken das Kommando lpr, das wiederum auf den Druckspooler aufsetzt. Man muss diese Software
dann so konfigurieren, dass als Druckprogramm lp benutzt wird!
Besser ist natürlich, dass Drucksystem mit einem Spooler zu betreiben. Aber das ist administrativer Mehraufwand der sich nicht lohnt, wenn alle paar Wochen mal eine Konfigurationsdatei gedruckt werden muss.
/etc/sysctl.conf mit SuSE Linux 7.3 nutzen
Manche SuSE Linux Distributionen (z.B. 7.3) enthalten keine /etc/sysctl.conf
. Um den Kernel einzustellen muß man so vorgehen:
Erstellen von /etc/sysctl.conf
mit den passenden Einstellungen z.B.
kernel.shmmax=268435456 kernel.msgmni=1024 fs.file-max=8129
Danach diese Einstellung in einem Inititialisierungsscript laden. Dazu muß der Befehl sysctl -p
eingebunden werden. Z.B. in das Initscript boot.local
.
Mit RPM das Paket zu einem bestimmten File finden
Wenn man das Paket zu einem bestimmten File finden will kann man die RPM Datenbank mit diesem Befehle fragen:
# rpm -q -f /usr/lib/perl5/5.6.0/FindBin.pm perl-5.6.0-91 # Das bedeutet, daß das Paketperl-5.6.0-91
das entsprechende File/usr/lib/perl5/5.6.0/FindBin.pm
installiert hat.
Mit DPKG das Paket zu einem bestimmten File finden
Wenn man das Paket zu einer bestimmten Datei finden will kann man die DPKG Paketdatenbank mit diesem Befehle fragen:
# dpkg -S /usr/lib/perl5/DateTime
libdatetime-perl: /usr/lib/perl5/DateTime #
Das bedeutet, daß das Paket libdatetime-perl
die entsprechende Datei /usr/lib/perl5/DateTime
installiert hat.
Mit APT das Paket zu einem bestimmten File finden
Juni 2012
Wenn man das Paket zu einer bestimmten Datei finden will kann man die APT Paketdatenbank mit diesem Befehle fragen:
# apt-file search /usr/lib/libhal.so.1 libhal1: /usr/lib/libhal.so.1 libhal1: /usr/lib/libhal.so.1.0.0 #
Das bedeutet, daß das Paket libhal1
die entsprechende Dateien /usr/lib/libhal.so.1*
installiert hat.
Damit apt-file arbeiten kann muss man initial mit apt-file update
die APT Quellen abfragen beziehungsweise aktualisieren.
Eine Chroot Umgebung bauen
Man legt sich ein Verzeichnis an, welches das chrooted Rootverzeichnis werden soll. Dann überlegt man, welche Tools man in der Chroot Umgebung verwenden will. Man muß die Libraries mit ldd herausfinden und alles benötigte aus /bin und /lib in lib und bin unterhalb des chroot Verzeichnissesd kopieren. Ganz wichtig ist /bin/bash und dessen libs. Sonst kann man chroot nicht starten. Danach noch chroot /pfadzumverzeichnis starten und man befindet sich im chrooted Root Verzeichnis.
Die Prozesse, die jetzt in der chrooted Umgebung gestartet werden können nicht mehr „ausbrechen“ und sehen das eigentliche Rootverzeichnis nicht.
ISO-Image von einer CD-ROM erstellen
MD5 Summe anlegen um später das Auslesen der Daten zu verifizieren.md5sum /dev/cdrom > cd-rom.md5
Das ISO Image mit dd erstellen.dd if=/dev/cdrom of=cd-rom.iso
Nach dem Erstellen des Images muss die MD5 Summe gleich bleiben, wenn man md5sum auf die ISO Datei anwendet. Sonst ist beim Imageerstellen etwas schiefgelaufen und man muss es wiederholen.
Wenn man das ISO Image später gebrannt hat kann man natürlich mit md5sum auf /dev/cdrom checken, ob das Brennen OK war. Die MD5 Summe darf sich nicht verändern.
Cisco WLAN Karten unter Linux in den Monitoring Mode schalten
Um die Cisco Karte in den Monitor Mode zuschalten kann man iwconfig benutzen. Gerade beim Monitormode geht das Tool aber nicht immer problemlos.
Man kann auch direkt den Treiber beglücken. Dazu einfach dieses Shellkommando absetzen.echo "Mode: y" > /proc/driver/aironet/eth0/Config
Festplatte komplett löschen
August 2007, Juli 2017
Die komplette Festplatte (oder andere Blockdatenträger) können mit dem dd-Kommando restlos gelöscht werden.
dd if=/dev/zero of=/dev/festplatte
Alternativ mit der Anzeige, wieviel schon geschrieben wurde. Dazu muss das Tool buffer installiert sein.
dd if=/dev/zero | buffer -S 100k | dd of=/dev/festplatte
Die entsprechenden Devicenamen für /dev/festplatte kann man mit dem Kommando dmesg anzeigen lassen.
Ein Nachteil der Methode ist, dass auf diesem Weg nur Nullen auf den Datenträger geschrieben werden. Der Linux Zufallszahlengenerator /dev/urandom ist ziemlich langsam. Als Input /dev/urandom zu nutzen ist daher keine Alternative.
Eine Möglichkeit ist der Einsatz von OpenSSL. Man verschlüsselt einen Satz Nullen und nutzt einen erstellten (kleinen) Schlüssel von /dev/urandom. Dadurch kommen „schnelle Zufallszahlen“ heraus.
openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt </dev/zero >/dev/festplatte
Eine Chrootumgebung von einem installierten Linux erstellen
März 2009
Manchmal ist es nötig, eine Chrootumgebung aus einem installierten Linux zu generieren. Zum Beispiel, um Grub neu installieren.
Dafür kann GRML oder Knoppix o.ä. zum Booten benutzt werden
Zur Erstellung der Chrootumgebung sind folgenden Kommandos nötig (Angenommen das Rootfilesystem liegt auf sda6 und das Boot Filesystem liegt auf sda1):
mount /dev/sda6 /mnt
mount /dev/sda1 /mnt/boot
mount -o bind /dev /mnt/dev
mount -t proc /proc /mnt/proc
chroot /mnt /bin/bash
Jetzt kann in der gestarteten Bash Shell das System administriert werden.
Shell: Script abbrechen, wenn eine Variable nicht deklariert ist
Januar 2008
Manchmal soll ein Programm (auch in der Shell) abbrechen, wenn eine Variable benutzt wird, obwohl sie noch nicht deklariert war. Das lässt sich durch das Setzen von
set -o nounset
oder alternativ
set -u
im Script konfigurieren.
Vielen Dank an Heike C. Zimmerer für den Tipp.
Die Paketinformationen von apt automatisch aktualisieren
März 2008
Die Paketinformationen kann man automatisch aktualisieren. Dadurch kann z.B. das Monitoring feststellen, dass Updates einzuspielen sind.
Dazu in /etc/apt/apt.conf.d/ in einer entsprechenden Datei den Updatebefehl eintragen:APT::Periodic::Update-Package-Lists "1";
Linux: Die Netzwerkkarte bekommt eine falsche Nummer zugewiesen (z.B. eth1)
Juni 2008
Bei neueren Linux Distributionen läuft die Hardwareverwaltung über udev. Diese Software baut unter anderem die eth0 bis ethn Nummern für Ethernet Netzwerkkarten zusammen.
Wenn eine neue Netzkarte installiert wird, und damit eine neue MAC in den Rechner kommt, wird das dann automatisch eine neue eth Nummer. Das passiert auch, wenn VM Maschinen geklont werden und eine neue UID (und damit eine neue MAC Adresse) bekommen.
Änderbar ist das bei Ubuntu in /etc/udev/rules/70-persistent-net.rules.
Bei Debian heisst die Datei /etc/udev/rules.d/70-persistent-net.rules.
Andere Distributionen benennen die Struktur ähnlich.
In der Datei einfach die alten Hardwarezeilen löschen und die Netzwerkkartennummern der neuen Zeile anpassen, die udev automatisch angelegt hat. Nach dem Reboot des System, oder dem Neustart von udev, ist die Nummerierung wieder OK.
Linux: IPV6 abschalten in Debian und Ubuntu
Oktober 2008
In /etc/modprobe.d/aliases
alias net-pf-10 ipv6
durch
# Disable IPV6 on this host
# alias net-pf-10 ipv6
alias net-pf-10 off
ersetzen.
Beim nächsten Neustart ist die IPv6 Adresse nicht mehr am Interface eingebunden.
tcpdump per ssh ohne die eigenen ssh Pakete
Oktober 2008
Wenn man tcpdump per remote ssh shell laufen lassen muss stören die eigenen ssh Pakete massiv. Diese Pakete werden durch die Ausgabe des tcpdump Outputs durch den ssh Tunnel generiert.
tcpdump -i eth0 not port 22
liefert alles ohne den SSH Traffic und man kann sich auf den eigentlichen Netzwerkverkehr konzentrieren.
Reboot/Halt zu einem bestimmten Zeitpunkt einplanen
Oktober 2009 und Februar 2020
Man kann den Reboot oder den Halt des Systems sehr gut mit dem AT Daemon einplanen. Andere Scripts natürlich auch.
Der folgende Aufruf plant beispielsweise den Halt für den 22.10.2009 8:58 Uhr.
# echo "/sbin/shutdown -h now" | at 8:58 22.10.2009
warning: commands will be executed using /bin/sh
job 1 at Thu Oct 22 08:58:00 2009
Der folgende Aufruf plant den Systemhalt in 15 Minuten ab jetzt ein.
# echo "/sbin/shutdown -h now" | at now + 15min
warning: commands will be executed using /bin/sh
job 1 at Tue Feb 18 18:20:00 2020
Die zu startenden Programme müssen mit einer minimalistischen Umgebung (env) zurecht kommen. Ähnlich wie bei cron laufen die Scripte im AT Daemon nicht in einer „großen“ Umgebung.
FreeBSD 8 – Englisches System und deutsche Tastatur
Januar 2011
Eigentlich will ich ja gar nicht viel. Ich will an meinem FreeBSD System komplett in Englisch arbeiten. Alles kann also Systemdefault sein.
Nur die Tastatur. Die soll deutsch eingestellt sein. Ich brauche Umlaute ziemlich oft. Wenn man Kleinbölting heisst kann man nicht gut darauf verzichten.
Der Wunsch scheint so einfach. In der Umsetzung ist er aber etwas verzwickt, da es erhebliche Neben- und Wechselwirkungen mit verschiedenen Einstellungen am Layout und den Systemsprachen gibt.
Faktisch stellt man sein System besser auf Deutsch um und nur bestimmte Sachen wieder auf Englisch „zurück“.
Hier also die Konfigurationsanleitung für alles auf Englisch und nur ein paar Kleinigkeiten auf Deutsch.
Shell Konfigurationsdateien
Als erstes checkt ihr eurer Shell Initialisierungsdateien, z.B. ~/.bashrc
für die Bash.
Hier dürfen keine „Altlasten“ in Form von export LANG=...
hinterlegt sein. Die stören nur. Einfach löschen, oder vorerst auskommentieren.
/etc/login.conf
Dann wird in der /etc/login.conf
der default-Bereich ergänzt. Bitte auf die Notation mit den :
am Zeilenende achten.
Die setenv-Zeile wird mit dieser Einstellung am Ende ergänzt:,LC_MESSAGES=en_US.ISO8859-1
Fügt in der vorletzten Zeile im Default Bereich folgende zwei Zeilen ein:
:lang=de_DE.ISO8859-1:\
:charset=ISO-8859-1:\
/etc/rc.conf
In der /etc/rc.conf
muss das richtige Layout eingestellt sein.
keymap="german.iso"
Für eine schönere Darstellung (u.a. der Umlaute) kann man nochfont8x16="iso-8x16"
font8x14="iso-8x14"
font8x8="iso-8x8"
einbauen. Das hat mit dem hier beschriebenen Umlauteproblem aber eigentlich nichts zu tun.
Auf diese Weise bekommt man ein System mit deutscher Tastatur und englischen Meldungen (auch aus der Shell).
Einige Sachen weitere Sachen sind auch noch deutsch bzw. latin1. Zum Beispiel die Sortierreihenfolge und die Darstellung von Zahlen mit Komma anstatt mit Punkt.
Wer das alles auch nicht haben möchte muß die entsprechenden LC_* Variablen auf en_US.ISO8859-1 einstellen. Im Einzelnen sind dass dann noch LC_COLLATE, LC_CTYPE und LC_NUMERIC. Dazu kann man in der setenv-Zeile der login.conf einfach hinten fortschreiben.
LC_ALL und LANG nicht verstellen oder überschreiben, da sonst die Umlaute von der Tastatus „verschwinden“ oder die Tasten andere Zeichen produzieren.
Ubuntu – Kein Passwortwechsel möglich
März 2011
Aus „irgendwelchen“ Gründen konnte unter Ubuntu mit passwd kein Passwortwechsel mehr gemacht werden. Ich konnte nicht rausfinden, warum das so ist. Ubuntu (8.04 LTS Server) hat das neue Passwort einfach nicht in die /etc/shadow eingetragen.
Um trotzdem ein Passwort zu wechseln kann man dieses Verfahren anwenden:
Als erstes das Package makepasswd installieren, wenn es noch nicht drauf ist.echo "Ultrageheim" | makepasswd --clearfrom=- --crypt-md5
liefert das Passwort$1$wqrfOfTk$UH3FFZjiRKbH6espQjdFc0
Diesen Hash kann man in die /etc/shadow einbauen und er gilt dann als Systempasswort für neue Anmeldungen.
Wenn man das makepasswd mehrfach startet kommen immer unterschriedliche Passwörter heraus. Das ist normal, da der Algorithmus Salt benutzt und die Hashwerte kräftig gesalzen sind.
Moderne Rechner laufen nur leise mit konfiguriertem Powermanagement Subsystem
Juli 2011
Moderne PC erzeugen unter Last sehr viel Abwärme. Dementsprechend groß sind die Lüfter dimensioniert.
Unter Linux und BSD greifen aber in der Standardinstalltion meist keine Tools in die Drehzahl der Ventilatoren ein. So lärmt der Rechner vor sind hin, obwohl er viel leiser sein könnte.
Abhilfe schafft das Paket lm-sensors. Das Paket wird installiert und kann dann über das Tool sensors-detect
eingerichtet werden.
Für die Lüftersteuerung muss noch das Einrichtungstool pwmconfig
gestartet werden. Das Programm fancontrol läuft als Daemon und steuert ab sofort die Drehzahlen temperaturgetrieben.
Beim Beenden von fancontrol (Shutdown) werden die Luefter kurz auf Vollgas hochgeregelt. Das kann weggescriptet werden. Ich finde es aber praktisch. Fujitsu-Siemens PC machen das beispielsweise immer beim Einschalten, um die Lager „frisch“ zu halten.
Das S.M.A.R.T System hilft beim Erkennen von Festplattenfehlern
Juli 2011
Moderne Festplatten halten ziemlich lange. Irgendwann passiert aber das unvermeidliche und die Fehlerrate geht hoch. Das SMART System
der Festplatte kann das erkennen und melden. Dazu muß auf dem System ein smartd Daemon laufen und die Informationen verwerten.
Der Smartd wird installiert und dann über die smartd.conf Datei eingerichtet.
Ich ersetze die Autoerkennung durch eine manuell gesetzte Konfiguration mit Mailbenachrichtigung an eine E-Mailadresse.
Dazu Zeile DEVICESCAN
auskommentieren und pro Platte eine entsprechende Zeile setzen
/dev/DEVICENAME_DER_PLATTE -a -s L/../../7/01 -m MONITORING@EXAMPLE.COM
Wenn mehrere Festplatten verbaut und überwacht werden sollen ist eine Verteilung des Testens sinnvoll. Hier am Beispiel mit Test von sda am Sonntag um 01:00 Uhr und sdb am Samstag um 05:00 Uhr
/dev/sda -a -s L/../../7/01 -m MONITORING@EXAMPLE.COM
/dev/sdb -a -s L/../../6/05 -m MONITORING@EXAMPLE.COM
Jetzt noch den smartd Daemon starten und einen Blick in den Syslog riskieren:
Jan 11 12:00:42 server42 systemd[1]: Started Self Monitoring and Reporting Technology (SMART) Daemon. Jan 11 12:00:42 server42 smartd[2906]: smartd 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-59-generic] (local build) Jan 11 12:00:42 server42 smartd[2906]: Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org Jan 11 12:00:42 server42 smartd[2906]: Opened configuration file /etc/smartd.conf Jan 11 12:00:42 server42 smartd[2906]: Configuration file /etc/smartd.conf parsed. Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sda, type changed from 'scsi' to 'sat' Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sda [SAT], opened Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sda [SAT], WDC WD30EZRX[...], S/N:WD-[...], WWN:5-[...], FW:[...], 3.00 TB Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sda [SAT], found in smartd database: Western Digital Green Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sda [SAT], is SMART capable. Adding to "monitor" list. Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sda [SAT], state read from /var/lib/smartmontools/smartd.WDC_[...].ata.state Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sdb, type changed from 'scsi' to 'sat' Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sdb [SAT], opened Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sdb [SAT], WDC WD30EZRX[...], S/N:WD-[...], WWN:5-[...], FW:[...], 3.00 TB Jan 11 12:00:42 server42 smartd[2906]: Device: /dev/sdb [SAT], found in smartd database: Western Digital Green Jan 11 12:00:43 server42 smartd[2906]: Device: /dev/sdb [SAT], is SMART capable. Adding to "monitor" list. Jan 11 12:00:43 server42 smartd[2906]: Device: /dev/sdb [SAT], state read from /var/lib/smartmontools/smartd.WDC_[...].ata.state Jan 11 12:00:43 server42 smartd[2906]: Monitoring 2 ATA and 0 SCSI devices Jan 11 12:00:43 server42 smartd[2906]: Device: /dev/sda [SAT], state written to /var/lib/smartmontools/smartd.WDC_[...].ata.state Jan 11 12:00:43 server42 smartd[2906]: Device: /dev/sdb [SAT], state written to /var/lib/smartmontools/smartd.WDC_[...].ata.state
Es ist in dem Zusammenhang wichtig, den Mailversand vom System bis zum Empfänger zu testen. Sonst kommen die SMART Fehlermeldungen nie an… 🙂
OpenBSD: Deutsche Umlaute in der Konsole anzeigen
Juli 2011
Wenn die Systemkonsole auf einem OpenBSD System keine Umlaute anzeigt kann man diese Einträge in der .inputrc setzen.
set meta-flags on
set convert-meta off
set output-meta on
Nach dem erneuten einloggen werden auch Umlaute korrekt angezeigt.
OpenBSD: Eine XDMCP Verbindung zu einem X11 Server aufbauen
Januar 2012
Um die Netzwerkfähigkeit von X11 mit XDMCP bei einem OpenBSD System auszunutzen, muss die PF Firewall auf dem System erst freigeschaltet werden.
In der Standardinstalltion von OpenBSD werden die einkommenden Ports 6000 bis 6010 blockiert. Diese Ports werden für XDMCP unbedingt benötigt.
Zum Deaktivieren in /etc/pf.conf die Firewallzeile mit dem Block von Port6000:6010 auskommentieren
# By default, do not permit remote connections to X11
# but we need it here
#block in on ! lo0 proto tcp to port 6000:6010
X11: Tastaturbelegung auf Deutsch umschalten
Januar 2012
Um innerhalb einer X11 Sitzung das Tastaturschema auf Deutsch umzustellen, kann der Befehl
setxkbmap de
in einem Terminal genutzt werden.
Zwei Bildschirme mit X11 Boardmitteln anordnen
03.2013
Zwei Monitore lassen sich unter X11 mit einem Kommando einfach anordnen.
Als erstes kann man mit xrandr nachsehen, wie die Bildschirme im System benannt sind.
Im Beispiel zwei 19″ Monitore 5:4 mit 1280×1024 Pixel Auflösung als DVI1 und VGA1.
xrandr | grep connected
LVDS1 connected (normal left inverted right x axis y axis)
VGA1 connected 1280x1024+1280+0 (normal left inverted right x axis y axis) 376mm x 301mm
DVI1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
Das folgende xrandr Kommando richtet die Bildschirme entsprechend der Aufstellung an:
xrandr --output DVI1 --mode 1280x1024 --output VGA1 --right-of DVI1 --mode 1280x1024
Debian – Schriftart, Codesatz und Kodierung neu konfigurieren
10.2014
Mit
dpkg-reconfigure console-setup
wird die Konsole konfiguriert.
Schriftart, Codesatz und Kodierung lassen sich einstellen.
Zwischenstand von dd Tool abrufen
02.2016
Das dd Kopierwerkzeug ist im Betrieb ziemlich schweigsam, wenn noch eine Kopieraktion läuft.
Man kann dem dd Prozess das USR1 Signal senden. Dann generiert dd einen Zwischenstand.
Hier läuft in einem Terminal der dd und kopiert Platte A auf Platte B.
# dd if=/dev/sda of=/dev/sdb 4039201+0 records in 4039201+0 records out 2068070912 bytes (2.1 GB) copied, 21.5034 s, 96.2 MB/s 10703521+0 records in 10703521+0 records out 5480202752 bytes (5.5 GB) copied, 60.1204 s, 91.2 MB/s 55824153+0 records in 55824153+0 records out 28581966336 bytes (29 GB) copied, 323.235 s, 88.4 MB/s 174301025+0 records in 174301025+0 records out 89242124800 bytes (89 GB) copied, 993.46 s, 89.8 MB/s 250069680+0 records in 250069680+0 records out 128035676160 bytes (128 GB) copied, 1423.65 s, 89.9 MB/s #
In einem zweiten Terminal werden die entsprechenden Signale per kill an dd gesendet.
In diesem Beispiel hat der dd Prozess die Prozess ID 3911 bekommen.
# ps -ef | grep dd
root 3901 2616 29 10:44 tty1 00:00:03 dd if=/dev/sda of=/dev/sdb
root 3911 2804 0 10:45 pts/1 00:00:00 grep --color=auto dd
# kill -SIGUSR1 3901
# kill -SIGUSR1 3901
# kill -SIGUSR1 3901
# kill -SIGUSR1 3901
#
Jeder Aufruf von kill -SIGUSR1 3901 führt im anderen Terminal zur Ausgabe des Zwischenstands.
tar Archiv direkt auf ein Remote-System schreiben
02.2016
Mit dem Archivwerkzeug tar können Archive auch direkt auf entfernte Server erstellt werden.
Wenn ssh-agent und SSH Keys eingesetzt werden, ist das sogar passwortlos möglich und damit voll automatisierbar.
Ein (gzip komprimiertes) tar Archiv auf einem entfernten System erstellen
tar czf - /var/www | ssh root@remoteserver "cat > /backup/wwwdata.tar.gz"
Ein (gzip komprimiertes) tar Archiv auf Band schreiben und vorher zurück spulen
tar czf - /data | ssh root@tapeserver "cat > /dev/nst0"
Ein tar Archiv zurücksichern
Achtung, die Pfaderzeugung im tar Archiv ist sehr wichtig und muss beachtet werden (Removing leading ‚/‘ from member names)
cd /
ssh root@server23 "cat /backup/wwwdata.tar.gz" | tar xzf -
Eine Verzeichnisstruktur (inkl aller Dateirechte, etc.) über tar und ssh duplizieren
tar czf - /inputdir | ssh user@otherhost "tar xzf - -C /outputdir"