Mit diesem Programm wird das KC85 System nun "offiziell" internetfähig, wenn ein M052 vorhanden ist. Ein damit ausgestatteter KC kann Dateien in der CP/M Betriebsart ohne fremde Hilfe weltweit übertragen und der PC kann ausgeschaltet bleiben. Der leistungsfähige Terminal-Client für das "File Transfer Protocol" bietet CP/M Anwendern die gleichen Möglichkeiten wie äquivalente PC-Programme.

Vorwort

Mit der Umsetzung des FTP-Protokolls in ein gebrauchsfertiges Programm für die KCNet-Schnittstelle löse ich mein letztes Versprechen ein und ermögliche den CP/M-Anwendern u.a. die unkomplizierte Nutzung des Internets für den Datenaustausch.

Natürlich lässt sich FTP.COM auch im heimischen Netzwerk einsetzen und kann damit das vorhandene TFTP-Programm weitestgehend ablösen. Es gibt allerdings einen wesentlichen Unterschied, denn TFTP.COM kann gleichzeitig als Server und Client arbeiten. Daher kann ein KC als TFTP-Server selbst Daten im Netzwerk bereitstellen - das geht mit FTP.COM nicht.

Ein FTP Programm für den Endanwender implementiert üblicherweise nur Client-Funktionen. Man benötigt daher für den Datentransfer per FTP im Heimnetzwerk immer einen FTP-Server, welcher in Eigenregie bereitgestellt und administriert werden muss.

FTP.COM ist daher primär für den Datenaustausch mit Servern ausserhalb des eigenen Netzwerkes gedacht. Der FTP-Server übernimmt die Funktion eines autonomen Dateiservers für die Daten und Programme des KC. Er läuft permanent unter einem beliebigen Betriebssystem und kann sich irgendwo befinden. Mit Hilfe von FTP.COM nutzt man seine Dienste bei Bedarf und lädt Daten hoch bzw. herunter. Wenn er über das Internet erreicht werden kann, stehen die Daten damit ständig anderen Anwendern zur Verfügung, auch wenn der eigene KC ausgeschaltet ist.

Das FTP-Protokoll ist wesentlich komfortabler und umfangreicher als TFTP. Man kann mit dem Dateisystem des Servers nahezu genauso arbeiten, wie mit lokalen Datenträgern. Daher bietet es sich natürlich auch für andere Zwecke an. FTP.COM soll bei mir beispielsweise zukünftig für die Datensicherung auf dem Netzwerkserver eingesetzt werden. Das Programm wurde deshalb mit einigen Extras versehen, damit sich solche umfangreichen und langwierigen Vorgänge automatisieren und kontrollieren lassen.

Mit FTP.COM kann sich der "kleine 8-Bit-PC" nahtlos in (m)eine vorhandene Netzwerkstruktur einordnen und wird genau wie andere Teilnehmer gleichberechtigt behandelt. Der KC85 verliert damit seinen "Exotenstatus", was Netzwerk und Internet betrifft und für mich ist so auch das wichtigste Kernziel des TCP/IP-Projektes erfüllt.

 

Einführung

FTP.COM ist ein vollwertiges CP/M-Terminalprogramm für den Datenaustausch in lokalen Netzwerken oder im Internet. Es implementiert das File Transfer Protocol in einer CP/M-Umgebung, welches zum Kopieren von Dateien von einem Host zu einem anderen über ein TCP/IP-basiertes Netzwerk verwendet wird. FTP benutzt das Internet Transmission Control Protocol (TCP) für den Transport der Daten.

Die aktuelle Spezifikation von FTP wird in RFC 959 beschrieben. Der CP/M-Client unterstützt alle Kommandos, welche in diesem RFC definiert werden, ausser SMNT, REIN, STOU, APPE, ALLO und REST. Der Transfer von Daten ist beschränkt auf die Datenstruktur "file-structure", den Übertragungsmodus "stream-mode" und die beiden Datentypen "ASCII TYPE" und "IMAGE TYPE" (binär).

Das Programm berücksichtigt die in RFC 1579 vorgeschlagene Änderung des Verhaltens von FTP-Clients. Standardmässig werden Datenverbindungen vom Client zum Server passiv geöffnet, das aktive Herstellen einer Datenverbindung steht natürlich auch zur Verfügung.

Zusätzlich unterstützt FTP.COM verschiedene optionale Erweiterungen des FTP-Protokolls:

  • FEAT und OPTS (RFC 2389)
  • LANG (RFC 2640)
  • MDTM und SIZE (RFC 3659)
  • MFMT und MFCT (draft-somers-ftp-mfxx-04).

Das CP/M-Programm verfügt über die Standard-Funktionalitäten von vergleichbaren FTP-Programmen anderer Betriebssysteme. Es ist in der Lage, auf Wunsch seine Aktionen und die Resultate in einer Protokoll-Datei aufzuzeichnen und es kann auch mit Hilfe von Kommando-Skripts voll automatisiert werden.

Die Schnittstelle für den Bediener bildet eine sehr leistungsfähige Kommandozeile, bestehend aus 50 Programm-Befehlen. Mit der eingebauten Hilfefunktion kann für jeden Befehl eine kurze Information angezeigt werden. Eingegebene (Teil-)Kommandos können automatisch vervollständigt werden. Wenn in Abhängigkeit von der Eingabe mehr als ein Kommando möglich ist, zeigt das Programm die verbleibenden Möglichkeiten selektiv an. Die Kommandozeile hat ein eingebautes "Gedächtnis", womit man in der Lage ist, rückwärts bzw. vorwärts durch zuvor eingegebene Befehle zu blättern, diese zu verändern und wiederholt auszuführen. Die gesamte Kommando-Historie kann in eine externe (Text-)Datei abgespeichert bzw. komplett durch den Inhalt einer externen (Text-)Datei ersetzt werden.

Bei der Nutzung von Kommandos, welche gleichzeitig auf mehrere Dateien angewendet werden können, ist die Benutzung der Platzhalterzeichen "*" und/oder "?" für die Auswahl von Dateigruppen möglich. Das Programm hat für die Verarbeitung beliebiger Verzeichnisinhalte von FTP-Servern einen automatischen 8.3-Filter, welcher die Kompatibilität mit dem CP/M-Dateisystem sicherstellt und bei nachfolgenden Aktionen die störungsfreie Ausführung gewährleistet. Das eingebaute TYPE Kommando zeigt den Inhalt von Server-Dateien ohne lokale Ablage im Dateisystem direkt auf dem Bildschirm an. Beim Übertragen von Daten können bereits vorhandene Dateien auf der jeweils anderen Seite automatisch bzw. interaktiv übersprungen oder überschrieben werden.

Standardmässig zeigt das Programm nur ausgewählte Erfolgsmeldungen oder Fehlermeldungen nach Aktionen an. Für die vollständige Anzeige aller Reaktionen kann man bei Bedarf eine erweiterte Ausgabe einschalten. Speziell für die Fehlersuche bei Kommunikationsproblemen mit FTP-Servern lässt sich zusätzlich die Bildschirmausgabe aller gesendeten Client-Befehle, sowie der Antwort-Kodes des Servers zuschalten.

FTP.COM benötigt protokollbedingt 2 freie Sockets der KCNet-Schnittstelle. Ein Kanal wird für den Transport von Befehlen an den Server und Antworten an den Client verwendet, wobei die Kommunikation auf diesem Kanal mit Hilfe des TELNET-Protokolls abgewickelt wird. Der zweite Kanal wird ausschliesslich für die Übertragung von Daten verwendet. Der Befehlskanal muss während einer FTP-Sitzung immer aktiv sein, der Datenkanal wird nur für die Datenübertragung geöffnet und i.d.R. anschliessend wieder geschlossen. Da FTP.COM ausschliesslich im "stream-mode" Daten überträgt, wird der Datenkanal grundsätzlich auf- und abgebaut, da dadurch das Ende der Übertragung vom Sender an den Empfänger signalisiert wird.

