AA_freight_johnnyberg_sxc_1070590.jpg

© Johnnyberg, sxc.hu

Einfacher Transport

Mit Netrw Daten schnell durchs Netz schieben

17.04.2014
Selbst ohne die aufwendige Infrastruktur schieben Sie Daten schnell und einfach übers Netzwerk. Dabei helfen die Werkzeuge aus dem Netrw-Paket.

Sie möchten schnell und unkompliziert Daten zwischen zwei Rechnern transportieren, es fehlt aber mangels Software der Zugriff auf etablierte Techniken wie SFTP oder SCP? Oder Sie verfügen auf der Zielmaschine über kein Benutzerkonto? Dann helfen die Programme aus dem Paket netrw [1] weiter.

Hat auf dem Zielsystem jemand das Programm Netread gestartet, steht dem Übertragen der Daten nichts mehr im Weg. Damit lauscht der Rechner am angegebenen Port auf die gesendeten Daten. Ein Ausnahme bildet der Firewall-Modus – dazu später mehr.

Der Vorteil der Ad-hoc-Lösung gegenüber einer, bei der ein Daemon ständig lauscht, liegt in der normalerweise nur kurzen Existenz des offenen Kanals. Das reduziert die Wahrscheinlichkeit, dass ein Angreifer zufällig über den offenen Port stolpert. Oft sitzt zusätzlich eine Person vor dem Bildschirm jedes beteiligten Rechners und verfolgt den Ablauf der Transfers.

Zum Senden benutzen Sie das Kommando Netwrite. Für sich gesehen besteht damit die Möglichkeit, alle möglichen Daten in die weite Welt zu übertragen. Wenn der Rechner nicht in einem geschützten Netz steht, empfiehlt es sich also, entsprechende Vorkehrungen zu treffen. Um die Daten als solches vor dem Mitlesen zu schützen, verschlüsseln Sie die Nutzlast am besten.

Grundfunktionen

Im einfachsten Fall beginnen Sie, indem Sie den Empfang von Daten mit Netread initialisieren. Dabei geben Sie lediglich die Portnummer an und leiten die Standardausgabe in eine Datei um (Listing 1, Zeile 1). Die Übertragung selbst starten Sie nach dem gleichen Muster (Listing 1, Zeile 2).

Listing 1

$ netread Port > Ausgabedatei
$ netwrite IP-Adresse Port < Datei

Abbildung 1 zeigt den Ablauf des Transfers. Die beiden Programme weisen gemeinsame Optionen auf, deren wichtigste Sie in der Tabelle "Optionen" finden.

Abbildung 1: Mit nur wenigen Parametern übertragen Sie Daten mithilfe der Tools Netread und Netwrite.

Optionen

Parameter Erläuterung
udp UDP statt TCP verwenden
-f Host lesende Seite beginnt mit dem Aufbau der Verbindung
-C Algorithmus verwende angegebenen Algorithmus (sha1, md5, rmd160, none)
-o Datei Angabe der Datei
-h Wert Fortschritt alle Wert KByte ausgeben
-H Wert Fortschritt alle Wert MByte ausgeben
-b Geschwindigkeit in Bits/Sekunde (anstelle Byte/Sekunde) angeben
-q Ausgaben am Bildschirm unterdrücken
-v ausführliche Meldungen ausgeben
-vv sehr ausführliche Meldungen ausgeben

Die Nutzlast beziehen Sie entweder direkt aus einer Datei oder verwenden die Option -i Datei bei Netwrite. Am Zielsystem verwenden Sie umgekehrt die Ausgabeumlenkung (>) oder die Option -o Datei zum Speichern der Daten.

Fortschritt

Die Anzeige des Fortschritts beim Übertragen der Daten erweist sich vor allem beim Senden größerer Datenmengen als hilfreich, um festzustellen, ob die Bytes tatsächlich noch durch das Netzwerk fließen. Sie dürfen zwischen einer Anzeige in KByte (-h) oder MByte (-H) wählen. Die Option verlangt die Angabe, für welche Datenmenge eine ausgegebene Raute steht. Das führt mitunter dazu, dass die Anzeige entweder seitenfüllend oder zu kurz ausfällt (Abbildung 2).

Abbildung 2: Da die Forschrittsanzeige flexibel auf einen Parameter reagiert, gilt es hier, einen für die Datenmenge sinnvollen Wert zu wählen.

In einem Shell-Skript (Listing 2) ließe sich mit Stat [2] feststellen, wie groß die Datei ausfällt, und anschließend ein brauchbarer ganzzahliger Wert für den Fortschrittsbalken übergeben. Beachten Sie, dass eine Zeile 50 Rauten fasst. Daher kommt bei sehr kleinen Datenmengen eventuell keine Anzeige zustande.

Listing 2

#! /bin/sh
if [ -z $1 ]; then
  echo "Dateiname fehlt - ABBRUCH!"
  exit
elif [ -z $2 ]; then
  echo "Zielrechner/Zielport fehlt - ABBRUCH!"
  exit
elif [ -z $3 ]; then
  echo "Zielrechner/Zielport fehlt - ABBRUCH!"
  exit
fi
menge=$(stat -c %s $1)
rauten=$(echo $menge/1014/50 | bc)
netwrite -h $rauten $2 $3 < $1

Die empfangende Seite kennt die Dateigröße im Voraus nicht. Entweder erfragen Sie den Wert vor dem Start des Transfers oder Sie verwenden den Wert 1000, der erfahrungsgemäß bei -h vernünftige Ausgaben produziert.

Abbildung 3 zeigt den Ablauf des Skripts. Der Übersichtlichkeit halber kommen Positionsparameter anstelle von Eingabemasken zum Einsatz. Mit den Möglichkeiten von Zenity [3] oder Cdialog [4] ließe sich dieses Skript entsprechend erweitern.

Abbildung 3: Ablauf des Skripts mit optimierter Anzeige des Fortschritts.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
Kommentare

Infos zur Publikation

LU 12/2014: ANONYM & SICHER

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...