spacer
Homepage | Manual | Forums

Sysresccd-manual-de Eigene Skripte mit Autorun

History

Contents

Überblick zu Autorun

Das Autorun-Feature erlaubt es Ihnen, Skripte beim Start des Systems automatisch ausführen zu lassen. Jedes Autorun-Skript kann eine Aufgabe erledigen. Beispielsweise können Sie ein Backup-Skript schreiben, welches eine Sicherung einer Datenbank anlegt, ein weiteres zur Systemreinigung, ...

Standardmässig können die Autorun-Skripte in das Wurzelverzeichnis der CD, ausserhalb des komprimierten loop-Images (sysrcd.dat), kopiert werden, andere Lokalitäten sind jedoch auch möglich: Disketten, Festplattenpartitionen, Netzwerk-Freigaben, ein Webserver.

Das Skript kann autorun genannt werden (falls es nur eines gibt). Wenn viele Skripte verkettet werden müssen, können diese autorun0, autorun1,... genannt werden. In diesem Fall können aich mehrere Autorun-Skripte beim Start aufgerufen werden. Dies erlaubt die autoruns=-Option beim Start. Beispielsweise können Sie dafür rescuecd autoruns=2,3,4 eingeben.

Wenn Sie Diskette oder Netzwerkfreigaben für Autorun-Dateien nutzen wollen, müssen Sie die Quelle mit der ar_source-Bootoption bekannt geben. Mehr dazu im nächsten Abschnitt.

Autorun wurde für SystemRescueCd-1.0.0 neu geschrieben, sodaß weitere Autorun-Quellen unterstützt werden. Weitere Details zu den Änderungen gibt es auf der News-Seite über Autorun (englisch).

Sie können Autorun für die Ausführung komplett automatisierter Aufgaben benutzen. Dazu gibt es ein eigenes Kapitel unter: [[Sysresccd-manual-en_Manage_remote_windows_linux_servers_using_SystemRescueCd|Verwaltung von entfernten Servern eines Datacenters mit Autorun] (englisch)].

Mögliche Optionen für Autorun