Eine Verbindungsaufnahme zum Server wird standardmässig auf TCP-Port 21 versucht. Wenn der Server nicht auf dem Standardport läuft, ist der abweichende Port in der Kommandozeile oder beim OPEN Kommando durch einen Doppelpunkt getrennt an den Servernamen anzuhängen.

Die prinzipielle Funktion des FTP-Protokolls kann man im Internet nachschlagen, deshalb wird an dieser Stelle darauf verzichtet. Nachfolgend einige Links zu deutschsprachigen Quellen:

1. http://www.elektronik-kompendium.de/sites/net/0902241.htm
2. http://de.wikipedia.org/wiki/File_Transfer_Protocol
3. http://de.kioskea.net/contents/internet/ftp.php3
4. http://www.wintotal.de/artikel/artikel-2005/42.html

Das FTP-Protokoll gehört, neben TELNET, zu den Urgesteinen der Netzwerkprotokolle. Die Anfänge reichen bis in den April 1971 zurück und die Spezifikation wurde im Laufe der Jahre ständig weiterentwickelt und vervollkommnet. Die zur Zeit gültige Basis-RFC 959 wurde im Oktober 1985 verabschiedet und enthält über 3 Seiten Literaturangaben im Anhang. Das war vor rund 25 Jahren! und mittlerweile gibt es eine ganze Latte ergänzender RFC's, wo Protokollerweiterungen und Präzisierungen vorgenommen wurden.

Das CP/M-Programm unterstützt und nutzt eine ganze Menge dieser Erweiterungen, welche aber immer nur optionalen Charakter haben. Ein FTP-Server muss grundsätzlich nur konform zur Basis-RFC sein. Der Leistungsumfang von FTP.COM sollte durch die umfassende Implementierung aller wichtigen Kommandos aus RFC 959 die Kommunikation mit jedem korrekt programmierten FTP-Server ermöglichen und braucht sich auch nicht vor gleichwertigen Programmen anderer Systeme zu verstecken. Mit der Unterstützung zusätzlicher optionaler Kommandos der FTP-Erweiterungen und die integrierte automatische Berücksichtigung von CP/M-Besonderheiten sollte jedem interessierten Anwender ein ausgesprochen komfortables Übertragen von Daten möglich sein, wenn er etwas Zeit und Mühe in das Erlernen der Programmfunktionen steckt. Vor allem Übung macht bei einem Kommandozeilenprogramm den Meister und die Routine kommt mit der Anwendung irgendwann von ganz allein.

 


Aufruf und Syntax

So sieht das dann unter CP/M aus, wenn man FTP.COM ohne Parameter startet. Das Programm gibt eine einmalige Willkommens-Meldung aus und es wird auf die Hilfefunktion und das mögliche Abkürzen von Programmbefehlen hingewiesen. Man befindet sich dann in der interaktiven FTP-Kommandozeile und kann anschliessend durch die Eingabe von FTP.COM-Kommandos die Funktionen des Programmes nutzen. Im nachfolgenden Screenshot wurde unmittelbar nach dem Start das Kommando "?" eingegeben, welches eine vollständige Befehlsliste des Programmes ausgibt:

Willkommens-Meldung und Kommandos

 

FTP.COM benötigt für den Start keine Parameter. Ohne Parameter wird stets die Grundkonfiguration wirksam, welche die folgenden Voreinstellungen anwendet:

  • Übertragen von Dateien als Datentyp "IMAGE TYPE" (binär)
  • das Öffnen des Datenkanales erfolgt passiv
  • das interaktive Nachfragen vor dem Löschen bzw. Überschreiben von Dateien ist eingeschaltet
  • bereits vorhandene lokale bzw. entfernte Dateien im Dateisystem werden übersprungen
  • VERBOSE Mode ausgeschaltet (siehe Befehlsübersicht)
  • DEBUG Mode ausgeschaltet (siehe Befehlsübersicht)
  • EOF wird beim Senden von Dateien nicht beachtet
  • SYS-Dateien im lokalen Dateisystem werden nicht angezeigt bzw. gesendet
  • die Ereignisprotokolldatei (Logdatei) ist ausgeschaltet

Das Programm setzt ein korrekt konfiguriertes Netzwerk-Interface voraus, was beim Start auch überprüft wird. Wenn der KC nicht an das Netzwerk angeschlossen ist oder die Konfigurationsdaten fehlen, gibt es entsprechende Fehlermeldungen. Wenn man mit Servern im Internet Kontakt aufnehmen will, müssen Gateway und DNS-Server richtig konfiguriert sein und dem KC muss der Zugriff auf das Internet gestattet werden.

Wie bei allen anderen Netzwerkprogrammen zeigen die beiden Optionen -v die Version und -h eine Hilfeseite zum Gebrauch von FTP.COM an:

Version

Syntax

 

Syntax:
FTP [-h|v] [-pilr] [-s:[DIR|DU:]FN[.FT]] [Server[:Port]]
Optionen:
-h|v - Hilfe bzw. Version anzeigen und FTP.COM beenden
-p - passives Öffnen der Datenverbindung ausschalten
-i - interaktives Nachfragen ausschalten
-l - das Überspringen von lokal vorhandenen Dateien ausschalten
-r - das Überspringen von entfernt vorhandenen Dateien ausschalten
-s:DIR|DU:FN.FT - Skriptdatei mit FTP.COM-Kommandos ausführen
Server - FTP Server Name oder IP-Adresse
Port - FTP Server Port (Standard: 21)
HISTORY.FTP - wird automatisch geladen
AUTOEXEC.FTP - wird automatisch ausgeführt (wenn -s und/oder Server nicht angegeben wurden)


Durch die Angabe der entsprechenden Parameter in der Kommandozeile lässt sich bereits ein Teil der o.g. Grundeinstellungen ändern. Mit "-p"  wird das Öffnen des Datenkanales beim Datentransfer von passiv auf aktiv umgeschaltet. Die 3 Optionen "i", "l" und "r" beeinflussen das sehr defensive Verhalten von FTP.COM, vorhandene Dateien beim Datentransfer grundsätzlich ohne Nachfrage zu überspringen.

Weiterhin gibt es die Option "-s". Mit diesem Parameter kann man dem Programm ein Befehls-Skript übergeben, welches sofort abgearbeitet wird. Das ist eine selbst zu erstellende Textdatei mit FTP.COM-Befehlen (siehe Befehlsübersicht). Wenn man diesen Parameter angegeben hat, wird keine Willkommens-Meldung ausgegeben. Der Name und Typ dieser Datei ist beliebig. Es wird aber empfohlen, immer den Standard-Typ "FTP" für derartige Skripts zu verwenden, um sie von anderen (Text-)Dateien unterscheiden zu können. Das hat noch einen weiteren Vorteil, der Standardtyp muss weder beim Laden, noch beim Speichern eingegeben werden, da ihn FTP.COM automatisch intern ergänzt, wenn nichts angegeben wurde.

Ein Parameter ohne vorangestelltes "-" wird als FTP-Servername interpretiert. Das kann eine IP-Adresse in "dotted decimal notation" sein oder der Domainname des Servers, welcher automatisch über eine DNS-Abfrage aufgelöst wird. Wenn der Server nicht auf dem Standardport 21 läuft, ist der abweichende Port durch einen Doppelpunkt getrennt an den Serverparameter anzuhängen.

