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 11/2014: VIDEOS BEARBEITEN

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

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...