Sie müssen die folgenden Optionen zur Bootzeit an der Kommandozeile benutzen.

  • ar_source=xxx: Speicherort der Autorun. Dies kann das Wurzelverzeichnis einer Partition sein (/dev/sda1), eine NFS-Freigabe (nfs://192.168.1.1:/pfad/zu/skripten), eine Samba-Freigabe (smb://192.168.1.1/pfad/zu/skripten) oder ein http-Verzeichnis (http://192.168.1.1/pfad/zu/skripten).
  • autoruns=[0-9]: Liste der abzuarbeitenden Autorun-Skripte (mit Kommas getrennt). Wenn Sie beispielsweise autoruns=0,2,7 angeben, werden die folgenden Autorun-Skripte ausgeführt: autorun0, autorun2, autorun7. Benutzen Sie autoruns=no um alle Autorun-Skripte mit einer Ziffer auszuschliessen.
  • ar_nowait: Es wird nicht auf eine Tasteneingabe gewartet, nachdem die Skripte abgearbeitet wurden.

Die folgenden Autorun Boot-Optionen wurden mit SystemRescueCd-1.0.0 eingeführt:

  • ar_ignorefail: setzt die Ausführung der Skripte fort, auch wenn ein Skript einen Fehler meldet (Rückgabewert ungleich Null/0)
  • ar_nodel: unterbindet das Löschen der temporären Kopie der Autorun-Skripte in /var/autorun/tmp nach der Ausführung
  • ar_disable: schaltet Autorun komplett aus, das einfache autorun-Skript wird nicht ausgeführt

Zusammenfassung der Skript-Ausführungs Regeln

Beim Start wird eine Liste von möglichen Speicherorten nach dem Vorhandensein von Autorun-Dateien abgesucht. Dies sind, nacheinander:

  • wenn der ar_source= Parameter beim Start übergeben wurde, das Wurzelverzeichnis des übergebenen Speicherortes. Geräte werden nach /mnt/autorun eingehängt, was einen schriebenden Zugriff erlaubt, falls das Gerät nicht schriebgeschützt ist.
    • Diskettenlaufwerk: rescuecd ar_source=/dev/fd0
    • Festplatte: rescuecd ar_source=/dev/hda2 (Autorun-Skripte auf der 2. Partition der 1. IDE-Festplatte)
    • NFS-Freigaben: rescuecd ar_source=nfs-server:/nfs/exportiertes/verzeichnis
    • Samba-Freigaben: rescuecd ar_source=//samba-server/freigabe (empfohlen ohne user/passwort).
    • Http-Server: rescuecd ar_source=http://web-server/adminscripts/ (erfordert SystemRescueCd-1.0.0 oder neuer)
  • das Wurzelverzeichnis der CD-ROM
  • das Heimverzeichnis des Systemverwalters (/root)
  • das Verzeichnis /usr/share/sys.autorun

Wenn Autorun-Dateien an einem dieser Speicherorte gefunden werden, werden diese ausgeführt und der Prozess endet. Die letzten beiden Speicherorte erfordern einen Rebuild der SystemRescueCd und sind nur für die fortgeschrittene Nutzung oder Testszenarien empfohlen.

Für jeden Speicherort gibt es zwei mögliche Modi der Ausführung :

  • einfach : wenn ein Shell-Skript namens autorun gefunden wird, wird es ausgeführt
  • flexibel : wenn autorun# Skripte gefunden werden (# ist eine Zahl von 0-9) und entweder
    • der autoruns= Boot-Parameter wurde NICHT gesetzt, oder enthält #

Beispiel: rescuecd autoruns=0,1,4 In diesem Beispiel werden nur die Skripte autorun0, autorun1 oder autorun4, falls vorhanden, ausgeführt. Andere Skripte wie autorun2, autorun3 und autorun5 werden ignoriert, danach werden berechtigte Skripte in alphabetischer Reihenfolge ausgeführt. Wann immer ein Skript einen Rückgabewert ungleich Null/0 liefert, hält die Ausführung an und die nachfolgenden Skripte werden nicht ausgeführt. Sie können die Ausführung jedlicher "autorun#" mit dem Boot-Parameter autorun= ohne Zahl verhindern. Beispiel: autoruns=no. Dies hat keine Auswirkung auf das autorun-Skript.

Obwohl es möglich wäre, beide (autorun und autorun#-Skripte) zu verwenden, sollte das vermieden werden.

Das Skript kann ein beliebiges, gültiges Shell-Skript sein. Perl, python, ... usw. Skripte werden zur Zeit noch nicht unterstützt. Windows Zeilenende-Zeichen sind übersetzt, damit Shell-Skripte, die mit einem MS-Editor geschrieben wurden, laufen können.

Beispiele für Autorun-Skripte

#!/bin/bash
(
  ifconfig eth0 | head -n 3
  fdisk -l /dev/hda
) | tee -a /mnt/autorun/report
sync
exit 0

Bei diesem Skript gehen wir davon aus, daß beim Start das Diskettenlaufwerk mit dem Boot-Parameter ar_source=fd0 als Quelle für autorun angegeben wurde. Es schreibt Informationen zur Netzwerkschnittstelle eth0 und Festplatten-Partitionen in eine Datei namens report in das Verzeichnis /mnt/autorun/ (welches bei unserer Prämisse das Diskettenlaufwerk ist). Im BIOS muss das CD-ROM Laufwerk als erstes Startlaufwerk eingetragen sein, die Diskette muss beschreibbar und CD und Diskette müssen zur Startzeit eingelegt sein. Der Parameter -a nach dem Befehl tee veranlasst, daß die Datei nicht überschrieben, sondern das Ergebis immer angehängt wird (append).

Wenn das Netzwerk zur Startzeit automatisch konfiguriert wird (DHCP), können Sie auch Informationen von einer NFS- oder Samba-Freigabe erhalten.

Nicht vergessen, den Speicherort der von Autorun beim Start zu übergeben. Für ein über NFS freigegebenes, beschreibbares Verzeichnis namens /nfs/backup auf dem Host myserver, müssen Sie folgendes auf der Befehlszeile der SystemRescueCd angeben:

  • rescuecd ar_source=nfs://myserver:/nfs/backup

und in das freigegebene Verzeichnis ein Autorun-Skript wie das folgende stellen :

#!/bin/bash
date=$(date +%Y%m%d)
cat /dev/hda | gzip > /mnt/autorun/$date.hda.gz && exit 0
echo $date hda Backup-Fehler
exit 1

Wenn genügend Platz auf der NFS-Freigabe vorhanden ist, wird dort ein komprimiertes Abbild des ersten IDE-Laufwerkes abgelegt. Achten Sie auf eine eventuell vorhandene 2GB Größenbeschränkung beim Kopieren über das Netzwerk oder auf ein FAT-Dateisystem.

Sie müssen sicherstellen, daß die Namensauflösung funktioniert, wenn Sie einen NFS-Server statt mit seiner IP-Adresse mit dessen Namen ansteuern wollen.

spacer