Wenn FTP.COM gestartet wird, sucht es im Hintergrund nach 2 speziellen Dateien im Startverzeichnis. Eine Datei mit dem Namen HISTORY.FTP wird automatisch in die Programm-Historie geladen und die entsprechenden Befehle stehen anschliessend auch ohne Eingabe sofort zur Verfügung. Diese Datei kann man unter ZSDOS/ZDDOS mit dem Public-Attribut versehen, um sie besser erreichbar zu machen. Die zweite Datei mit dem Namen AUTOEXEC.FTP wird wie ein Befehls-Skript interpretiert und die darin enthaltenen Befehle werden sofort nach dem Start von FTP.COM ausgeführt. Diese Datei ist nicht über das Public-Attribut erreichbar und muss sich demzufolge im aktuellen DU: befinden, damit sie gefunden werden kann. Wenn eine oder beide Dateien nicht vorhanden sind, passiert nichts, es werden auch keine Fehlermeldungen o.ä. ausgegeben.

Die stille AUTOEXEC.FTP-Option unterliegt weiteren Einschränkungen. Eine Option "-s" und / oder ein Server-Parameter in der Kommandozeile beim Aufruf von FTP.COM verhindert stets das Laden und Ausführen von AUTOEXEC.FTP, auch wenn sie präsent ist. Diese Datei ist primär für zwei Dinge gedacht.

Man kann damit seine eigenen individuellen Standard-Einstellungen definieren und automatisch einstellen lassen, wenn man FTP.COM aus seinem eigenen DU: startet und anschliessend interaktiv mit dessen Kommandozeile arbeiten möchte.

Eine weitere Hauptanwendung besteht in der Durchführung von immer wiederkehrenden vollautomatischen Datenübertragungen ganzer Userbereiche, ohne sich um irgendwelche Parameter oder Einstellungen Gedanken machen zu müssen. Man wechselt in den betreffenden Userbereich, beispielsweise auch auf einer Diskette, und ruft von dort FTP.COM auf. Wenn in der entsprechenden AUTOEXEC.FTP des Userbereiches die richtigen Befehle und Parameter in der richtigen Reihenfolge definiert sind, wird der Transfer ohne weitere Aktionen des Bedieners skriptgesteuert automatisch ablaufen, siehe auch Abschnitt "Automatisierung mit Kommando-Skripts".

 


Kommandozeile

Wenn FTP.COM beim Start kein Kommando-Skript ausführen muss, wird der Bediener mit einer Willkommens-Meldung begrüsst. Dann befindet man sich in der interaktiven FTP-Kommandozeile und kann das Programm durch die Eingabe von FTP-Kommandos laut Befehlsliste (s.u.) benutzen.

Das funktioniert genau wie auf Betriebssystem-Ebene unter CP/M, man gibt ein Kommando ein und schliesst die Eingabe mit der ENTER-Taste ab. Der Befehlsinterpreter von FTP.COM untersucht die Eingabe und führt das Kommando aus, wenn keine Fehler gefunden wurden. Ansonsten gibt er eine Fehlermeldung aus und kehrt in die Eingabe zurück. Der Befehl QUIT beendet FTP.COM, wenn keine Datenübertragung läuft, und gibt die Steuerung an CP/M zurück.

Ist beim Eintritt in die Kommandozeile die Skriptverarbeitung aktiv, wird die Willkommens-Meldung unterdrückt und sofort mit der Abarbeitung der Skript-Kommandos begonnen. Das kann man am Bildschirm verfolgen, da alle Zeilen der Skript-Datei dort auch ausgegeben und anschliessend wie bei einer manuellen Eingabe interpretiert werden. Das Skript übernimmt also zu seiner Laufzeit die Rolle des Bedieners.

Im Kommandozeilen-Prompt von FTP.COM werden das aktuelle Laufwerk mit Userbereich, der Verzeichnisname unter NZCOM (wenn vorhanden) und seine Kennung ausgegeben.
Wenn Daten übertragen werden, wechselt der Prompt sein Aussehen und es wird laufend der Übertragungsfortschritt in kB angezeigt. Auch dann ist noch diie Eingabe von bestimmten Kommandos möglich, die Kommandozeile ist auch bei der Überrtragung von Daten funktional nicht eingeschränkt:

Datenübertragung nicht aktiv : "DU/DIR:ftp> "
Datenübertragung aktiv : "### kB> "

So lange man eine Eingabe noch nicht bestätigt hat, lässt sie sich mit Hilfe der folgenden Funktionen verändern. Welche Tasten der Tastatur dafür zu verwenden sind, hängt von der Hardware ab. Man kann auch andere Tasten definieren, wenn man die entsprechenden Tastenkodes in Spalte 3 der Konfigurationsdatei KCNET.INC im Abschnitt "Keyboard-Codes (input)" einträgt und das Programm neu übersetzt. In der folgenden Übersicht für den KC85 sind die Tasten der Original-Tastatur und einer PC-Tastatur am KC-Club Interface von Enrico Grämer in der CP/M-Betriebsart dargestellt:

KC-Tastatur PC-Tastatur

Funktion
Cursor links Cursor links ^H - Cursor ein Zeichen nach links bewegen
Cursor rechts Cursor rechts ^D - Cursor ein Zeichen nach rechts bewegen
SHIFT + Cursor links SHIFT + Cursor links ^A - Cursor an den Anfang der Eingabezeile bewegen
SHIFT + Cursor rechts SHIFT + Cursor rechts ^F - Cursor an das Ende der Eingabezeile bewegen
Cursor nach oben Cursor nach oben ^E - Rückwärts durch die Kommando-Historie bewegen
Cursor nach unten Cursor nach unten ^X - Vorwärts durch die Kommando-Historie bewegen
SHIFT + SPACE Tabulator ^I - Kommando automatisch vervollständigen bzw.
mögliche Kommandos anzeigen
F1 + G Entfernen ^G - Zeichen an Cursorposition löschen
SHIFT + DEL Strg + Y ^Y - Eingabezeile löschen
DEL Rückschritt ^_ - Zeichen vor Cursorposition löschen
Break Ende ^C Abbruch eines laufenden Kommando-Skripts
Enter Enter ^M - Kommando ausführen oder Parametereingabe abschliessen

Wenn vom Programm Parameter angefordert werden, gibt es die folgenden Besonderheiten:

Passwörter für die Kommandos PASS bzw. ACCOUNT können nicht zeichenweise geändert werden, nur die Funktion "Eingabezeile löschen" ist zulässig.

Die Tabulator-Funktion und die beiden Historie-Funktionen stehen während der Eingabe von Parametern nicht zur Verfügung.

Welche Kommandos zulässig sind, hängt vom Status des Programmes ab. Viele Befehle sind auf eine bestehende Verbindung mit einem FTP-Server angewiesen. Solche Kommandos führen im negativen Fall zu der Fehlermeldung "Not connected." Weiterhin gibt es Befehle, welche während einer Datenübertragung gesperrt sind, damit diese nicht beeinträchtigt wird. In einem solchen Fall gibt das Programm die Fehlermeldung "Command locked - Transfer in progress!" aus.

Für jedes Kommando ist im Programm ein kurze Information hinterlegt, welche man sich mit Hilfe des Befehles "HELP Kommando" anzeigen lassen kann. Die folgende Komplett-Übersicht liefert das Kommando "HELP ?" :

 

Kommando-Hilfe

Kommando-Hilfe Seite 1

Kommando-Hilfe Seite 2

Kommando-Hilfe Seite 3

Kommando-Hilfe Seite 4

 


Transport und Management von Daten

Wenn man Daten per FTP übertragen möchte, muss man sich zunächst mit einem FTP-Server verbinden. Daher beginnt jede Sitzung mit dem Kommando OPEN. Nachdem die Verbindung erfolgreich aufgebaut werden konnte, folgt unmittelbar die Login-Sequenz, wo die Benutzerdaten des gewünschten FTP-Kontos eingegeben werden müssen.

