Um Dateien übers Netz von einem Rechner auf einen anderen zu schaufeln, bedient man sich normalerweise ftp oder scp. Was aber, wenn man "eben schnell mal" eine oder mehrere Dateien einem anderen Rechner zum Download anbieten oder jemandem die Ausgabe eines Kommandozeilenbefehls übermitteln will? Dann erweisen sich die oben genannten Dienste und deren Server-Konfiguration als zu umständlich. Felix von Leitner hat wahrscheinlich dieses Problem gehabt und ncp entwickelt.
Ungewöhnliche Verpackung
Von der ncp-Homepage (http://www.fefe.de/ncp/) holen wir uns den Quelltext des Programms, der als -komprimiertes -Archiv vorliegt. Da nicht alle tar-Versionen die automatische Benutzung von bzip2 anbieten, erledigen wir das Auspacken der Reihe nach:
bunzip2 -c ncp-1.0.tar.bz2 | tar xf -
Anschließend geht es ans Kompilieren. Dazu ist bei ncp lediglich der Aufruf von make nötig. Das eigentliche Installieren des ausführbaren Programms ins Verzeichnis /usr/local/bin und das Anlegen von zwei symbolischen Links müssen wir mit root-Rechten vornehmen, da root das Schreibrecht in Systemverzeichnissen wie diesem vorbehalten ist.
cd ncp make su (root-Passwort eingeben) cp ncp /usr/local/bin cd /usr/local/bin ln -s ncp npoll ln -s ncp npush exit
Verschiedene Betriebsarten
ncp kann in unterschiedlichen Modi betrieben werden. Wird es unter dem Namen ncp aufgerufen, verschickt oder empfängt es eine oder mehrere Dateien. Als Beispiel versenden wir das gesamte -Verzeichnis von RechnerA nach RechnerB. Dazu wird ncp zuerst auf RechnerB im Servermodus gestartet und danach auf RechnerA im Clientmodus:
[RechnerB]$ ncp ncp: server mode. waiting for connection. [RechnerA]$ ncp RechnerA /etc tar: Entferne führenden `/' von absoluten Dateinamen im Archiv. drwxr-xr-x root/root 0 2000-05-30 09:26 etc/ -rw-r--r-- root/root 2096 1999-03-11 18:03 etc/hosts ...
Hier zahlt sich wieder einmal der modulare Aufbau von Unix aus. Anstatt sich selbst um das Aufsammeln aller Dateien im /etc-Verzeichnis zu kümmern, überlässt ncp diese Aufgabe tar. Dieses Tool wird auch auf der Empfängerseite aufgerufen, um dort die Dateien zu schreiben. Aus Sicherheitsgründen weigert sich tar, den absoluten Pfadnamen mit einzupacken, damit auf RechnerB nicht versehentlich das dortige /etc-Verzeichnis überschrieben wird.
Ruft man ncp unter den Namen npush oder npoll auf (deshalb die symbolischen Links, die wir bei der Installation angelegt haben), verschickt oder empfängt es die Standardeingabe.
Womit wir die Standardeingabe von npush füttern, bleibt uns selbst überlassen. Als Beispiel übertragen wir den Inhalt des Verzeichnisses texte als bzip2-komprimiertes Archiv, das auf der Gegenseite nicht ausgepackt, sondern nur gespeichert werden soll:
[RechnerA]$ tar cf - texte | bzip2 | npush npush: IPv4 multicast failed, trying IPv4 broadcast [RechnerB]$ npoll RechnerA > texte.tar.bz2 connecting to ::ffff:192.168.0.1
Nehmen wir die Kommandokette auf RechnerA mal auseinander. Zuerst erzeugt tar mit c ("create") ein Archiv, das durch f - auf der Standardausgabe landet. Mit dem Pipezeichen | wird diese an bzip2 umgeleitet, das wiederum seine Ausgabe an npush weiter gibt. Auf der Gegenseite (RechnerB) empfängt npoll die Daten und gibt sie auf der Standardausgabe aus, die mit > texte.tar.bz2 in eine Datei namens texte.tar.bz2 umgelenkt wird.



