Automatisierung mit Kommando-Skripts

Ein Kommando-Skript ist eine Sequenz von FTP.COM Kommandos, welche sich in einer Textdatei befindet. Jede Zeile darf genau ein Kommndo mit zulässigen Parametern enthalten. Es sind alle Kommandos laut Befehlsübersicht ohne Ausnahme erlaubt. Beginnt eine Zeile mit einem Leerzeichen oder einem Semikolon, wird sie als Kommentarzeile interpretiert. Derartige Zeilen werden zwar auf dem Bildschirm angezeigt aber ihr Inhalt nach dem Kommentarzeichen wird ignoriert. Eine Zeile endet mit einem Zeilenvorschub und sollte die Länge von 316 Zeichen nicht überschreiten.

Es wird empfohlen, den Standard-Dateityp "FTP" für FTP-Kommando-Skripts zu verwenden. Das Programm benutzt ihn automatisch, wenn beim Laden, Speichern oder Ausführen von Skripts kein Dateityp angegeben wurde, so dass man sich die Eingabe dann sparen kann.

Die Skriptdatei wird Zeile für Zeile verarbeitet, bis das Dateiende erreicht wird oder ein QUIT Kommando FTP.COM und damit auch die Skriptverarbeitung beendet. Wenn ein Skript die Programmsteuerung übernommen hat, werden nahezu alle interaktiven Unterbrechungen deaktiviert, wie beispielsweise die seitenweise Ausgabe von langen Verzeichnislisten. Gibt man allerdings im Skript ein Kommando ohne Parameter an und dieses Kommando erfordert zwingend die Angabe eines Parameters, wird dessen Eingabe auch angefordert. Man sollte dann keine fehlerhaften Parameter eingeben, da das Skript nur temporär angehalten und sofort nach Eingabe des Parameters weiter abgearbeitet wird.

Mit Hilfe des QUIT-Kommandos kann man die Dienste von FTP.COM auch während der Ausführung von CP/M Kommando-Dateien (*.SUB) nutzen. Man definiert im FTP-Skript die Transferaufgaben und schliesst dieses Skript dann immer mit dem Kommando QUIT als letztes Kommando ab. In der CP/M Kommando-Datei ruft man FTP.COM mit dem Parameter "-s" und dem Namen der Skriptdatei auf. Nachdem FTP.COM alle Skriptbefehle abgearbeitet hat, wird es durch QUIT automatisch geschlossen und CP/M setzt die Abarbeitung seiner Kommando-Datei mit dem folgenden Befehl fort.

Die Verschachtelung von Skripts ist nicht möglich aber zwei oder mehrere Skripts lassen sich verketten. Wenn das SCRIPT Kommando innerhalb von Skripts mit einem neuen Dateinamen als Parameter verwendet wird, schliesst FTP.COM das gerade laufende Skript und fährt mit der Ausführung des neuen fort. Ruft man die gleiche Skriptdatei noch einmal auf, fuehrt das zu einer Endlosschleife!

Ab Version 1.1 kann eine laufende Skript-Verarbeitung mit der Taste >BRK< bzw. CTRL+C abgebrochen werden, was vom Programm durch die Ausgabe von 2 Tönen quittiert wird.

Die in FTP.COM eingebauten Funktionen helfen bei der Erstellung von Skripts. Bevor man beispielsweise interaktiv Kommando-Sequenzen eingibt, kann man mit dem LOG Befehl eine Protokolldatei öffnen, wo alle Eingaben mitgeschrieben werden. Ein anderer noch einfachererer und schnellerer Weg für zwischendurch ist die Nutzung des HSAVE Kommandos, womit alle vorher eingegebenen Befehle in eine externe Textdatei abgespeichert werden. Diese Dateien kann man anschliessend als Entwurf für ein zukünftiges fertiges Skript verwenden, indem man die Kommandos mit Argumenten bzw. Parametern und ihre Reihenfolge mit Hilfe einer externen Textverarbeitung so lange nachbearbeitet, bis das Skript einsatzfähig ist.

Bereits beim Start von FTP.COM kann man von der Skriptfähigkeit Gebrauch machen, indem man ein Skript mit dem Parameter "-s" übergibt, welches anschliessend sofort ausgeführt wird. Wenn kein anderes Skript übergeben wurde, wird vom Programm ein Standard-Skript mit dem Namen AUTOEXEC.FTP gesucht und ausgeführt, falls vorhanden. Der "-s" Parameter hat immer Vorrang und unterdrückt die Ausführung der AUTOEXEC.FTP. Sie wird auch ignoriert, wenn in der Kommandozeile ein Servername angegeben wurde.