FTP erfordert immer eine Anmeldung am Server per Benutzerkonto, wobei der Server die vom Administrator festgelegten erforderlichen Daten anfordert. Das wird im Protokoll geregelt und FTP.COM führt den Benutzer automatisch durch diesen Vorgang. Es können bis zu 3 Eingaben notwendig werden (Benutzername, Passwort, Konto), wobei in der Praxis entweder nur die erste oder die ersten beiden Eingaben erforderlich sind. Viele frei verfügbare FTP-Server mit anonymen Zugängen nutzen meist die erste Möglichkeit (siehe Wikipedia unter "Öffentliche FTP-Server"). Wichtig ist auch, dass man bereits an dieser Stelle auf Gross- und Kleinschreibung achtet, man bekommt sonst bei Fehlern nie einen Zugang zu Servern, welche unter UNIX verwandten Betriebssystemen laufen und das sind fast alle im Internet :-).

Nachdem man diese Hürde genommen hat, besteht Zugriff auf das Dateisystem des Servers. Ab diesem Zeitpunkt arbeitet man ähnlich wie unter CP/M mit einem lokalen Laufwerk, wobei die entsprechenden Kommandos von FTP.COM, statt der CP/M-Befehle, verwendet werden müssen. Die vollständige Befehlsliste mit Erläuterungen zu jedem Kommando steht im Abschnitt Befehlsübersicht der Programmbeschreibung zur Verfügung, an dieser Stelle nur einige Beispiele:

  • mit den Kommandos DIR, NLIST und MDIR hat man mehrere Möglichkeiten, um sich den Inhalt von Server-Verzeichnissen anzeigen zu lassen, wobei sich die Menge an Information und die Darstellungsform unterscheidet, auch Dateimasken mit Platzhalterzeichen sind erlaubt
  • der Inhalt des lokalen Verzeichnisses kann mit LDIR ausgegeben werden, auch mit Dateimaske und Platzhalterzeichen
  • das Herunterladen von Daten vom FTP-Server auf das aktuelle DU: von CP/M erfolgt mit den beiden Kommandos GET oder MGET
  • das Hinaufladen von Daten vom aktuellen DU: von CP/M auf den FTP-Server erfolgt mit den beiden Kommandos PUT oder MPUT
  • das aktuelle Arbeitsverzeichnis auf dem FTP-Server kann mit Hilfe der Kommandos CD und PD eingestellt und mit PWD angezeigt werden
  • das lokale Arbeitsverzeichnis DU: wird mit dem Kommando LCD eingestellt
  • Dateien kann man lokal mit LERA und entfernt mit DELETE löschen
  • entfernte Dateien können mit RENAME auf dem FTP-Server umbenannt werden
  • Verzeichnisse auf dem FTP-Server kann man mit MKDIR erstellen und RMDIR löschen

Alle Aktionen, welche schreibend auf das Dateisystem des Servers zugreifen wollen, erfordern natürlich auch die entsprechenden Rechte, welche wiederum vom Administrator dem FTP-Benutzerkonto zugewiesen werden müssen. Handelt es sich beispielsweise um einen reinen Download-Server kann man zwar solche Befehle abschicken, wird aber immer eine Fehlermeldung als Antwort erhalten.

Das Ende einer FTP-Sitzung wird mit dem Kommando CLOSE beim Server angefordert, welcher daraufhin die Verbindung schliesst. Man bleibt aber in der FTP-Kommandozeile. Das QUIT Kommando schliesst bei einer aktiven Sitzung CLOSE mit ein, beide Aktionen werden nacheinander ausgeführt und man befindet sich anschliessend wieder im CP/M-Betriebssystem.

Ein wichtiges Problem, vor dem jedes Kommunikationsprogramm steht, ist der Umgang mit verbotenen Zeichen in der Bezeichnung von Dateien. An dieser Stelle spielen nicht nur die Bedürfnisse von CP/M eine Rolle, sondern auch die Beschränkungen des fremden Dateisystems auf dem FTP-Server. Das durchaus häufiger verwendete Zeichen "/" ist beispielsweise für CP/M kein Problem, die UNIX verwandten Systeme benutzen es allerdings als Trennzeichen für die Ordnernamen von Pfadangaben, deshalb ist es in Dateinamen nicht erlaubt. Da ich von automatischen Umbenennaktionen per Software während einer Datenübertragung überhaupt nichts halte, gilt die nachfolgende einfache Regel. Dateien, welche eines der folgenden Zeichen in ihrer Bezeichnung benutzen, werden zurückgewiesen und können mit FTP.COM nicht übertragen werden.

verbotene Zeichen in Dateinamen: .,:;=%|/\‹›()[]{}

Man sollte das nicht vernachlässigen, besonders wenn man mit MPUT/MGET Dateigruppen übertragen will, gibt das dann jedesmal Fehlermeldungen. Die beste Vorgehensweise besteht darin, sein CP/M Dateisystem sauber zu halten und diese Zeichen nie zu benutzen. Ich empfehle daher auch eine einmalige "Reinigungsaktion" bei den vorhandenen Datenträgern! Wenn man das Programm für Sicherungszwecke verwenden möchte, bleibt auch keine andere Wahl, da sonst nicht vollständig gesichert werden kann.

Da ich FTP.COM für Backup-Zwecke einsetzen möchte und Störungen bei der Übertragung von Daten nie ausgeschlossen werden können, erfolgt der Transfer von Dateien in zwei Schritten. Zunächst wird auf der empfangenden Seite eine temporäre Datei mit dem reservierten Namen FTP$FILE.$$$ angelegt, in welche die Daten geschrieben werden. Meldet der Empfänger nach dem Abschluss der Übertragung eine positive Bestätigung, erhält die temporäre Datei ihren endgültigen Namen und erst dann werden auch gleichnamige Dateien des Zielsystems überschrieben. Das funktioniert in beide Richtungen, sowohl beim Download vom, als auch beim Upload auf den FTP-Server. Der reservierte Name darf demzufolge nicht im Dateisystem benutzt werden, da diese Datei von FTP.COM sonst überschrieben wird! Wenn ein Transfer fehlschlagen sollte, bleibt die Integrität von Dateien, welche bereits vorhanden sind, trotzdem erhalten, da dann auch keine positive Bestätigung des Transfers erfolgt. Es kann maximal passieren, dass die (unvollständige) Datei FTP$FILE.$$$ nicht mehr entfernt wird. Die kann man immer ohne Bedenken löschen, muss man aber nicht, da sie nach dem nächsten erfolgreichen Transfer automatisch verschwunden ist.

Auf diese Art und Weise erfolgt der Transfer von Daten mit FTP.COM sehr sicher. Wichtig für das Hinaufladen von Dateien auf den FTP-Server ist dadurch allerdings, dass man nicht nur über Schreibrechte verfügen, sondern auch die Berechtigung für das Umbennen von Dateien haben muss, sonst kann FTP.COM nie eine Datenübertragung abschliessen und ein Upload wird immer fehlschlagen!

Genau wie MSDOS hat auch ein CP/M-Programm das 8.3-Problem bei der Kompatibillität von langen Dateinamen anderer Betriebssyteme mit dem eigenen Dateisystem. Mit UNIX Dateisystemen gibt es zusätzlich noch mögliche Konflikte bei gleichnamigen Dateien mit unterschiedlicher Gross- und Kleinschreibung der Namen. Derartige Dateien überschreiben sich unter CP/M gegenseitig, da nur Grossbuchstaben zugelassen sind. Diese Probleme beheben die beiden Befehle MDIR und MGET mit Hilfe eines eingebauten automatischen Filters im Hintergrund, indem ungeeignete Dateinamen ausgefiltert werden und beim zweiten Problem nur der erste Treffer einer Verzeichnisliste vom Server berücksichtigt wird. Vollständige Listen liefern daher nur die beiden Kommandos DIR und NLIST - daran muss man sich anfangs erst gewöhnen! Mit dem Einzelkommando GET kann man natürlich auch nicht kompatible Dateien vom Server herunterladen, dieses Kommando fragt dann automatisch nach einem neuen CP/M konformen Dateinamen vor der Übertragung und erzwingt so das Umbenennen.

