Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

Wie große Datenmengen über Shell in Datei schreiben?

GNU/Linux-, *BSD- und Fricklerforum
Antworten
rund
Accuracy
Accuracy
Beiträge: 8184
Registriert: Aug 2000

Wie große Datenmengen über Shell in Datei schreiben?

Beitrag von rund »

Moinsen,
ich hab mal wieder ein Problem....
Ausgangssituation: Ich habe zwei Netzwerke, in jedem steht ein Linux-Server.
Die Netzwerke sind über einen weiteren Linux-Server miteinander verbunden, es gibt aber kein Routing (und darf auch keines geben). Auf den vermittelnden Linux-Server komm ich nur über SSH drauf und komme auch nur mit SSH weg, alles andere ist verboten (wirklich alles andere.. kein ls, kein cd, kein cat, vi etc.).

Wenn ich eine Datei von einem Netzwerk in das andere kopieren will habe ich mir mit Perl eine Lib geschrieben, die sich per Expect zunächst mit ssh auf den vermittelnden Server aufwählt und anschließend am Zielserver per "echo <Dateiinhalt> > <Dateiname>" die Datei auf der anderen Seite anlegt.
Das funktioniert eigentlich ganz gut, wird aber unmenschlich langsam, wenn es um größere Dateien geht. Konkret muss ich jetzt regelmäßig eine 14MB-Datei übertragen, nach 2h habe ich den Versuch aber abgebrochen...

Jetzt suche ich nach einer schnelleren Alternative auf der Shell eine File anzulegen. Vi mit Expect zu steuern wird wohl etwas schwierig werden.
Welche Varianten gibt es unter Linux noch (alle Server mit Suse)?

Btw. Ich hab beim öffnen der Stty-Session schon echo aus- und raw angeschalten. Der Stty-Speed ist mit 38400 angegeben, mehr scheint das POSIX-Modul auch nicht herzugeben. Vermutlich ist aber nicht der Stty-Speed, sondern bash-Selbst der limitierende Faktor, weil die CPU-Last während der 2h-Eingabe des Befehls bei 100% verweilt.

Edit: Cool wäre es, wenn es einen Texteditor gäbe, der ähnlich wie mailx funktioniert. Damit könnte man mit Expect wohl am besten arbeiten.

Danke schonmal!
factorx
Sorlag
Sorlag
Beiträge: 3776
Registriert: Nov 2000
Wohnort: Hannover

Beitrag von factorx »

Ein SSH-Tunnel sollte auch funktionieren, wenn zwischen den beiden Endpunkten kein Routing eingerichtet ist. Hauptsache ist, dass der vermittelnde Rechner mit je einem Beinchen in beiden Netzwerken steht und auch auf beide Rechner zugreifen darf.

Du baust also einen SSH-Tunnel zum Zielrechner auf (wiederum zum SSH-Port dieses Zielrechners) und kopierst dann mittels scp deine Dateien auf den getunnelten Port auf deinem lokalen Rechner, der nun in Wirklichkeit der SSH-Port des Zielrechners ist.

Das geht dann so:

ssh -N -f -L 2222:<ip-des-zielrechners>:22 <user>@<ip-des-vermittelnden-rechners>
scp -P 2222 <datei> <user>@127.0.0.1:

Ich weiß nicht, ob es eine klügere Lösung gibt, da du jetzt quasi zwei Mal in SSH verkapselst, aber das dürfte immerhin so funktionieren.
Bild
rund
Accuracy
Accuracy
Beiträge: 8184
Registriert: Aug 2000

Beitrag von rund »

Wäre denke ich ne Lösung, wenn es gehen würde, will aber nicht.
Ich bekomme den Passwortprompt vom Vermittlungsrechner, aber keinen vom Zielrechner.
Weder beim ssh, noch beim scp-Command.
factorx
Sorlag
Sorlag
Beiträge: 3776
Registriert: Nov 2000
Wohnort: Hannover

Beitrag von factorx »

Beim ersten Kommando bekommst du den Passwortprompt des vermittelnden Rechners, beim zweiten Kommando den des Zielrechners. Probiere es noch mal in dieser Reihenfolge.
Bild
rund
Accuracy
Accuracy
Beiträge: 8184
Registriert: Aug 2000

Beitrag von rund »

OK, mein Fehler, hatte den Doppelpunkt am Ende weg gelassen.
Würde also funktionieren.... und mit 3,2MB/s gar nicht mal so schlecht....
Das ganze ist dann in der Praxis recht kompliziert umzusetzen, wenn es darum geht verschiedene User-Sessions zu trennen, aber mal schauen... werd ich zumindest mal ne Nacht drüber schlafen.

Eine andere Möglichkeit die mir gestern eingefallen ist, wäre, dass ich mir meinen eigenen "Texteditor" in Form eines Mini-Perl-Scriptes schreibe, dem ich nach dem Aufruf (wenn die bash vermutlich nicht mehr belastet wird) den Dateiinhalt übergebe. Von der Performance her wäre das aber sicher nicht mit dem scp von oben vergleichbar....
factorx
Sorlag
Sorlag
Beiträge: 3776
Registriert: Nov 2000
Wohnort: Hannover