Für eine zentrale Organisation von Skript-Dateien, auch ausserhalb des gerade aktuellen Arbeitsverzeichnisses, gibt es in FTP.COM die Variable "HOME". Sie speichert das Startverzeichnis von FTP.COM und wird bei jedem Aufruf des Programmes von der CP/M-Kommandozeile initialisiert. Man kann dann jederzeit mit dem Kommando "LCD HOME" in das beim Aufruf von FTP.COM gewählte Startverzeichnis zurückgehen. Dadurch wird es möglich, universelle verzeichnisunabhängige Skripts zu schreiben, welche in jedem (Start-)Verzeichnis ohne Änderungen funktionieren.

Ab Version 1.1 findet das Programm bei aktiviertem öffentlichen Zugriff unter ZSDOS/ZDDOS auch die mit dem "Public"-Attribut gekennzeichnete Skripts im Suchpfad, so dass man dort auch diese Möglichkeit nutzen kann, seine Skripte verzeichnisunabhängig zu organisieren.

Nur mit der Hilfe von Skripts ist es möglich, den FTP-Datentransfer vollständig zu automatisieren und ohne Benutzereingaben auszukommen. Wie bereits geschrieben, erhält man nur Zugriff auf das Dateisystem des Servers, wenn man sich erfolgreich mit seinen Benutzerdaten angemeldet hat. Im Skript ist es daher gestattet, die Login-Daten für ein Benutzerkonto unmittelbar nach dem OPEN Befehl zu hinterlegen. An dieser Stelle dürfen keine Leerzeilen oder Kommentarzeilen verwendet werden, alle Daten müssen unmittelbar hintereinander im Skript vorhanden sein:

OPEN ftp.server.domain
USER username
PASS password
ACCT account

Es müssen und sollten nur die Login-Daten angegeben werden, welche der Server für das Benutzerkonto erwartet. Diese Daten werden von FTP.COM nie auf dem Bildschirm angezeigt und erscheinen auch nicht in Protokolldateien. Im Skript sind sie allerdings vorhanden und können von Dritten natürlich auch eingesehen werden, derartige Skripts stellen daher immer ein Sicherheitsrisiko dar.

Es wird dringend empfohlen, jegliche Skripts vor dem produktiven Einsatz mit Dummy-Dateien in RAM-Floppies o.ä. auszuprobieren und auszutesten. Wenn man für gelöschte oder überschriebene Originaldaten kein Backup hat, können diese auch nicht wiederhergestellt werden!

FTP.COM stellt selbst verschiedene Hilfsmittel für die Beobachtung, Kontrolle und Fehlersuche zur Verfügung. Wenn man Fehlern bei der Skriptverarbeitung auf die Spur kommen möchte, sollte man immer die Logfunktion aktivieren und die Protokolldatei mit möglichst vielen Informationen zur Laufzeit des Skripts versorgen. Dazu zählen beispielsweise die Ausgabe des STATUS Kommandos oder die Aktivierung der erweiterten Ausgabe von Serverantworten mit dem VERBOSE Befehl. Die Nutzung von LCD bzw. CD ohne Argument schreibt das aktuelle lokale bzw. entfernte Arbeitsverzeichnis in das Protokoll. Selbst die Ausgabe aller Directory-Kommandos kann man in das Protokoll aufnehmen. Man erhält dann ein detailliertes Bild aller Vorgänge und Systembedingungen, während das Skript läuft. Vermutet man eher Probleme bei der Kommunikation mit dem FTP-Server, kann man den DEBUG Befehl verwenden, welcher die gesendeten Serverbefehle und auch die Antwortkodes der Serverantworten protokolliert.

Wenn man mit FTP-Servern kommuniziert, muss man immer die Besonderheiten des Server-Dateisystems beachten. Ein beliebter Fehler, welcher mir selbst auch immer wieder passiert, ist die Missachtung der Gross- und Kleinschreibung von Datei- bzw. Verzeichnisnamen. CP/M und DOS-/Windows-Anwender müssen das normalerweise nicht beachten. Wenn man allerdings mit Servern kommuniziert, welche unter UNIX verwandten Betriebssystemen laufen, ist das ganz entscheidend. Der Server findet weder eine Datei noch ein Verzeichnis, wenn die Schreibweise nicht exakt übereinstimmt!

Die folgende Abbildung zeigt beispielhaft den o.g. vollautomatischen Ablauf eines Kommando-Skripts von der CP/M-Kommandozeile, über die Anmeldung beim FTP-Server, das Auflisten aller CP/M konformen Dateien mit der Dateimaske CAOS4*.*, das Abmelden beim Server und Schliessen von FTP.COM mit QUIT und die Rückkehr in die CP/M-Kommandozeile:

 

SCRIPT Beispiel