Das Überschreiben von bereits vorhandenen Dateien auf der Empfängerseite wird in FTP.COM mit Hilfe von 3 Schaltern eingestellt. Wenn RUNIQUE (remote unique) bzw. LUNIQUE (local unique) aktiviert sind, werden solche Dateien immer übersprungen. Deaktiviert man diese Schalter greift die Einstellung von PROMPT. Ist PROMPT eingeschaltet, wird bei jeder bereits vorhandenen Datei interaktiv nachgefragt, ob sie überschrieben werden soll. Schaltet man auch PROMPT aus, werden alle Dateien ohne Nachfrage überschrieben. Das Programm ignoriert alle CP/M-Attribute von Dateien, sowohl RO als auch SYS wirken daher nicht wie üblich als Schreibschutz oder Listschutz.

Ein weiteres Relikt des beschränkten CP/M-Dateisystems ist die nicht vorhandene Grössenangabe von Dateien. Solange der FTP-Server nur als Zwischenspeicher von CP/M Daten dient, spielt das keine Rolle, daher sollte man die EOF-Einstellung nicht ändern und Daten immer im binären Modus übertragen. Wenn man allerdings beispielsweise Textdateien auf dem PC sofort weiterverwenden will, stören mitunter die überflüssigen Bytes des letzten CP/M-Sektors ab EOF-Kennzeichnung. Für Text-Dateien ist es daher ganz nützlich, wenn man vor der Übertragung den EOF-Schalter aktiviert. FTP.COM sendet dann eine Datei bis zum Erkennen des ersten EOF-Bytes und beendet an dieser Stelle die Datenübertragung. Man hat dann eine Kopie einer Text-Datei auf dem FTP-Server, welche nachbearbeitungsfrei weiterverwendet werden kann. Ganz wichtig ist allerdings auch, dass man danach den EOF-Schalter sofort wieder deaktiviert! Überträgt man so binäre Dateien, wie Programme, wird die Sendung natürlich auch mit dem ersten EOF-Byte in der Datei beendet, welches dort nicht das Dateiende kennzeichnet, sondern sich auch mitten in der Datei befinden kann!

Für die bereits angesprochenen meist langwierigen Backups grosser Datenmengen, wie zum Beispiel ganzer Festplattenlaufwerke, bietet das Programm die Möglichkeit, ein Übertragungsprotokoll zu aktivieren. Lässt man das Backup skriptgesteuert ablaufen, kann man diese Protokolldatei nach Abschluss des Gesamtvorganges automatisch schliessen lassen und auch noch mit in das Backup auf den Server speichern, so dass man jederzeit auch später noch Zugriff darauf hat. Am KC bietet sich dafür die RAM-Floppy förmlich an, da dann das Protokollieren den Backupvorgang nicht ausbremst. Das Protokoll wäre nach dem Ausschalten des KC aber auch weg, wenn man es nicht voher manuell auf Diskette oder Festplatte sichert. Das kann man übrigens auch mit Skriptbefehlen und den Umweg RAM-Floppy -> FTP-Server -> lokales DU:  erledigen. Speziell für das Protokoll sollte man vor jeder Übertragung im Skript die beiden Befehle CD und LCD ohne Parameter aufrufen, dann wird das Quell- und Zielverzeichnis einer darauf folgenden Übertragung im Protokoll mitgeschrieben :-). Da auch die Ausgaben aller Directory-Befehle von FTP.COM protokolliert werden, kann man sogar vor dem Backup die lokale Liste von Dateien in das Protokoll aufnehmen, welche anschliessend übertragen werden. Für lokale Verzeichnisse ist die Einstellung von FSYS beim Backup zu beachten, nur wenn FSYS aktiviert ist, werden auch alle Systemdateien gesichert!

 


Datum und Zeit von Dateien

FTP.COM ist in der Lage, Datums- und Zeitstempel von Dateien in beide Richtungen automatisch zu übertragen. Diese Funktionalität erfordert natürlich ein CP/M System, welches diese Informationen auch bereitstellen kann. Da es dafür keine allgemein gültigen Standards gibt und die Erkennung der vielen verschiedenen Nachrüstungen durch diverse CP/M Erweiterungen aufwendig und mit meinem System nicht testbar ist, beschränkt sich die Unterstützung von Datums- und Zeitstempeln von Dateien auf CP/M Systeme, welche ZSDOS/ZDDOS als BDOS-Ersatz verwenden.

Das ist diesmal auch nicht nur auf den KC85 beschränkt, sondern gilt für alle Systeme, wo das CP/M-Programm eingesetzt werden kann. Beim Start von FTP.COM wird die vorhandene CP/M-Version speziell auf ZSDOS/ZDDOS getestet, so wie das im Handbuch für den Programmierer beschrieben wird. Die definierten BDOS-Funktionen von ZSDOS/ZDDOS für das Lesen und Schreiben von Datum und Zeit sind aber nur eine Voraussetzung. Damit das Sinn macht, muss das System bei Benutzung auch richtig funktionieren. Die Systemuhr inklusive Datum sollte daher immer laufen und richtig gestellt sein und auch in die RAM-Floppy des KC gehört eine !!!TIME&.DAT, sonst können dort keine Stempel für Dateien geschrieben bzw. gelesen werden!

Wenn unter CP/M eine Unterstützung von Datum und Zeit für Dateien vorhanden ist, hat man aber erst 50% der notwendigen Vorbedingungen erfüllt, da der FTP-Server diese Informationen auch übertragen muss. Das FTP-Protokoll hat es leider bis heute (2010), trotz seiner sehr langen Geschichte, noch nicht geschafft, einen offiziellen und damit einheitlichen Weg in den gültigen RFC's zu definieren, die Datums- und Zeitinformationen von Dateien serverseitig zu übernehmen.

Für das Lesen dieser Informationen beim Herunterladen von Dateien vom Server sind bereits 2 Protokollerweiterungen vorhanden. Mit MDTM oder dem "modify-fact" des MLST-Befehles, beide wurden in RFC 3659 definiert, kann man das Datum und die Zeit der letzten Änderung von Dateien erfahren. FTP.COM benutzt intern immer den MDTM-Befehl, welcher vom Server daher auch unterstützt werden muss! Ist das der Fall, wird diese Information vom Server nach dem Download einer Datei angefordert und lokal in das CP/M-Dateisystem übernommen, wenn alle anderen Voraussetzungen erfüllt sind.

Da es für das Schreiben von Datum und Zeit in serverseitige Dateien keinen offiziellen Weg gibt, versucht FTP.COM mit Hilfe mehrerer (inoffizieller) Methoden, diese Informationen trotzdem zu übertragen.

Schreiben der "Create Time" (Erstellung):

MFCT YYYYMMDDhhmmss pathname

Schreiben der "Modify Time" (letzte Änderung) mit einem der folgenden Befehle in dieser Reihenfolge:

MFMT YYYYMMDDhhmmss pathname

SITE UTIME pathname YYYYMMDDhhmmss YYYYMMDDhhmmss YYYYMMDDhhmmss UTC

SITE UTIME YYYYMMDDhhmmss pathname

Da die Zeitstempel unter ZSDOS/ZDDOS kein Sekundenfeld besitzen, wird der Wert von "ss" beim Senden immer mit 0 gefüllt und beim Empfangen nicht beachtet. Die Daten für das Datum und die Zeit werden nie verändert oder beispielsweise in lokale Zeitangaben konvertiert, da CP/M Systeme keine Lokalisierung unterstützen.

Wie man sehen kann, hängt die Erkennung und Aktivierung der Unterstützung von Datums- und Zeitstempeln von Dateien sowohl von lokal vorhandenen Bedingungen ab, als auch von den Fähigkeiten des FTP-Servers. Der ganze Prozess wirkt nach aussen etwas undurchsichtig und wird daher von FTP.COM intern vollautomatisch verwaltet. Der Bediener des Programmes kann daher weder die Erkennung und Aktivierung, noch die Nutzung von Stempelinformationen beeinflussen.