Beitrag von factorx »

Wie wär's, wenn ihr einfach ein Routing aufsetzt, und den Verkehr ganz einfach durch eine anständige Firewall reglementiert? :ugly:
Bild
rund
Accuracy
Accuracy
Beiträge: 8184
Registriert: Aug 2000

Beitrag von rund »

factorx hat geschrieben:Wie wär's, wenn ihr einfach ein Routing aufsetzt, und den Verkehr ganz einfach durch eine anständige Firewall reglementiert? :ugly:
:lol: du weiß schon bei welcher Firma ich arbeite? ;)
Jede stattfindende IP-Kommunikation kann inzwischen als halbes Wunder bezeichnet werden... Securityvorständen sei Dank....
Denn eigentlich brauchen wir die ganzen Rechner und Netze doch gar nicht, wir haben doch drölf Millionen in die eierlegende Wollmilchsau der IT-Systeme investiert, warum nutzt ihr nicht einfach die...?

Aber back to Topic ;)
Hab ich die Möglichkeit nach dem SCP einen Command auf der Gegenstelle auszuführen um z.B. ein Konvertierungsskript aufzurufen?
factorx
Sorlag
Sorlag
Beiträge: 3776
Registriert: Nov 2000
Wohnort: Hannover

Beitrag von factorx »

Kein Plan, wie es netzwerkmäßig bei der Telekom intern aussieht. Würde mich allerdings stark interessieren, insbesondere was den Securitybereich angeht. Aber eigentlich war ich bislang der Meinung, dass zentrale Firewalls, die ein Kommunikationsregelwerk zwischen mehreren Netzen umsetzen, recht State of the Art wären. :ugly:

Solch doppeltes SSH-Frickelwerk, das dort jetzt nötig ist, erzeugt auch einen gewissen Overhead, und macht das ganze nicht sicherer, wie man sieht. Benutzerabhängige Zugriffsbeschränkungen können moderne Firewalls (z.B. Palo Alto, Check Point, usw...) auch.

Ach ja, zu deiner Frage:

Nein, scp kann das selbst nicht. Das Kommando müsstest du dann nach dem Kopieren per SSH selbst (oder scriptgesteuert) aufrufen. Der dazu nötige Tunnel besteht ja schon. Um ein einzelnes Kommando auszuführen, kannst du z.B. folgendes machen:

ssh -p 2222 <user>@127.0.0.1 <kommando/script/bla/...>
Bild
rund
Accuracy
Accuracy
Beiträge: 8184
Registriert: Aug 2000

Beitrag von rund »

factorx hat geschrieben:Kein Plan, wie es netzwerkmäßig bei der Telekom intern aussieht. Würde mich allerdings stark interessieren, insbesondere was den Securitybereich angeht.
edit: wer es lesen wollte hat es gelesen....

factorx hat geschrieben: Ach ja, zu deiner Frage:

Nein, scp kann das selbst nicht. Das Kommando müsstest du dann nach dem Kopieren per SSH selbst (oder scriptgesteuert) aufrufen. Der dazu nötige Tunnel besteht ja schon. Um ein einzelnes Kommando auszuführen, kannst du z.B. folgendes machen:

ssh -p 2222 <user>@127.0.0.1 <kommando/script/bla/...>
OK, gut zu wissen, werde das in meine zukünftigen Überlegungen einfließen lassen, evtl. versuch ich mal die gesamte API umzubauen... wäre da nicht wieder das Zeitthema... argh... Nebenbei muss man ja noch den Job machen, für den man eigentlich bezahlt wird...
rund
Accuracy
Accuracy
Beiträge: 8184
Registriert: Aug 2000

Beitrag von rund »

OK, also ich hab jetzt mal die beiden Hauptfunktionen der Lib testweise auf das SSH-Tunneling umgeschrieben.

Download:
Beim Laden von kleinen Webseiten auf der Remote-Maschine bin ich etwas enttäuscht, dass es keine Geschwindigkeitsvorteil gibt, eher im Millisekundenbereich langsamer...
Ich hätte mir auch erhofft, dass die neue Methode evtl. auch mehrere Frames gleichzeitig lade kann, aber das scheint nach wie vor nur nacheinander zu passieren. Das könnte aber auch ein generelles Browserverhalten sein das eben nur auffällt weil der Seitenaufbau eben etwas langsamer ist.
Bei großen Seiten hab ich durchaus einen deutlichen Geschwindigkeitsschub, bis zu 3x.

Upload:
Bei kleinen Dateien scheint das SCP etwas träge zu sein, hier merkt man den Unterschied etwas mehr, aber ich hab keinerlei Probleme mehr mit großen Dateien und je größer die Datei umso großartiger der Unterschied.

Fazit: Werde die gesamet Lib umschreiben, aber wenn einer eine Idee hat, warum die Frames nur nacheinander geladen werden - oder besser - was man dagegen machen kann --> her damit :)
Antworten