Um Sicherungen ganzer Partitionen unter Solaris durchzuführen, nutzt man die von SUN mitgelieferten Programme ufsdump und ufsrestore. Eine Sicherung legt man somit mit ufsdump Optionen Ziel Quelle an, wobei die Optionen unter anderem folgende sein können:
Im folgenden Beispiel wird von /dev/md/dsk/d6 (gemounted unter /usr) unseres Servers (ciamissp7) auf dem Server 172.31.33.60 (sysadmp1) im Verzeichnis /backup/ciamissp7 ein Vollbackup mit dem Namen usr_010816 angelegt und verfiziert:
ufsdump S /dev/md/dsk/d6 ufsdump 0uvf 172.31.33.60:/backup/ciamissp7/usr_010816 /dev/md/dsk/d6
Zu beachten ist dabei, daß die Datei usr_010816 auf dem entfernten Server vorhanden sein muß, da sonst die komplette Sicherung fehlschlägt.
Außerdem müssen auf dem entfernten Server die Ports 512-514 (exec, login, shell) geöffnet und ein Eintrag in /.rhosts mit dem Hostnamen des zu sichernden Rechners vorhanden sein, da der Sicherungsvorgang per rsh vonstatten geht.
Man kann die beiden Programme auch verwenden, um eine Platte auf eine andere partitionsweise zu kopieren.
Das passiert dann folgendermaßen:
ufsdump 0f - /dev/rdsk/c0t0d0s7 | (cd /home;ufsrestore xf -)
Hier wurde nun /dev/rdsk/c0t0d0s7 in das Verzeichnis /home „kopiert“.
Um nach einer Neuinstallation eines Servers z.B. die vorher gesicherten Home-Verzeichnisse der Nutzer wieder zur Verfügung zu haben gibt es 2 Vorgehensweisen.
ufsrestore über Netzwerk
Dabei müssen die gleichen Voraussetzungen gelten wie bei einer Sicherung (offene Ports, Eintrag in .rhosts)
Dann setzt man den folgenden Befehl ab:
ufsrestore xf 172.31.33.60:/backup/ciamissp7/home_010816
interaktives ufsrestore auf dem Server
Hier kopiert man die Sicherungsdatei auf den Server in ein Verzeichnis seiner Wahl, welches genug Platz bietet und auch bei einem eventuellen Reboot nicht bereinigt wird 1)
Nun hat man 2 Möglichkeiten, die komplette Rücksicherung oder die Rücksicherung einiger Dateien und Verzeichnisse auf interaktiver Basis.
Zu beachten ist, daß man vor der Rücksicherung in das gewünschte Verzeichnis wechseln muß, da die Verzeichnisstruktur in der Sicherungsdatei relativ und nicht absolut ist.
Für die komplette Rücksicherung setzt man folgende Befehle ab:
cd /export/home ufsrestore xf /var/tmp/home_010816
Für die Rücksicherung einiger Dateien setzt man folgende Befehle ab:
cd /export/home ufsrestore if /var/tmp/home_010816
In der hier erscheinenden Subshell kann man sich über help oder ? die verfügbaren Befehle anzeigen lassen.
Sollen Solarispartitionen auf einen Linuxserver gesichert werden, sollte man auf jeden Fall nachschauen, daß der Automounter von Solaris nicht dazwischen funkt.
Das kann passieren, wenn auf dem Linuxserver die Dumps in einem Verzeichnis unterhalb von /home gespeichert werden.
Dann versucht der Automounter nämlich diese lokal auf /home umzubiegen.
Deshalb sollten die folgenden Vorsichtsmaßnahmen getroffen werden. Zuerst wird nachgeschaut, ob ein automount-Prozess läuft.
Danach läßt man sich die Dateien auto_home und auto_master im Verzeichnis /etc anzeigen. Sind dort nicht auskommentierte Einträge der Art „+auto_home“ oder „/home auto_home -nobrowse“ vorhanden, werden die Skripte rpc und autofs im Verzeichnis /etc/init.d gestartet.2)
Danach werden die beiden Dateien auto_home und auto_master editiert und alles auskommentiert. Danach wird der Befehl automount -v abgesetzt, welcher jetzt sowas anzeigen sollte wie „automount: no mounts„
Jetzt sollte man noch schauen, ob home in /etc/mnttab auftaucht 3) und die Skripte wieder stoppen:
cd /etc ps -ef|grep mount cat auto_* /etc/init.d/rpc start && /etc/init.d/autofs start vi auto_* # alles auskommentieren automount -v grep home mnttab /etc/init.d/rpc stop && /etc/init.d/autofs stop
Um farbige Textausgaben mit print in Shellskripten zu erzeugen, muß man die folgenden Escape-Sequenzen vor bzw. hinter die auszugebenen Texte stellen:
"\033[m" ist immer Endtag "\033[1m" fetter Text "\033[4m" unterstrichener Text "\033[7m" inverser Text "\033[30m" schwarzer Text "\033[31m" dunkelroter Text "\033[32m" dunkelgruener Text "\033[33m" dunkelgelber Text "\033[34m" blauer Text "\033[35m" lila Text "\033[36m" hellblauer Text "\033[37m" weisser Text "\033[40m" schwarzer Text auf schwarzem Hintergrund "\033[41m" schwarzer Text auf dunkelrotem Hintergrund "\033[42m" schwarzer Text auf dunkelgruenem Hintergrund "\033[43m" schwarzer Text auf dunkelgelbem Hintergrund "\033[44m" schwarzer Text auf blauem Hintergrund "\033[45m" schwarzer Text auf lila Hintergrund "\033[46m" schwarzer Text auf hellblauem Hintergrund "\033[47m" schwarzer Text auf weissem Hintergrund "\033[90m" grauer Text "\033[91m" roter Text "\033[92m" gruener Text "\033[93m" gelber Text "\033[94m" blauer Text "\033[95m" lila Text "\033[96m" hellblauer Text "\033[97m" weisser Text "\033[100m" schwarzer Text auf grauem Hintergrund "\033[101m" schwarzer Text auf rotem Hintergrund "\033[102m" schwarzer Text auf gruenem Hintergrund "\033[103m" schwarzer Text auf gelbem Hintergrund "\033[104m" schwarzer Text auf blauem Hintergrund "\033[105m" schwarzer Text auf lila Hintergrund "\033[106m" schwarzer Text auf hellblauem Hintergrund "\033[107m" schwarzer Text auf weissem Hintergrund
Die Zeile printf „033[91mYEAH, really funny …\033[m\n“ würde dementspechend so aussehen: <html><font color=„red“>YEAH, really funny …</font></html>
Mit dem Tool saveqmgr kann man die Konfiguration eines IBM-Websphere-MQ Queuemanagers im Textformat sichern.
Das ist zum Beispiel sinnvoll, wenn man größere Änderungen an der Konfiguration vornehmen möchte, für Backups der Konfiguration oder wenn man einen Queuemanager klonen möchte.
Die Syntax lautet wie folgt:
./saveqmgr [options], where [options] are one or more of the following optional switches -h | -? : gives help (this) -v version : determines which version of MQSC to generate and can be '2','5','51','52','53' or '6' The default is to generate mqsc at the version of the connected queue manager Note: see read.me for more information on this flag -m lqmgr : is the name of the local qmgr to connect (MQCONN) -r rqmgr : is the name of the remote qmgr (XMITQ name) -f [file] : allows the output file to be named, if -f is not specified, the output file defaults to SAVEQMGR.TST if -f is specified without a filename, it is named "qmgrname".MQS. -o : specifies to replace (overwrite) the output file if the -o flag is not specified, then the default is to append if the file exists (on iSeries, *REPLACE,*APPEND must be specified after the -o flag) -F [file] : behaves the same as -f except no header line is created in the output file (and CURDEPTH, ALTDATE and ALTTIME are not reported) -c : directs output to STDOUT and overrides use of -f flag -s : suppress creation of objects that begin with "SYSTEM*" -R [flags] : create RESET CHANNEL commands flags can be any combination of the follow to create RESET for that channel type: s (SENDER) v (SERVER) r (RECEIVER) q (REQUESTER) c (CLUSSDR) d (CLUSRCVR) the default is to create RESET commands for all the above channel types -p : Create 'local queue' definitions from PERMDYN queues. -i : Ignore 'pcf' error codes 'damaged object' 'unknown object'. Sets RetCode to WARNING if this error encountered. -q : Quiet mode, do not issue warning about unknown PCF attributes -1 : generate entire DEFINE command on one line (which does NOT include ALTDATE etc) -2 : on a 2nd line, generate the DEFINE as a comment (which DOES include ALTDATE etc) -z [file] : create 'security definitions (like amqoamd -s)' in file 'file'(only >=V6) if not specified, defaults to "qmgrname".AUT -Z [file}: same as -z only without the header line
Beispiel:
saveqmgr -m <qmgr> -c >> <outputfile> saveqmgr -m GATEWT01 -c >> GATEWT01.mq.200703300912.def saveqmgr -m <qmgr> -f <outputfile> saveqmgr -m GATEWT01 -f GATEWT01.mq.200703300912.def
Die obigen Beispiele sichern die Konfiguration des Queuemanagers GATEWT01 in die Textdatei GATEWT01.mq.200703300912.def mit dem Unterschied, daß Beispiel 2 direkt eine Datei anlegt und Beispiel 1 auf STDOUT schreibt und diese Ausgabe umgeleitet wird.
Um sich Nachrichten anzeigen zu lassen, die in einer Queue stehen oder gar diese zu löschen, benutzt man das Tool qload.
Außerdem kann man mit diesem Programm auch Nachrichten in eine Queue scheiben, die Nachrichten einer Queue in eine andere kopieren oder verschieben.
Die Syntax lautet hier wie folgt:
Usage: QLOAD <Optional flags as below> [-c <CCSID>[:X'Encoding'] Convert] [-C [A][I][a][i][d][n] Context] A Set all context (default) I Set identity context a Pass all context i Pass identity context d Default context n No context [-d <Display Options>] a Add ASCII columns to HEX file A Write ASCII lines rather than HEX i Write message index [-f <File Name>] [-F <File Name> (forcing overwrite)] [-i <Input Queue> (Browse)] [-I <Input Queue> (Get)] [-l <library name> e.g.mqm or mqic32] [-m <Queue Manager name>] [-o <Output Queue>] [-q Quiet] [-r <Message Range>] x Message x only x..y Message x to message y x#y y messages starting at message x #x First x messages [-s <Ascii Search String>] [-S <Ascii Not Search String>] [-e <Ebcdic Search String>] [-E <Ebcdic Not Search String>] [-x <Hex Search String>] [-X <Hex Not Search String>]
Beispiel:
qload -m <qmgr> -i <queue> -f <outputfile> qload -m <qmgr> -I <queue> -f <outputfile>
Im obigen Beispiel werden Nachrichten aus einer Queue in eine Textdatei geschrieben, einmal im „Browse“-Modus (-i) und einmal im „Get“-Modus (-I).
qload -m <qmgr> -o <queue> -f <inputfile>
Hier werden Nachrichten aus einer Textdatei in die Queue geschrieben.
qload -m <qmgr> -i <queue> -o <queue> qload -m <qmgr> -I <queue> -o <queue>
Hier werden Nachrichten von einer Queue in eine andere kopiert (-i) bzw. bewegt (-I).
Wenn man Nachrichten testweise in eine Queue schreiben will, kann man dazu das Tool amqsput benutzen, welches von IBM mit MQ Series mitgeliefert wird und sich mit anderen nützlichen Utilities im Verzeichnis /opt/mqm/samp/bin befindet. 4)
Das Programm wird mit den Parametern Queuename und Queuemanagername aufgerufen und verbindet sich dann an die Queue.
Nun kann man zeilenweise Nachrichten schreiben und jede Nachricht mit einem <ENTER> abschließen.
$> /opt/mqm/samp/bin/amqsput MEINE.TEST.QUEUE TESTQM01 Sample AMQSPUT0 start target queue is MEINE.TEST.QUEUE NACHRICHT1 wird geschrieben <ENTER> NACHRICHT2 wird geschrieben <ENTER> <CTRL+D> $>
WICHTIG : Die Eingabe wird mit <CTRL+D> beendet. Benutzt man <CTRL+C> bricht das Programm einfach nur ab.
Wenn man eine Queue löschen will, geht man folgendermaßen vor.
ssh server su - mqm runmqsc <QMGR> DELETE QLOCAL(<QUEUENAME>) PURGE DELETE QREMOTE(<QUEUENAME>)
Manchmal kann es natürlich vorkommen, daß die Queue noch benutzt wird und sie somit nicht gelöscht werden kann.
Dann gibt es 2 Möglichkeiten:
1. Man setzt die Parameter für GET und PUT auf DISABLED. Dann können die Prozesse, welche diese Queue benutzen, nicht mehr darauf zugreifen und man kann die Queue gefahrlos löschen.
runmqsc <QMGR> ALTER QLOCAL(<QUEUENAME>) GET(DISABLED) PUT(DISABLED)
2. Man sucht sich die PID des Prozesses raus und stoppt diesen dann
runmqsc <QMGR> DISPLAY QSTATUS(<QUEUENAME>) TYPE(HANDLE) ALL
In der Ausgabe ist nach PID zu suchen und mit einem ps -ef|grep <PID> bekommt man den Prozess heraus. Nun muß man diesen nur noch stoppen oder mit einem kill <PID> abschießen.
Das Programm der Wahl heißt hier alien.
Mit diesem Programm lassen sich auf einfache Art und Weise .deb-Dateien aus .rpm-Dateien erstellen.
Die wichtigsten Kommandozeilenparameter sind hier aufgeführt:
--generate Unpack, but do not generate a new package. --veryverbose Be verbose, and also display output of run commands. --fixperms Munge/fix permissions and owners. --keep-version Do not change version of generated package. --scripts Include scripts in package.
Solchermaßen gewappnet kann man nun ans Konvertieren gehen:
alien --veryverbose --fixperms --keep-version --scripts <RPMPACKAGE>.rpm
Damit wird das <RPMPACKAGE>.deb erstellt, welches man dann mit dpkg einspielen kann.
Sollten bei der Installation Probleme der Art auftauchen, daß z.B. einige Dateien nicht gefunden werden, kann man mit dem folgenden Befehl das RPM-Paket auspacken und in einem Unterverzeichnis ablegen:
alien --generate --veryverbose --fixperms --keep-version --scripts <RPMPACKAGE>.rpm
Wenn man Linuxrechner in einem Rechenzentrum betreibt und sich die wunderschönen Bootmeldungen live anschauen möchte, braucht man entweder einen Monitor und einen Stuhl, um sich beim heimeligen Rauschen der Lüfter eine Erkältung oder einen Tinnitus zu holen oder aber man benötigt Zugriff auf die serielle Konsole.
Da die meisten neuen Distributionen heutzutage mit GRUB als Standardbootloader ausgeliefert werden, werde ich die Einrichtung der Konsolenverbindung anhand von GRUB betrachten.
In den folgenden Dateien müssen dazu Änderungen vorgenommen werden: /boot/grub/menu.lst, /etc/inittab, /etc/securetty.
Betrachten wir zunächst /boot/grub/menu.lst
Dort müssen folgende Änderungen vorgenommen werden:
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console
Außerdem muß
# kopt=root=/dev/hda1 ro
geändert werden in
kopt=root=/dev/hda1 ro console=tty0 console=ttyS0,9600n8
Unter Debian sollte man dann noch update-grub ausführen. In /etc/inittab muß die folgende Zeile aktiviert werden:
T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
In /etc/securetty muß die folgende Zeile aktiviert werden:
ttyS0
Abschließend muß noch im BIOS eingestellt werden, daß eine serielle Konsole benutzt werden soll.
Um unter Oracle einen Tablespace zu vergrößern, loggt man sich als der User auf dem Server ein, unter dem Oracle läuft (meistens oracle) und startet eine Datenbanksession mit sqlplus:
ssh oracle@server sqlplus "/as sysdba" alter database datafile '/pfad/zur/tablespace/datei.dbf' resize 500M; quit
Im obigen Beispiel wird datei.dbf auf eine Größe von 500 MB gebracht. Zu beachten ist dabei, daß der Dateiname mit absolutem Pfad angegeben wird und in Single Quotes stehen muß. Außerdem ist als Größenangabe die neue absolute Größe anzugeben.
ssh root@server lvextend -L +20G /dev/vg0/home xfs_growfs /dev/vg0/home
Im obigen Beispiel wird das Logical Volume, welches /home beinhaltet um 20 GB vergößert.
Wenn man unter Linux versehentlich eine Datei gelöscht hat, kann man mit etwas Glück wenigstens noch Fragmente dieser Datei wiederherstellen.
Dazu braucht man nur grep und einen Suchbegriff, welcher in der gelöschten Datei vorkommt:
grep -a -B200 -A200 "[Suchbegriff]" /dev/hda3 >recover.txt
Dieser Aufruf sichert alle auffindbaren Vorkommnisse von [Suchbegriff] auf der Partition /dev/hda3 mit vorangestellten (-B) sowie nachfolgenden (-A) 200 Zeilen in die Datei recover.txt im aktuellen Verzeichnis.
An dieser Stelle werden meines Erachtens wichtige Befehle für HP-UX vorgestellt.
/usr/sbin/cleanup
Dieses Programm räumt die Patchdatenbank auf, welche sich unter /var/adm/sw/save befindet um Plattenplatz freizuschaufeln.
Syntax:
usage: /usr/sbin/cleanup [-p|-n] -c <number> /usr/sbin/cleanup [-p|-n] -d <depot> [-o 10|11] [-e true|false] /usr/sbin/cleanup [-p|-n] -i /usr/sbin/cleanup [-p|-n] -s
Beispiel:
cleanup -p -c 3 cleanup -n -c 3
Die beiden Befehle im obigen Beispiel haben folgende Wirkungsweise:
Der folgende Befehl zeigt an, welche Applikation auf welchem Port hängt.
lsof -i -P
Der folgende Befehl kann einen Hinweis liefern, ob auf dem Server ein Rootkit läuft oder nicht. 5)
ls -d /proc/[0-9]*|wc -l && ps ax -o pid= -o comm=|wc -l
Der folgende Befehl packt alle Dateien in ein TAR-Archiv außer denen, die in excludefile stehen.
tar cvfX archiv.tar excludefile filelist