Die Aktivierung wird immer dann umgeschaltet, wenn die Login-Sequenz nach der Anmeldung am Server abgearbeitet wird. Erst dann können die Fähigkeiten des Servers abgefragt werden und wenn alle Voraussetzungen erfüllt sind, erfolgt eine Aktivierung. Eine aktivierte Unterstützung von Stempelinformationen führt immer zur Übertragung, das kann nicht ausgeschaltet werden.

Mit Hilfe des STATUS Kommandos von FTP.COM kann man sich anzeigen lassen, ob die Übertragung von Stempelinformationen aktiviert ist. Das macht allerdings nur Sinn, wenn eine Verbindung zum FTP-Server besteht und die Anmeldung erfolgreich ausgeführt wurde. Die beiden folgenden Zeilen der STATUS-Ausgabe zeigen die Unterstützung an, welche bei ON ein- und bei OFF ausgeschaltet ist, jeweils getrennt für das Senden bzw. Empfangen von Dateien:

Recv File Date/Time : ON/OFF
Send File Date/Time : ON/OFF

Im folgenden Beispielbild sieht man die vollständige Ausgabe des STATUS Kommandos mit aktivierter Unterstützung in beide Übertragungsrichtungen. Anschliessend wurde eine Datei vom Server mit Hilfe des GET Befehles heruntergeladen. Wenn die Stempelinformationen fehlerfrei gelesen bzw. geschrieben werden können, gibt FTP.COM eine"Dated"-Meldung nach jeder Übertragung aus. Das funktioniert bei den PUT-Befehlen genauso.

Wenn diese Meldung ausgegeben wird, kann man davon ausgehen, dass die Stempelinformationen erfolgreich übertragen werden konnten. Traten an irgendeiner Stelle der Übertragungskette Probleme auf, erfolgt auch keine Meldung. Ist z.B. die Stempeldatei !!!TIME&.DAT auf dem aktuellen CP/M-Laufwerk nicht vorhanden, meldet ZSDOS/ZDDOS einen Fehler. Die Meldung bleibt dann auch aus, selbst wenn die Unterstützung von Stempelinformationen laut STATUS aktiviert ist.

 

STATUS und GET Kommando

 


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

 


Befehlsübersicht

Der Begriff "Kommndo" bzw. "Befehl" in diesem Beitrag bezieht sich immer auf den Befehlssatz des CP/M-Programm FTP.COM und nicht auf die in den RFC's zum FTP-Protokoll genannten Roh-FTP-Befehle. Sofern ein Protokoll-Befehl gemeint ist, wird darauf extra hingewiesen. Die folgende Übersicht enthält daher die vollständige Liste aller Kommandos des Programmes, welche zwar identisch mit Protokollbefehlen sein können, aber nicht müssen. Ein Programmbefehl nutzt einen oder mehrere Roh-FTP-Befehle im Hintergrund, um die Dienste des FTP-Protokolls für den Anwender bequemer und einfacher zur Verfügung stellen zu können.

KOMMANDO ARGUMENTE

Wenn zusammen mit einem Kommando in der gleichen Zeile Argumente eingegeben werden, sind beide durch exakt 1 Leerzeichen voneinander zu trennen.

Ein Kommando, welches ein Argument erfordert, fragt automatisch danach, wenn kein Argument übergeben wurde.

Alle Kommandos mit dem Zusatz "(opt. ARG)" in der Hilfe, fragen nicht nach, wenn sie ohne Argument gestartet wurden. Bei diesen Befehlen ist ein Argument aber optional möglich, welches dann zusammen mit dem Befehl in der gleichen Zeile eingegeben werden muss, um zusätzliche Funktionalitäten zu nutzen.

VERZEICHNIS BESCHRÄNKUNGEN

Es gibt 2 verschiedene Gruppen von Kommandos, welche aufgrund der TPA-Beschränkung unter CP/M nur eine begrenzte Anzahl von Verzeichniseinträgen verarbeiten können. Das folgende Beispiel kann als Anhaltspunkt für das eigene System dienen, wo die obere Grenze dieser Beschränkung etwa liegt, es bezieht sich auf ein CP/M System mit einem 50k TPA:

lokal sortiertes Verzeichnis: LDIR, LERA, MPUT 450 Einträge
bereits sortiertes Verzeichnis vom FTP-Server: MDIR, MGET 900 Einträge

Wenn die obere Grenze überschritten werden sollte, wird das betreffende Kommando mit der Meldung "TPA-Overflow!" abgebrochen. Man muss dann die Anzahl zutreffender Verzeichniseinträge mit der Hilfe von Dateimasken reduzieren und das Kommando entsprechend mehrmals mit verschiedenen Masken ausführen, um alle Dateien zu erfassen.

DATEI ZUGRIFF (ab Version 1.1)

Wenn das Programm unter NZCOM benutzt wird, kann man, anstatt der üblichen DU: Notation fuer Laufwerk und Userbereich, Namen für benannte Verzeichnisse übergeben. Der sog. "öffentliche" Dateizugriff unter ZSDOS/ZDDOS Systemen wurde weiter verfeinert. Je nach Aufgabe werden die folgenden Einstellungen wirksam:

AUTOEXEC.FTP -
wird nur im aktuellen (Start-)Verzeichnis gefunden
ALLE Datentransfers - sind auf das aktuelle Arbeitsverzeichnis beschränkt
Skriptdatei lesen - "öffentliche" Dateien werden wie unter ZxDOS gefunden
Kdo.-Historie einlesen - "öffentliche" Dateien werden wie unter ZxDOS gefunden
Kdo.-Historie schreiben - der "öffentliche" Zugriff ist temporär deaktiviert
Log-Datei schreiben - der "öffentliche" Zugriff ist temporär deaktiviert

Die folgende Übersicht enthält die alphabetisch geordnete Liste aller 50 Befehle von FTP.COM. Die Spalte "Funktion" benennt nur den grundsätzlichen Zweck jedes Befehles. Ausführlichere Informationen mit weiterführenden Hinweisen zur Anwendung und möglichen Parametern sind der Programmbeschreibung zu entnehmen. Für einen erfolgreichen und effizienten Einsatz des Programmes, wird man um ein Studium der Beschreibung nicht herumkommen. Man kann auch entsprechende Quellen im Internet zu den artverwandten FTP-Programmen anderer Betriebssysteme lesen, die unterscheiden sich kaum von der CP/M-Version, da das gleiche Netzwerkprotokoll zugrunde liegt.

Ein Kreuz in Spalte "C" (connected) bedeutet, dass dieses Kommando nur ausgeführt werden kann, wenn man mit einem FTP-Server verbunden ist, ein Kreuz in Spalte "L" (locked) bedeutet, dass die Funktion nicht ausgeführt werden kann, wenn eine Datenübertragung läuft.

Kommando Funktion C L
ABORT Abbruch einer laufenden Datenübertragung x
ASCII ASCII Datentyp für alle Übertragungen festelegen x x
BINARY IMAGE Datentyp für alle Übertragungen festelegen x x
CD [PATH] aktuelles Arbeitsverzeichnis des FTP-Servers anzeigen bzw. ändern x x
CLOSE FTP-Sitzung beenden x x
CLS lokalen Bildschirm löschen und Kommandozeile zum Bildschirmanfang
DEBUG [ON|OFF] Ausgabe von Server-Kommandos und Antwort-Kodes der Server-Kommunikation einstellen
DELETE [PATHNAME] Datei im Dateisystem des FTP-Servers löschen x x
DIR [PATH] Verzeichnisinhalt des Servers bzw. Informationen zu einer Datei des Servers anzeigen x x
EOF [ON|OFF] Sendung bei EOF-Kennzeichnung beenden x
FEAT optionale Kommandos des Servers anzeigen x x
FSYS [ON|OFF] Systemdateien für Kommandos ausblenden (LDIR, LERA, MPUT)
GET [PATHNAME] eine Datei vom Server herunterladen x x
HELP [COMMAND] Kommandohilfe anzeigen
HLOAD [DU:]FN[.FT] lädt eine lokale Textdatei in die Kommando-Historie
HSAVE [DU:]FN[.FT] speichert die Kommando-Historie in eine lokale Textdatei
LANGUAGE [LANG-TAG] ändert die Sprache der Serverantworten x x
LCD [DU:] bzw. LCD HOME aktuelles lokales Arbeitsverzeichnis anzeigen bzw. ändern x
LDIR [FN.FT] Verzeichnisinhalt des lokalen Arbeitsverzeichnisses anzeigen
LERA [FN.FT] Datei(en) im lokalen Arbeitsverzeichnis löschen
LOG [DU:]FN[.FT] neue Protokolldatei öffnen bzw. aktuelle Protokolldatei schliessen (ohne Argument)
LUNIQUE [ON|OFF] vorhandene lokale Dateien überspringen
MDIR [FN.FT] CP/M-konformen Verzeichnisinhalt des Servers filtern und anzeigen x x
MGET [FN.FT] eine maskierte Gruppe CP/M-konformer Dateien vom Server herunterladen x x
MKDIR [PATH] Verzeichnis im Dateisystem des FTP-Servers anlegen x x
MPUT [FN.FT] eine maskierte Gruppe lokaler Dateien auf den Server hochladen x x
NLIST [PATH] die Namen von Dateien und Unterverzeichnissen des Servers ohne weitere Informationen anzeigen x x
OPEN [SERVER[:PORT]] Verbindung zu einem FTP-Server herstellen und bei Erfolg die Anmelde-Sequenz starten
OPTIONS [RAW-FTP-COMMAND
RAW-FTP-COMMAND-OPTION]
Optionen eines Roh-FTP-Kommandos einstellen x x
PASSIVE [ON|OFF] passives/aktives Öffnen von Datenverbindungen einstellen
PD in die übergeordnete Verzeichnisebene des FTP-Servers wechseln x x
PROMPT [ON|OFF] interaktives Nachfragen vor Dateiaktionen einstellen
PUT [FN.FT] eine Datei auf den Server hochladen x x
PWD aktuelles Arbeitsverzeichnis des FTP-Servers anzeigen x x
QUIT bestehende FTP-Sitzung beenden und FTP.COM schliessen x
QUOTE [RAW-FTP-COMMAND ...] Argument als Roh-FTP-Kommando an den FTP-Server senden x x
RENAME [PATHNAME] Datei im Dateisystem des FTP-Servers umbenennen x x
RHELP [RAW-FTP-COMMAND] Hilfe des FTP-Servers anzeigen x x
RMDIR [PATH] Verzeichnis im Dateisystem des FTP-Servers löschen x x
RSTAT [PATHNAME] Statusinformationen des FTP-Servers anzeigen x x
RUNIQUE [ON|OFF] im Dateisystem des FTP-Servers vorhandene Dateien überspringen x
SCRIPT [DU:]FN[.FT] Skript mit FTP.COM Kommandos ausführen
SITE [PARAMETER] spezifisches Kommando des verbundenen FTP-Servers ausführen x x
SIZE [PATHNAME] Übertragungsgröße einer Datei des FTP-Servers in Byte anzeigen x x
STATUS Statusinformationen von FTP.COM anzeigen
SYSTEM Betriebssystem des FTP-Servers anzeigen x x
TYPE [PATHNAME] Inhalte einer (Text-)Datei des FTP-Servers auf dem lokalen Bildschirm angezeigen x x
USER [NAME] Benutzerinformationen an den FTP-Server senden x x
VERBOSE [ON|OFF] erweiterte Ausgabe von FTP-Server Antworten einstellen
? Befehlsübersicht von FTP.COM anzeigen

 


Zusammenfassung

Damit soll die Vorstellung der wichtigsten Merkmale von FTP.COM beendet werden. Die vielen Funktionen erforderten diesmal eine sehr kompakte Programmierung. Es gibt fast keinen redundanten Programmkode, dafür aber ca. 50 Statusbits, welche sich um die Verwaltung der verschiedenen Zustände und Abhängigkeiten kümmern. Zwischendurch wurden zwei längere Optimierungsphasen durchgeführt und zum Schluss war viel Geduld und Ausdauer notwendig, um alle offensichtlichen und versteckten Fehler sowie Mängel auszumerzen.

Es ist immer wieder erstaunlich, was man alles mit dem Assembler in ca. 22 kB Programmcode realisiert bekommt, das CP/M-Programm lässt die Pendants anderer Betriebssysteme, z.B. Windows 7 ca. 42 kB oder SYS-Linux ca. 62 kB, weit hinter sich und ist nicht viel schlechter. Im Gegenteil, die Windows-Versionen sind ziemlich lieblos programmiert und wirken mehr als notwendiges Übel in der sonstigen auf Optik getrimmten "Fensterumgebung".

Damit die ersten Schritte etwas leichter fallen, gibt es zum Programm noch 4 Beispiel-Skripts dazu, welche für eine automatische Einwahl in das KC85 Labor (s.u.) und 3 andere FTP-Server sorgen. Dort gibt es jede Menge CP/M Material, was man nun direkt und ohne Internet-Umleitung über Fremdrechner und lästige Diskettentransfers auf den eigenen Rechner befördern und auch gleich ausprobieren kann. Damit eröffnet FTP.COM eine ganz neue, bisher völlig unmögliche Arbeitsweise.

Natürlich kann man sich auch mit anderen FTP-Servern verbinden und dort auf die Suche nach interessanten Inhalten gehen. Da CP/M aber nur sehr beschränkt mit anderen Inhalten als Text umgehen kann, macht das natürlich nicht so viel Sinn. Man sollte auch den CP/M-Rechner nicht als Zwischenstation für den Datentransfer zum PC verwenden, da die Dateien i.d.R. verändert werden. Wenn sie erst im CP/M-Dateisystem gespeichert und anschliessend zum PC gesendet werden, kommen beim binären Transfer die überflüssigen Bytes des letzten Sektors ab EOF dazu!

Für alle Interessenten nachfolgend einige Adressen von öffentlichen FTP-Servern, in die man sich mit dem Benutzernamen "anonymous" und seiner Mailadresse als Passwort einloggen kann:

Kermit ftp.kermit.columbia.edu
Oregon State University Open Source Lab ftp.osuosl.org
Microsoft ftp.microsoft.com
National Instruments ftp.ni.com
Heise Verlag (c't und iX) ftp.ix.de
Chaos Computer Club ftp.ccc.de
AVM ftp.avm.de

Darüber hinaus unterhält nahezu jede Universität und Hochschule einen oder mehrere öffentliche FTP-Server, wo man Unmengen an Zeit mit dem Sichten und Anschauen von Material verbringen kann.

Aber FTP-Server sind nicht nur im Internet anzutreffen. Sie eignen sich auch hervorragend für die zentrale Verwaltung und Sicherung von Dateien im eigenen Netzwerk. Man hat dann alles an einem Ort, kann von jedem FTP-fähigen Teilnehmer lesend und schreibend darauf zugreifen, inklusive der Möglichkeiten von FTP für die Verzeichnisverwaltung. Für die CP/M Rechner wird indirekt die Verwaltung von Programmen und Daten in einer hierarchischen Datenstruktur möglich, indem man die Möglichkeiten des FTP-Servers nutzt. Man ist dann nicht mehr so abhängig von den nur begrenzt verfügbaren Userbereichen oder sogar der Auslagerung auf Diskette, um Ordnung zu halten.

Um einen FTP-Server im Netzwerk nutzen zu können, gibt es viele Möglichkeiten. Die naheliegendste Lösung ist natürlich der eigene PC mit einem geeigneten Serverprogramm. An dieser Stelle empfehle ich für die Windows-Anwender ganz eindeutig den Filezilla-Server (www.filezilla-project.org). Als Open Source Projekt ist er frei und funktional ohne lästige Beschränkungen, welche bei anderen freien Versionen, besonders kommerzieller Programme, fast immer die Regel sind. Das Angebot an FTP-Server Programmen, ist im Gegensatz zu der Flut diverser FTP-Clients, sehr überschaubar. Filezilla unterstützt auch alle notwendigen FTP-Erweiterungen für FTP.COM, so dass beide gut miteinander funktionieren.

Die nächste Variante ist die Nutzung eines Netzwerk-Servers, welcher ausschliesslich für die Netzwerk-Teilnehmer und/oder im Internet verschiedene Dienste anbietet. Jedes Server-Betriebssystem enthält natürlich auch einen FTP-Server, welcher dann genauso verwendet werden kann, wie bei der ersten Variante. Wenn man den FTP-Server auch für die Internet-Nutzung freigibt, funktioniert der Zugriff auch von ausserhalb.

Eine weitere sehr interessante Variante ist der Einsatz eines NAS (Network Attached Storage) als Server-Ersatz, siehe Wikipedia. Das sind direkt an das Netzwerk angeschlossene Speicher, welche meist auch den Zugriff per FTP gestatten und damit wie die beiden ersten PC-basierten Varianten benutzt werden können.

Die einfachste und kostengünstigste Variante ist die "Vergewaltigung" des heimischen Internet-Routers als FTP-Server, der läuft in der Regel sowieso rund um die Uhr. Auch für diesen Zweck lassen sich z.B. die aktuelleren Modelle der Fritz!Box-Familie von AVM einsetzen, wo der FTP-Server über die Linux-Firmware bereitgestellt wird und mit wenigen "Klicks" per Webbrowser eingerichtet werden kann. In den Service-Portalen von AVM zu den einzelnen Modellen findet man alle dafür notwendigen Informationen. Zusammen mit der Möglichkeit eine eigene Internet-Domain bei einem freien DNS-Provider durch die Box aktualisieren zu lassen, kann man diesen FTP-Server von aussen bequem erreichbar machen. Der vierte Link im Abschnitt "Einführung" erklärt in den FTP-Artikeln die prinzipielle Vorgehensweise.

Die Fritz!Box bietet auch die Möglichkeit, den LAN-Zugriff lesend und schreibend und den Internet-Zugriff nur lesend zuzulassen. Damit hat man zum Nulltarif eine sparsame und recht sichere Möglichkeit für den gegenseitigen Datenaustausch zur Verfügung. Der persönliche PC muss dann nicht eingeschaltet sein, da der FTP-Server auf dem Router läuft und es wird nie direkt aus dem Internet auf den perönlichen Rechner zugegriffen. Die kleinen CP/M-Dateien beeinträchtigen die Box nicht, das kann sie nebenbei mit abwickeln. Der von AVM verwendete FTP-Server hat einen kleinen Nachteil, die Zeitstempel bleiben nur beim Herunterladen von Dateien erhalten.

Mit FTP.COM lassen sich nun auch andere Projekte praktisch umsetzen. Durch die direkte Nutzung des Internets für den Austausch von Daten und Programmen, macht es endlich Sinn, per FTP ein zentrales Software-Verzeichnisses für die KC's aufzubauen. Jeder KC mit M052 hat dann unter CP/M direkten Zugriff darauf und das stellt auch den wichtigsten Mehrwert des Programmes dar.

Ich habe dort schon mal den Anfang gemacht - anlässlich der Veröffentlichung von FTP.COM ist das KC85 Labor ab sofort per "Anonymous"-FTP erreichbar und bietet so einen schnellen und effizienten Zugriff auf alle Dateien des Downloadbereiches ohne Klickorgien :-). Wie das mit einem KC85 oder anderen CP/M Computern und FTP.COM funktioniert, steht in der Hilfe zu dieser Webseite.

 

KC85 Labor

 

Das FTP.COM Programm, die o.g. Beispiel-Skripts und die ausführlichen Beschreibungen in englisch und deutsch befinden sich in den fertigen "KCNet Software ... " Paketen. Die CP/M-Quelltexte wurden dem aktuellen "KCNet Quelltexte ... " Paket hinzugefügt. Dort gab es die folgende Änderungen:

  • die bisherige Konfigurationsdatei OPTION.INC wurde in KCNET.INC umbenannt und enthält jetzt getrennt die Terminal-Kodes für Input (Tastatur) und Output (Konsole), dadurch ist es jetzt möglich, andere Tasten der eigenen Tastatur für die gewünschte Eingabe-Funktion zu verwenden, indem man den entsprechenden Tastenkode in der dritten Spalte anpasst
  • die bisherige MAKE.SUB heisst jetzt MAKE-DR.SUB und übersetzt mit Hilfe von M80 (MS) und LINK131 (DR)
  • zusätzlich gibt es jetzt noch die MAKE-MS.SUB, welche die Übersetzung aller Programme mit Hilfe von M80 (MS) und L80 (MS) ermöglicht

Im Vorfeld der Veröffentlichung wurden Tests mit einigen K1520-Bürocomputern durchgeführt. Da FTP.COM durch die eigene editierbare Kommandozeile mehr Tasten(kodes) als die bisherigen Netzwerkprogramme benötigt, kommt es zu nicht direkt behebbaren Problemen mit den bei den KC85 CP/M's benutzten Tastaturkodes. Eine Eingabe mit Hilfe von CTRL+Taste ist zwar möglich und funktioniert mit den BC's auch aber auf Dauer ist das natürlich eher lästig und umständlich.

Wer andere Tasten seines Rechners nutzen will, muss, wie oben beschrieben, den gewünschten Tastenkode für jede Funktion per Software oder aus der Dokumentation ermitteln und in den Abschnitt "Keyboard-Codes (input)" der Konfigurationsdatei KCNET.INC in die dritte Spalte eintragen und das Programmpaket neu übersetzen. Da man anschliessend diese neu zugeordneten Tasten in allen Programmen verwenden kann, sollte man diesen kleinen einmaligen Aufwand auf sich nehmen.

Damit wünsche ich allen "KCNet"-Anwendern viel Spass beim Stöbern und Downloaden im Internet und vergesst zukünftig nicht, den PC mindestens einmal im Jahr einzuschalten, der langweilt sich sonst {#emotions_dlg.laughing} !

 

If FTP.COM is started without the "s" parameter, the operator will be greeted
with a Welcome message. Then you're in the interactive command line and can use
the available FTP.COM commands (see below). The following control functions are
available in the command line interface. The function mapping to a key on the
keyboard is set in column 3 of the file KCNET.INC:

SHIFT+Cursor left (^A) - Cursor to begin of line
Cursor left (^H) - Cursor left one char
Cursor right (^D) - Cursor right one char
SHIFT+Cursor right (^F) - Cursor to end of line

Tabulator (^I) - Complete command or show possible commands
Cursor up (^E) - Scroll backward through command history
Cursor down (^X) - Scroll forward through command history

Delete (^G) - Delete character under Cursor and shift left
Clear line (^Y) - Clear command line
Backspace (^_) - Delete character preceding Cursor and shift left

Enter (^M) - Execute command or finish input of parameters

Password input can not be edited, only the Clear line function is allowed. The
Tabulator and Scroll functions through the history are not available during the
input of parameters.

Available commands depend on the program status. Many commands are available
only, when you are connected to a FTP server.

During file transfers the command line remains active. So, for example, the
ABORT command can be sent to the server.

Disallowed commands are acknowledged with an error message.