Dateien sicher von einem Server zum anderen Schicken
Andreas
- programmiertechnik
Hallo.
Ich habe 2 Server, die getrennt von einander stehen. Jetzt möchte ich bestimmte Dateien täglich per Cronjob über das Internet vom einen auf den anderen Server schicken, und dort in einem bestimmten Verzeichnis speichern. Natürlich muß die Datenübertragung dazwischen irgendwie gesichert werden, da diese Daten schon als sensibel einzustufen sind.
Jetzt die Frage, wie mache ich das am besten?
1. Möglichkeit die mir in den Sinn kam:
Evtl. Datein per GPG auf dem 1. Server verschlüsseln, und per mail an ein Postfach senden, und dort dann von dem anderen Server die Mail abholen, den Anhang speichern und entschlüsseln. Kann ich überhaupt automatisch per GPG entschlüsseln? Ich weiß, das ist ein Sicherheitsrisiko, aber der 2. Server ist kein ständig über das www erreichbarer Server, damit auch nicht so stark gefärdet. Außerde sind die Scripte gar nicht von außen erreichbar.
Was sagt Ihr zu dieser Methode? Problem ist nur, wenn die Dateien etwas größer werden, oder? Kommt dann halt auf Banbreite und Postfachgröße an.
2. Möglichkeit:
FTP Verbindung vom einen Server aus öffnen, und darüber eine zuvor verschlüsselte Datei übertragen. Was haltzet Ihr davon? Problem hier könnte die Laufzeitbegrenzung(90 sec.) der Scripte sein, oder?
3. Möglichkeit:
SSH-Tunnel, aber da kenne ich mich gar nicht mit aus, wie funktioniert sowas, und kann man das problemlos mit PHP, oder wenigstens PERL realisieren?(Aufwand vergleichbar mit obigen Lösungen?)
4. Möglichkeit:
Irgendwas mit SSL, aber wie ich da Dateien übertragen soll weiß ich nicht, halt per HTTP wohl kaum, also mit fsockopen() kann ich an dieser Stelle wohl nichts anfangen, oder? Kann man Dateien derart überhaupt per HTTP übertragen?
Was sagt Ihr dazu? Wie würdet Ihr das machen?
Viele Grüße
Andreas
Hallo Andreas
Wenn Du sowieso schon ssh hast (was ich aus 3. schließe) kannst Du die Datei einfach mit scp übertragen.
Das ist ein Copybefehl, der Dateien verschlüsselt übers Netzwerk überträgt (gehört zu ssh dazu).
Grüße
Daniel
Hallo!
Wenn Du sowieso schon ssh hast (was ich aus 3. schließe) kannst Du die Datei einfach mit scp übertragen.
Ja, ich habe SSH auf dem Rechner, der die Dateien versenden soll. Der andere ist ein Win2K Server. Der soll die Dateien empfangen und speichern. SSH habe ich da nicht, ist doch nur was für Linux, oder? Oder bracueh ich das nur einseitig?
Das ist ein Copybefehl, der Dateien verschlüsselt übers Netzwerk überträgt (gehört zu ssh dazu).
Wie sicher ist die Verschlüsselung? Hat das was mit SSH-Tunneling zu tun? X11 Forewarding, oder wie das alles heißt? Könntest Du nur so ganz grob umreißen wie das dann funktioniert, mit einem Linux-Rechner und SSH und einem Win2K Rechner? Kannnm mir das irgendwie nicht vorstellen! Oder kann sich irgendwie der Win2K-Rechner über ein PHP oder PERL-Scrip auf dem Linux-Rechner einwählen, und dann die Daten übertragen?
Viele Grüße
Andreas
Hallo,
Ja, ich habe SSH auf dem Rechner, der die Dateien versenden soll. Der andere ist ein Win2K Server. Der soll die Dateien empfangen und speichern. SSH habe ich da nicht, ist doch nur was für Linux, oder? Oder bracueh ich das nur einseitig?
Nein - SSH ist natürlich beidseitig. Aber es gibt auch SSH-Clients für Windows. (ich verwende immer PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/)
Wie sicher ist die Verschlüsselung? Hat das was mit SSH-Tunneling zu tun? X11 Forewarding, oder wie das alles heißt? Könntest Du nur so ganz grob umreißen wie das dann funktioniert, mit einem Linux-Rechner und SSH und einem Win2K Rechner? Kannnm mir das irgendwie nicht vorstellen! Oder kann sich irgendwie der Win2K-Rechner über ein PHP oder PERL-Scrip auf dem Linux-Rechner einwählen, und dann die Daten übertragen?
SSH-Verschlüsselung ist asymetrisch (vmtl. RSA oder DSA). Ich weiß jetzt nicht, wie groß die Schlüssellänge ist, aber mindestens 128 bit; das könnte höchstens die NSA knacken, wenn überhaupt ;-)
Ich würde sowieso vom Win2K-Rechner auf den Linux-Rechner zugreifen, da der Linux-Rechner immer im Internet ist (das erschließe ich), der Win2K-Rechner aber nicht. Auf dem Linux-Rechner muss ein SSH-Server laufen, unter Windows muss dann nur ein SSH-Client mit Kopierfunktion laufen (bei PuTTY, s.o., ist ein Kommandozeilen-SSH-Kopiertool dabei, so kann man es auch gut in Batch-Dateien einsetzen)
SSH-Tunneling ist einfach ein Tunnel: Auf Rechner A läuft das "Tunnelprogramm" und das baut eine Verbindung zum "Tunnelprogramm" von Rechner B auf. Das Tunnelprogramm A wartet auf z.B. Port 2222 (des Rechners A) auf Daten und leitet die an B weiter. Dieses wartet auf z.B. Port 4261 (des Rechners B) auf Daten. Wenn jetzt Daten an Port 2222 des Rechners A geschickt werden, dann kann jemand, der am Port 4261 des Rechners B zuhört, diese mitbekommen. Der Tunnel ist SSH-Verschlüsselt und die Ports per default nur an localhost gebunden (d.h. wenn es um Port 2222 des Rechners A geht, dann geht es um Port 2222 des localhost virtuellen Netzwerks des Rechners A, nicht um den Port 2222, der nach außen hin offen ist; jeder Rechner hat nämlich zusätzlich zur normalen, physikalischen Netzanbindung ein virtuelles, internes Netz, das dazu da ist, sich mit sich selbst zu verbinden)
X11-Forwarding braucht man, um X-Window-Sessions (X-Windows ist das graphische Interface aller Unix-Derivate; es ist komplett netzwerktransparent geschrieben, d.h. ich kann in Rom sitzen und mit einem Programm arbeiten, das in New York läuft) per SSH zu tunneln. Das hat hiermit nichts zu tun.
Grüße,
Christian
Hallöchen!
Nein - SSH ist natürlich beidseitig. Aber es gibt auch SSH-Clients für Windows. (ich verwende immer PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/)
:-) Hab ich ja! Ich wußte nur nicht, ob man das mit so einem Client auch automatisiern kann. Da gibt es ja auch das Commandline-Tool von Putty, ich habe glücklicherweise auf dem Rechner Apache, PHP und PERL installiert. Also könnte ich ja mnit System einen entsprechenden Aufruf machen. Müßte nur sichergestellt sein, das zu diesem Zeitpunkt eine Internetverbindung besteht, was bei DSL nicht wirklich einfach zu realisieren ist! Ich habe es bis jetzt mit keiner Batch-Datei geschafft, das sich der Rechner ohne Probleme anwählt:-(
SSH-Verschlüsselung ist asymetrisch (vmtl. RSA oder DSA). Ich weiß jetzt nicht, wie groß die Schlüssellänge ist, aber mindestens 128 bit; das könnte höchstens die NSA knacken, wenn überhaupt ;-)
Sollte reichen ;-)
Ich würde sowieso vom Win2K-Rechner auf den Linux-Rechner zugreifen, da der Linux-Rechner immer im Internet ist (das erschließe ich), der Win2K-Rechner aber nicht. Auf dem Linux-Rechner muss ein SSH-Server laufen, unter Windows muss dann nur ein SSH-Client mit Kopierfunktion laufen (bei PuTTY, s.o., ist ein Kommandozeilen-SSH-Kopiertool dabei, so kann man es auch gut in Batch-Dateien einsetzen)
Ja, genau so siehts aus. Da gibts ja PSCP und PSFTP, aber mit dem FTP-Tool wohl besser nicht, oder? Damit könnte ich mich verbinden, ganz automatisch, ohne dass ich manuell was eingeben muß? Die Eingabe könnte ich ja lieber vorher im Script machen, wenn überhaupt, mal sehen.
SSH-Tunneling ist einfach ein Tunnel: Auf Rechner A läuft das "Tunnelprogramm" und das baut eine Verbindung zum "Tunnelprogramm" von Rechner B auf. Das Tunnelprogramm A wartet auf z.B. Port 2222 (des Rechners A) auf Daten und leitet die an B weiter. Dieses wartet auf z.B. Port 4261 (des Rechners B) auf Daten. Wenn jetzt Daten an Port 2222 des Rechners A geschickt werden, dann kann jemand, der am Port 4261 des Rechners B zuhört, diese mitbekommen. Der Tunnel ist SSH-Verschlüsselt und die Ports per default nur an localhost gebunden (d.h. wenn es um Port 2222 des Rechners A geht, dann geht es um Port 2222 des localhost virtuellen Netzwerks des Rechners A, nicht um den Port 2222, der nach außen hin offen ist; jeder Rechner hat nämlich zusätzlich zur normalen, physikalischen Netzanbindung ein virtuelles, internes Netz, das dazu da ist, sich mit sich selbst zu verbinden)
OK. Also sollte es sicher sein. Und damit kopiere ich dann dateien, kann ich in beide Richtungen kopieren?
Und das 2. Problem - ich muß vorher auf dem Linux-Server die Datei erst erzeugen. Wie kann ich das denn wohl kombinieren? Wenn das Erzeugen ein paar Sekunden in Anspruch nimmt, wie könnte ich das dann in Gang setzen? Die Dateien werden durch ein PHP-Script auf dem Linux-Server erzeugt. Sollte ich vielleicht in einem PHP-Script auf dem Windows-Rechner erst das entfernte Script zum Erzeugen der Daten ausführen(fsockopen()), und dann evtl noch sleep(10) und dann über system() die SSH-Verbindung herstellen und die Daten kopieren?
Oder hälst Du diese Methode in so einem Fall nicht für angebrach? Was hälst Du von den 3 anderen angesprochenen Möglichkeiten, oder was könnte man noch machen?
Vielen Dank schonmal!
Grüße
Andreas
Grüße,
Christian
Hallo,
:-) Hab ich ja! Ich wußte nur nicht, ob man das mit so einem Client auch automatisiern kann. Da gibt es ja auch das Commandline-Tool von Putty, ich habe glücklicherweise auf dem Rechner Apache, PHP und PERL installiert. Also könnte ich ja mnit System einen entsprechenden Aufruf machen. Müßte nur sichergestellt sein, das zu diesem Zeitpunkt eine Internetverbindung besteht, was bei DSL nicht wirklich einfach zu realisieren ist! Ich habe es bis jetzt mit keiner Batch-Datei geschafft, das sich der Rechner ohne Probleme anwählt:-(
Wenn ich's richtig verstanden habe, ist der DSL-Rechner Win2k un der Linuxrechner fest angebunden. Dann würde ich vom Windows-Rechner aus mit PSCP die Dateien kopieren (bsp: pscp -pw <Passwort> -q <benutzer>@<linuxrechner>:<datei> <lokale_datei>)
Ja, genau so siehts aus. Da gibts ja PSCP und PSFTP, aber mit dem FTP-Tool wohl besser nicht, oder? Damit könnte ich mich verbinden, ganz automatisch, ohne dass ich manuell was eingeben muß? Die Eingabe könnte ich ja lieber vorher im Script machen, wenn überhaupt, mal sehen.
FTP definitiv nicht, da das auf Basis von PSCP ein FTP-Kommandozeilentool emuliert. Wie PSCP verwendet werden sollte, habe ich oben beschrieben.
SSH-Tunneling ist einfach ein Tunnel: Auf Rechner A läuft das "Tunnelprogramm" und das baut eine Verbindung zum "Tunnelprogramm" von Rechner B auf. Das Tunnelprogramm A wartet auf z.B. Port 2222 (des Rechners A) auf Daten und leitet die an B weiter. Dieses wartet auf z.B. Port 4261 (des Rechners B) auf Daten. Wenn jetzt Daten an Port 2222 des Rechners A geschickt werden, dann kann jemand, der am Port 4261 des Rechners B zuhört, diese mitbekommen. Der Tunnel ist SSH-Verschlüsselt und die Ports per default nur an localhost gebunden (d.h. wenn es um Port 2222 des Rechners A geht, dann geht es um Port 2222 des localhost virtuellen Netzwerks des Rechners A, nicht um den Port 2222, der nach außen hin offen ist; jeder Rechner hat nämlich zusätzlich zur normalen, physikalischen Netzanbindung ein virtuelles, internes Netz, das dazu da ist, sich mit sich selbst zu verbinden)
OK. Also sollte es sicher sein. Und damit kopiere ich dann dateien, kann ich in beide Richtungen kopieren?
Nein, Tunnelling habe ich nur der Vollständigkeit halber erwähnt. Mit PSCP kann man direkt Dateien über SSH übertragen, ohne vorher umständlich Tunnels aufbauen zu müssen.
Und das 2. Problem - ich muß vorher auf dem Linux-Server die Datei erst erzeugen. Wie kann ich das denn wohl kombinieren? Wenn das Erzeugen ein paar Sekunden in Anspruch nimmt, wie könnte ich das dann in Gang setzen? Die Dateien werden durch ein PHP-Script auf dem Linux-Server erzeugt. Sollte ich vielleicht in einem PHP-Script auf dem Windows-Rechner erst das entfernte Script zum Erzeugen der Daten ausführen(fsockopen()), und dann evtl noch sleep(10) und dann über system() die SSH-Verbindung herstellen und die Daten kopieren?
Ich würde die Datei erzeugen, indem ich erst das Skript ausführen lasse:
(plink ist ein Tool, das man auch auf der PuTTY-Seite downloaden kann)
plink -ssh -pw <Passwort> <Benutzer>@<Linuxrechner> <Pfad-Zum-Script>
plink kehrt dann erst nach beenden des Skripts zur Batchdatei oder zur Kommandozeile (je nachdem von wo man es aufgerufen hat) zurück und dann kann man über pscp die Datei, die man haben will, kopieren.
Grüße,
Christian
Hallo!
Wenn ich's richtig verstanden habe, ist der DSL-Rechner Win2k un der Linuxrechner fest angebunden. Dann würde ich vom Windows-Rechner aus mit PSCP die Dateien kopieren (bsp: pscp -pw <Passwort> -q <benutzer>@<linuxrechner>:<datei> <lokale_datei>)
Nein. Der linux-Server ist per Standleitung angebunden, steht aber in einer anderen Stadt, der Win2K Rechner ist normal über T-DSL un einen Router angebunden. Wobei, durch den Router ist der Rechner fast immer online, und hat eine eigene Subdomain, die auzf einen DynDNS Acount umgeleitet wird. Also im prinzip auch so behandeln wie eine Standverbindung!
Geht das kopieren denn in beide Richtungen?
FTP definitiv nicht, da das auf Basis von PSCP ein FTP-Kommandozeilentool emuliert. Wie PSCP verwendet werden sollte, habe ich oben beschrieben.
Was heißt emuliert? Ich dachte das wäre sowas wie ein Kommandozeilen FTP-Client, über SSH gesichert, was sollte daran schlechter sein?
Ich würde die Datei erzeugen, indem ich erst das Skript ausführen lasse:
(plink ist ein Tool, das man auch auf der PuTTY-Seite downloaden kann)
plink -ssh -pw <Passwort> <Benutzer>@<Linuxrechner> <Pfad-Zum-Script>
plink kehrt dann erst nach beenden des Skripts zur Batchdatei oder zur Kommandozeile (je nachdem von wo man es aufgerufen hat) zurück und dann kann man über pscp die Datei, die man haben will, kopieren.
Das hört sich sehr vielversprechend an! Das werde ich probieren! Leider kenne ich mich mit batch-Programmierung gar nicht aus. Weißt Du vielleicht, wo ich mich da etwas "weiterbilden" könnte? Wäre bestimmt besser als von PHP, wäre aber dasselbe, oder?
Ich hätte zu diesem Thema noch eine 2. Frage:
ich habe auf denselben Rechnern jeweils eine MySQL-Datenbank, die miteinander synchronisiert werden sollen, in beiden Rechnern können in verschiedenen Tabellen Einträge gemacht und geändert werden, ist aber nicht wichtig für den Rest. Zur Zeit funktioniert das so, das ich von dem Linux-Server Gleichzeitig Verbindung zur locolhost DB dort aufnehme, UND quer üer das Netz zur DB auf em Win2K Rechner. Dann gleiche ich die Daten mit einem individuellen Script ab, und fertig. Aber Sicherheitstechnisch ist das ja ein Graus!
Was hätte ich hier für Möglichkeiten? Am liebsten wär mir auf beiden Seiten ein mySQLdump, aber nur über bestimmte Datensätze, die seit einem best. Zeitpunkt geändert wurden(was leider nicht geht, oder?). Die könnte ich dann in Dateien laden, und wie oben beschrieben sicher übertragen.
Aber ich hatte da auch schon eine andere Idee: könnte ich die Daten nicht in den POST Header einfügen, und das ganze dann über SSL zum anderen Server übertragen, und da die Daten zu verarbeiten und ebenfalls das notwendige zurückzuschicken? Das wäre eine Superlösung, oder was haltet Ihr davon? Könnte ich ja mit fsockopen() machen! Aber Geht das damit auch über SSL? Sonst müßte ich die Daten im POST-Teil mit GPG verschlüsseln, wo ich wieder nicht weiß, ob ich diese _automatisch_ entschlüsseln kann.
Was meint ihr zu diesem Thema?
Schonmal vielen Dank, für die Hilfe bisher!
Viele Grüße
Andreas
Hallo,
Geht das kopieren denn in beide Richtungen?
ja - auf dem Linuxrechner muss ja der SSH-Server laufen und mit pscp kann man
dann so Dateien kopieren (die Initiative muss vom Windowsrechner ausgehen, da fuer Windows AFAIK kein kostenloser SSH-Server zur verfuegung steht):
von remote auf lokal: pscp -pw <passwort> <benutzer>@<remote-host>:<datei> <lokale datei>
von lokal auf remote: pscp -pw <passwort> <lokale datei> <benutzer>@<remote-host>:<datei>
Was heißt emuliert? Ich dachte das wäre sowas wie ein Kommandozeilen FTP-Client, über SSH gesichert, was sollte daran schlechter sein?
Nein. Es ist nicht schlechter. Vielleicht kennst Du ja das Kommandozeilentool "ftp" von UNIX und Windows. PSFTP emuliert dieses Kommandozeilentool, indem es den Teil des SSH-Protokolls verwendet, den auch PSCP verwendet.
Das hört sich sehr vielversprechend an! Das werde ich probieren! Leider kenne ich mich mit batch-Programmierung gar nicht aus. Weißt Du vielleicht, wo ich mich da etwas "weiterbilden" könnte? Wäre bestimmt besser als von PHP, wäre aber dasselbe, oder?
PHP ist eine Web-Sprache. Ich rede hier von Skripten, die unabhaengig von Webserver laufen. Man kann zwar auch PHP-Skripte ohne Webserver laufen lassen, aber da wuerde ich dann doch lieber Perl verwenden, falls man viele solcher Features braucht. Aber eine Batchdatei reicht in dem Fall aus. Grundsaetzliches zu Batchdateien: Man schreibt einfach einen Befehl nach der anderen in eine Datei und gibt ihr die Endung .bat bzw .cmd. Dann kann man diese ausfuehren. Aber weiterfuehrende Links kann ich leider nicht anbieten.
Ich hätte zu diesem Thema noch eine 2. Frage:
ich habe auf denselben Rechnern jeweils eine MySQL-Datenbank, die miteinander synchronisiert werden sollen, in beiden Rechnern können in verschiedenen Tabellen Einträge gemacht und geändert werden, ist aber nicht wichtig für den Rest. Zur Zeit funktioniert das so, das ich von dem Linux-Server Gleichzeitig Verbindung zur locolhost DB dort aufnehme, UND quer üer das Netz zur DB auf em Win2K Rechner. Dann gleiche ich die Daten mit einem individuellen Script ab, und fertig. Aber Sicherheitstechnisch ist das ja ein Graus!
Was hätte ich hier für Möglichkeiten? Am liebsten wär mir auf beiden Seiten ein mySQLdump, aber nur über bestimmte Datensätze, die seit einem best. Zeitpunkt geändert wurden(was leider nicht geht, oder?). Die könnte ich dann in Dateien laden, und wie oben beschrieben sicher übertragen.
Hmm - MySQL replizieren ist ein Thema fuer sich. Ich hab' auf dem letzten Linuxtag (2001) ein Vortrag der MySQL AB gehoert zu dem Thema - es ist recht kompliziert.
Aber ich hatte da auch schon eine andere Idee: könnte ich die Daten nicht in den POST Header einfügen, und das ganze dann über SSL zum anderen Server übertragen, und da die Daten zu verarbeiten und ebenfalls das notwendige zurückzuschicken? Das wäre eine Superlösung, oder was haltet Ihr davon? Könnte ich ja mit fsockopen() machen! Aber Geht das damit auch über SSL? Sonst müßte ich die Daten im POST-Teil mit GPG verschlüsseln, wo ich wieder nicht weiß, ob ich diese _automatisch_ entschlüsseln kann.
POST? Das wuerde ja einen Webserver implizieren... dann lieber ueber scp bzw. pscp uebertragen. Dateien ueber das HTTP-Protokoll zu uebertragen ist immer abzuraten.
Gruesse,
Christian
Hallo!
Nein. Es ist nicht schlechter. Vielleicht kennst Du ja das Kommandozeilentool "ftp" von UNIX und Windows. PSFTP emuliert dieses Kommandozeilentool, indem es den Teil des SSH-Protokolls verwendet, den auch PSCP verwendet.
Naja, anscheinend bietet aber schon pscp alles das was ich benötige.
Hmm - MySQL replizieren ist ein Thema fuer sich. Ich hab' auf dem letzten Linuxtag (2001) ein Vortrag der MySQL AB gehoert zu dem Thema - es ist recht kompliziert.
Naja, replizieren ist wohl das falsche, da ich gleichzeitig in beiden Datenbanken änderungen vornehme, oder? Replizieren ist doch nur, wenn eine Kopie aktuell gehalten wird, auf dei dann zugegriffen, aber nicht geändert werden soll, oder?
POST? Das wuerde ja einen Webserver implizieren... dann lieber ueber scp bzw. pscp uebertragen. Dateien ueber das HTTP-Protokoll zu uebertragen ist immer abzuraten.
Ok, OK, aber was gibt es noch für Möglichkeiten, Daten über das Internet zu übertragen, FTP und
SCP kann doch noch nicht alles sein, oder?
Viele Grüße
Andreas
Hallo,
Naja, anscheinend bietet aber schon pscp alles das was ich benötige.
Hab' ich ja auch gemeint :-)
Naja, replizieren ist wohl das falsche, da ich gleichzeitig in beiden Datenbanken änderungen vornehme, oder? Replizieren ist doch nur, wenn eine Kopie aktuell gehalten wird, auf dei dann zugegriffen, aber nicht geändert werden soll, oder?
Das ist nocht komplizierter als replizieren ... (da das ja im Prinzip replizieren in 2 Richtungen ist)
Das einfachste ist warscheinlich einfach regelmaessig ein komplettes Dump zu machen und das dann ueber FTP oder SCP uebertragen und wieder einspielen ...
Ok, OK, aber was gibt es noch für Möglichkeiten, Daten über das Internet zu übertragen, FTP und
SCP kann doch noch nicht alles sein, oder?
Natuerlich nicht. Aber in so einer Aufgabenstellung wuerde ich als letztes HTTP verwenden, mehr wollte ich auch nicht sagen. Aber vielleicht gibt es ja hier im Forum MySQL-Experten, die einen besseren Weg wissen.
Gruesse,
Christian
Hi Andreas,
Nein - SSH ist natürlich beidseitig.
Aber es gibt auch SSH-Clients für Windows.
(ich verwende immer PuTTY:
http://www.chiark.greenend.org.uk/~sgtatham/putty/)
:-) Hab ich ja! Ich wußte nur nicht, ob man das
mit so einem Client auch automatisieren kann.
Vorsicht!
SSH ist - wie HTTP - ein Client-Server-Protokoll.
Wenn Du auf der Maschine A den Vorgang, Daten zur
Maschine B zu senden, anstoßen willst (mit scp),
dann brauchst Du auf Maschine A den Client und auf
Maschine B den SSH-Server. Der Client ist es, der
die Initiative für einen Auftrag ausübt; der Server
dagegen kann viele Aufträge gleichzeitig verarbeiten.
So, wie ich Deine Anforderung allerdings verstanden
habe, ist Maschine A ein UNIX-Server (der hätte den
SSH-Server) und Maschine B ein Windows-Rechner (der
hätte nur den SSH-Client).
Das würde bedeuten, daß Du die Übertragung vom
Rechner B aus anstoßen müßtest.
Da gibt es ja auch das Commandline-Tool von Putty,
ich habe glücklicherweise auf dem Rechner Apache,
PHP und PERL installiert. Also könnte ich ja mnit
System einen entsprechenden Aufruf machen.
Genau das würde ich _nicht_ tun.
Denn in diesem Falle ("system(scp)" via CGI) kann Dir
der CGI-Timeout des Apache weh tun, was Du ja genau
vermeiden möchtest.
Dann würde ich schon lieber auf den "cron" verzichten
und auf der Windows-Maschine die Automatik zur Daten-
abholung realisieren.
Müßte nur sichergestellt sein, das zu diesem Zeit-
punkt eine Internetverbindung besteht, was bei DSL
nicht wirklich einfach zu realisieren ist!
Die zugrundeliegende Verbindung brauchst Du aber immer
Ja, genau so siehts aus. Da gibts ja PSCP und PSFTP,
aber mit dem FTP-Tool wohl besser nicht, oder?
Ich kenne die konkreten Tools nicht, würde aber doch
empfehlen, irgendwas aus der FTP-Schiene zu nehmen.
Dort hast Du mehr Fehlerdiagnosemöglichkeiten als
bei scp - Du willst ja auch erkennen können, ob die
Übertragung funktioniert hat, Du willst Protokoll-
Informationen aufzeichnen lassen usw. (das schließe
ich aus "cron" aus "Aufrtraggeber", was für mich eine
"Produktionsumgebung" impliziert).
In diesem Falle wäre auf dem Windows-Rechner eine
Server-Software für die entsprechende FTP-Variante
zu installieren - und dann wäre "cron" als Initiativ-
geber wieder okay.
Und das 2. Problem - ich muß vorher auf dem Linux-
Server die Datei erst erzeugen.
Wie kann ich das denn wohl kombinieren?
Wenn das so ist, dann scheidet m. E. die Initiative
von Windows-Seite aus.
(Und damit auch die scp-Methode.)
Die Übertragung sollte ein success-event der Erzeugung
der Datei sein. Alles andere ist Glücksspiel.
Sollte ich vielleicht in einem PHP-Script auf dem
Windows-Rechner erst das entfernte Script zum
Erzeugen der Daten ausführen(fsockopen()), und dann
evtl noch sleep(10) und dann über system() die SSH-
Verbindung herstellen und die Daten kopieren?
Vorstellbar - aber m. E. viel zu kompliziert.
Oder hälst Du diese Methode in so einem Fall nicht
für angebrach? Was hälst Du von den 3 anderen
angesprochenen Möglichkeiten, oder was könnte man
noch machen?
Ich finde die Idee, einen FTP-artigen Server auf der
Windows-Maschine zu installieren und die gesamte
Ablauf-steuerung der UNIX-Maschine zu überlassen,
am naheliegendsten.
Was die Verschlüsselung angeht: Ich habe in Erinnerung,
daß hier im Forum erst kürzlich eine FTP-Variante mit
Verschlüsselung erwähnt wurde, finde aber im Moment
keinen passenden Archiv-Suchbegriff dazu.
Viele Grüße
Michael
P.S.: Lesetip: http://aktuell.de.selfhtml.org/artikel//server/linux/software.htm#winscp
Hallo,
Da gibt es ja auch das Commandline-Tool von Putty,
ich habe glücklicherweise auf dem Rechner Apache,
PHP und PERL installiert. Also könnte ich ja mnit
System einen entsprechenden Aufruf machen.
Genau das würde ich _nicht_ tun.
Denn in diesem Falle ("system(scp)" via CGI) kann Dir
der CGI-Timeout des Apache weh tun, was Du ja genau
vermeiden möchtest.
Dann würde ich schon lieber auf den "cron" verzichten
und auf der Windows-Maschine die Automatik zur Daten-
abholung realisieren.
Vergiß nicht, daß mit 'geplante tasks' es auch ein 'cron'-Pedant unter Win2k gibt.
In diesem Falle wäre auf dem Windows-Rechner eine
Server-Software für die entsprechende FTP-Variante
zu installieren - und dann wäre "cron" als Initiativ-
geber wieder okay.
Aufgrund der Tatsache, daß zeitgesteuerte Anwendungen auch unter Windows realisierbar sind, ist dies nicht zwangsläufig notwendig.
Und das 2. Problem - ich muß vorher auf dem Linux-
Server die Datei erst erzeugen.
Wie kann ich das denn wohl kombinieren?
Wenn das so ist, dann scheidet m. E. die Initiative
von Windows-Seite aus.
Nicht zwangsläufig;-)
Mit plink (auch aus der oben erwähnten Toolsammlung) kann man in Batchdateien remote-Anwendungen ausführen lassen. Dadurch lassen sich ganz nette Sachen erledigen. So könnte ich mir vorstellen, daß Linux-seitig ein Shell-Script die gewünschten Daten sammelt, und diese dann auf STDOUT ausgibt, Fehler natürlich auf STDERR. Diese Ausgabe wird dann lokal am Windowsrechner weiterverarbeitet.
Beispiel:
plink remotehost -l user -pw geheim verarbeitungsscript.pl >daten.txt 2>fehlermeldungen.txt
Irgendwie kann plink auch mit gespeicherten Sessions und Publick/private Keys umgehen, ich hab's auf die Schnelle aber (noch) nicht behirnt. Das werde ich aber baldigst tun, da mir diese Tools-Sammlung so langsam Gefallen bereitet;-)
Grüße
Klaus
Grüße
Klaus
Hallo!
Vergiß nicht, daß mit 'geplante tasks' es auch ein 'cron'-Pedant unter Win2k gibt.
Genau das wollte ich auch sagen!
In diesem Falle wäre auf dem Windows-Rechner eine
Server-Software für die entsprechende FTP-Variante
zu installieren - und dann wäre "cron" als Initiativ-
geber wieder okay.
Aufgrund der Tatsache, daß zeitgesteuerte Anwendungen auch unter Windows realisierbar sind, ist dies nicht zwangsläufig notwendig.
Und das 2. Problem - ich muß vorher auf dem Linux-
Server die Datei erst erzeugen.
Wie kann ich das denn wohl kombinieren?
Wenn das so ist, dann scheidet m. E. die Initiative
von Windows-Seite aus.
Nicht zwangsläufig;-)
Mit plink (auch aus der oben erwähnten Toolsammlung) kann man in Batchdateien remote-Anwendungen ausführen lassen. Dadurch lassen sich ganz nette Sachen erledigen. So könnte ich mir vorstellen, daß Linux-seitig ein Shell-Script die gewünschten Daten sammelt, und diese dann auf STDOUT ausgibt, Fehler natürlich auf STDERR. Diese Ausgabe wird dann lokal am Windowsrechner weiterverarbeitet.
Was ist STDERR? Wo wird das hingeschrieben? Geht das automatisch, oder wie bekomme ich das in eine Log-Datei?
Was ich noch dazu sagen muß, auf dem Win2K Rechner ist Apache/PHP/PERL/MySQL auch für andere Zwecke installiert. Der Rechner steht in einem LAN und bekommt Anfragen per Port-Forewarding vom Internet durch den Router weitergeleitet. Auf dem Apache ist ein Intra-/Extranet installiert, noch kein großes, aber es wird ausgebaut. Und das hatte ich gedacht, könnte man ja ausnutzen, für die Datenübertragung. Im Prinzip ist es mir egal von wo die Aktion jetzt ausgeht, nur halte ich es für sicherer Remote per SSH auf den Unix-Server zuzugreifen, als auf den Win2K Rechner.
Da der Windows-Rechner ja wie beschrieben hinter einem Router steht, gibt es da Probleme mit irgendwelchen Ports? Eigentlich ja nicht, oder? Ist ja nur bei Serverprogrammen das Problem, oder?
Aber wenn die Dateien im Klartext vorliegen, könnte man ja auf die Idee kommen, das ganze über HTTPS abzuwickeln, und einfach die Inhalte in den POST - Header schreiben, oder? Nur mal angenommen die Datenmenge ist nicht so groß, das man ein Timeout riskiert, würdet Ihr immer noch die Lösung mit plink und dem anderen putty Tool vorziehen?
Beispiel:
plink remotehost -l user -pw geheim verarbeitungsscript.pl >daten.txt 2>fehlermeldungen.txt
Das geht? nicht schlecht! fehlermedlung.txt wird dann auf den Win-Rechner geschrieben, oder? Und das Verarbeitungsscript.pl wird ausgeführt, und was ist daten.txt? Oder meinst Du damit, das die Ausgabe des PERL-Scriptes direkt in eine Datei umgeleitet wird, aber mache ich sowas nicht lieber im PERL-Script diekt? Außerdem, auf welchen Rechner wird die Datei geschrieben? Muß ich dann überhaupt danach noch kopieren?
Irgendwie kann plink auch mit gespeicherten Sessions und Publick/private Keys umgehen, ich hab's auf die Schnelle aber (noch) nicht behirnt. Das werde ich aber baldigst tun, da mir diese Tools-Sammlung so langsam Gefallen bereitet;-)
Was für Sessions meinst Du? Und was für Keys? Meinst Du PGP-Verschlüsselungen? wofür braucht man das noch? Ich will doch nur ein Scruipt auf der Unix-Maschine ausführen, welches Dateien erzeugt, und wenn dieses Script fertig ist, werden diese Dateien durch Putty per SSH übertragen. Wofür braucht man da noch Sessions oder weitere Verschlüsselungsmechanismen?
Viele Grüße
Andreas
Grüße
Klaus
Hallo,
Was ist STDERR? Wo wird das hingeschrieben? Geht das automatisch, oder wie bekomme ich das in eine Log-Datei?
Auf vielen System stehen den Programmen (also auch Scripts, Batchdateiene usw.) 3 Standard-'Datei'-Handles zur Verfügung. STDIN ist die Standardeingabe, STDOUT ist die Standardausgabe, und STDERR ist die Fehlerausgabe. STDERR wurde nicht ohne Grund von der StDOUT abgekoppelt. Wenn Du beispielsweise in einer Shell arbeitest, so ist STDIN die Tastatur, STDOUT und STDERR der Konsolen-Schirm. Interessant wird es erst, wenn DU eine sog. Ein- bzw. Ausgabeumleitung vornimmst. Dabei kannst beispielsweise STDOUT auf eine wirkliche Datei umleiten.
Öffne einmal unter Windows eine Commandshell (äh. Eingabeaufforderung) und gib' folgendes ein
c:> dir /s /b \ >x.x
Jetzt wird der Rechner wie wild werkeln und am Schirm passiert gar nichts. Nach Beendigung dieses Befehls existiert allerdings eine Datei namens x.x, in der dann fein säuberlich alle Dateinamen aufgeführt sind, welche auf dem Laufwerk C vorhanden sind. Das Geheimnis ist das ominöse '>x.x'. Das leitet die Ausgabe, welche normalerweise im Konsolenfenster erfolgt, auf die Datei x.x um. '>>x.x' würde an die Datei anhängen, '<x.x' von der Datei lesen. Um STDERR umzuleiten mußt Du '2>x.x' schreiben.
Der sinn von STDERR ist, daß das ausgeführte Programm die Möglichkeit hat, die Fehlermeldungen getrennt von der normalen Ausgabe vorzunehemen. Dadurch kann bei der Ausgabeumleitung eben Fehlermeldungen auch in eine andere Datei umgeleitet werden.
Ich habe das in meinem Beisiel weiter unten so gemacht.
Was ich noch dazu sagen muß, auf dem Win2K Rechner ist Apache/PHP/PERL/MySQL auch für andere Zwecke installiert. Der Rechner steht in einem LAN und bekommt Anfragen per Port-Forewarding vom Internet durch den Router weitergeleitet. Auf dem Apache ist ein Intra-/Extranet installiert, noch kein großes, aber es wird ausgebaut. Und das hatte ich gedacht, könnte man ja ausnutzen, für die Datenübertragung. Im Prinzip ist es mir egal von wo die Aktion jetzt ausgeht, nur halte ich es für sicherer Remote per SSH auf den Unix-Server zuzugreifen, als auf den Win2K Rechner.
Ob nun auf dem Rechner ein Webserver installiert ist oder nicht, iszt IMHO für Deine Belange unerheblich, da ich den Datenaustausch sowieso ohne Webserver erledigen würde. Eine Batchdatei per 'geplante Tasks' ist für diesen Anwendungsfall sicherlich die bessere Wahl. Es muß ja nicht immer HTTP sein;-)
Da der Windows-Rechner ja wie beschrieben hinter einem Router steht, gibt es da Probleme mit irgendwelchen Ports? Eigentlich ja nicht, oder? Ist ja nur bei Serverprogrammen das Problem, oder?
Das kann ohne genaue Kenntnis der Routerkonfiguration keiner hier zweifelsfrei beantworten. Aber probier einfahc einmal
plink -ssh dein.linux.rechner.de -l username -pw passwort ls
aus.
wenn du dann ein Verzeichnislisting des Linux-Rechners siehst, dann hast Du IMHO schon gewonnen.
Aber wenn die Dateien im Klartext vorliegen, könnte man ja auf die Idee kommen, das ganze über HTTPS abzuwickeln, und einfach die Inhalte in den POST - Header schreiben, oder? Nur mal angenommen die Datenmenge ist nicht so groß, das man ein Timeout riskiert, würdet Ihr immer noch die Lösung mit plink und dem anderen putty Tool vorziehen?
plink kann eben auch (per ssh) verschlüsselte Daten übertragen, was eine SSL-Konfiruration und zusätzliche Sicherungsmaßnahmen am Webserver für diesen Zweck nicht notwendig machen würde. Du mußt ja bedenken, daß, wenn Du den Webserver verwenden willst, diesen auch entsprechend absichern mußt, damit kein fremder Dir die Austauschdaten absaugt. Und Basic-Authentication ist IMHO kein wirklich sicheres Verfahren.
Beispiel:
plink remotehost -l user -pw geheim verarbeitungsscript.pl >daten.txt 2>fehlermeldungen.txt
Das geht? nicht schlecht!
Ja, sonst hätte ich das Beispiel nicht angeführt;-)
fehlermedlung.txt wird dann auf den Win-Rechner geschrieben, oder?
Richtig, und es enthält alles was verarbeitungsscript.pl auf STDERR schreibt.
Und das Verarbeitungsscript.pl wird ausgeführt, und was ist daten.txt?
verarbeitungsscript.pl läuft auf dem Linux-Rechner und daten.txt enthält alles, was das Script auf STDOUT schreibt, und liegt dann auf deinem Windows-Rechner.
Oder meinst Du damit, das die Ausgabe des PERL-Scriptes direkt in eine Datei umgeleitet wird, aber mache ich sowas nicht lieber im PERL-Script diekt?
Die Ausgabe des Perlscripts am Server wird eben in eine Datei auf dem Clientrechner umgeleitet.
Muß ich dann überhaupt danach noch kopieren?
Nein, das macht es IMHO so interessant.
Ich denke da an ein Script auf dem Linux-Rechner, welches alle relevanten Daten sammelt und an STDOUT schreibt (einfach 'print....' in Perl).
Sollte irgendwas daneben gehen, dann schreibt es die Fehlermeldungen an STDERR (dann eben 'print STDERR ...', oder auch 'die ....')
Lokal wird mit plink dieses Script angeworfen und die Daten in zwei Dateien geschrieben (eine für STDOUT und eine für STDERR, so wie in meinem Bespiel). Diese Dateien werden dann lokal nach belieben verarbeitet. Das alles erledigt eben lokal eine Batchdatei oder ein Script.
Noch kurz etwas zu Batchdateien: Du kennst sicherlich die ominöse Autoexec.bat aus DOS/Win9x-Zeiten). Das ist eine Batchdatei. sie enthält nicht weiter als eine Ansammlungen von Befehlen, die Du auch in der Command-Shell eingeben könntest. Außerdem kannst Du noch einige Konntrollstrukturen verwenden, aber wirklich Mächtig sind Batchdateien unter Windows nicht. Eigentlich sind das ganz simpel gestrickte Scripts. Scriptsprachen wie Perl sind einfahc nur wesentlcih mächtiger in ihren Möglichkeiten. [1]
Was für Sessions meinst Du? Und was für Keys? Meinst Du PGP-Verschlüsselungen? wofür braucht man das noch? Ich will doch nur ein Scruipt auf der Unix-Maschine ausführen, welches Dateien erzeugt, und wenn dieses Script fertig ist, werden diese Dateien durch Putty per SSH übertragen. Wofür braucht man da noch Sessions oder weitere Verschlüsselungsmechanismen?
Irgendwie kann plink auch Zugangskonfigurationen verwenden, ich vermute die, die Du auch mit putty verwenden kannst. Und dann gibt's da auch noch eine Public-Key-Authentication für SSH, mit der Du vermutlich die Passwort-Geschichte vergessen kannst, um Dich am Server zu authentifizeren. Aber damit habe ich mich noch zu wenig auseinandergesetzt, um nicht auch totalen Blödsinn zu verzapfen.
Grüße
Klaus
[1] Da fällt mir ein, daß wir schon vor längerer Zeit über PHP vs. Perl diskutiert haben, und ich habe Dir damals prophezeit, daß irgendwann der Punkt kommen wird, wo Du bemerken wirst, daß es gut ist Perl zu können, da es auch außerhalb des Webumfeldes viele Anwendungen geben wird, wo es sinnvoll eingesetzt werden kann. Jetzt ist es so weit;-) [2]
[2] Wobei wahrscheinlich auch PHP für sowas vergenußwurzelt werden könnte.
Hallo Klaus!
Erstmal vielen Dank für diese Antwort! war sehr interssant und lehrreich!
Ob nun auf dem Rechner ein Webserver installiert ist oder nicht, iszt IMHO für Deine Belange unerheblich, da ich den Datenaustausch sowieso ohne Webserver erledigen würde. Eine Batchdatei per 'geplante Tasks' ist für diesen Anwendungsfall sicherlich die bessere Wahl. Es muß ja nicht immer HTTP sein;-)
Ja, das stimmt wohl. Bin halt kein Programmierer ;-) Also schreibe ich den notwendigen plink Aufruf einfach in eine .bat Datei und rufe die dann mit geplanten Tasks.. auf. Könnte ich so eine DAtei doch auch im Rahmen eines Intranets aufrufen, oder das dann lieber mit PHP/PERL?
Das kann ohne genaue Kenntnis der Routerkonfiguration keiner hier zweifelsfrei beantworten. Aber probier einfahc einmal
plink -ssh dein.linux.rechner.de -l username -pw passwort ls
aus.
wenn du dann ein Verzeichnislisting des Linux-Rechners siehst, dann hast Du IMHO schon gewonnen.
Naja, kann das hier leider nicht testen, werde ich aber, Danke!
plink kann eben auch (per ssh) verschlüsselte Daten übertragen, was eine SSL-Konfiruration und zusätzliche Sicherungsmaßnahmen am Webserver für diesen Zweck nicht notwendig machen würde. Du mußt ja bedenken, daß, wenn Du den Webserver verwenden willst, diesen auch entsprechend absichern mußt, damit kein fremder Dir die Austauschdaten absaugt. Und Basic-Authentication ist IMHO kein wirklich sicheres Verfahren.
Was heißt denn "kann auch " verschlüsselt Daten übertragen - ich dachte standardmäßig? Muß man das irgendwie angeben in dem Befehl? Aber mitr dem Webserver hast Du Recht, der ist hier nicht wirklich geeignet.
Beispiel:
plink remotehost -l user -pw geheim verarbeitungsscript.pl >daten.txt 2>fehlermeldungen.txt
verarbeitungsscript.pl läuft auf dem Linux-Rechner und daten.txt enthält alles, was das Script auf STDOUT schreibt, und liegt dann auf deinem Windows-Rechner.
Das ist ja praktisch!!! Und das geht auch mit größeren Datenmengen, das es mal ein paar Minuten dauern kann? Leider ist die t-dsl Bandbreite ja begrenzt!
Ich denke da an ein Script auf dem Linux-Rechner, welches alle relevanten Daten sammelt und an STDOUT schreibt (einfach 'print....' in Perl).
Ja, aber was, wenn ich mehrer Dateien haben will? Ich will z.B. 10 verschienene Dateien übertragen, von denen 5 erzeugt werden, und die anderen nur so wie sie gerade sind kopieren. Alle sehr verschieden. Das sollte ich doch nicht alles in eine Datei schreiben, oder? Oder 5 mal plink und 5 mal pscp machen, halt 10 aufrufe in der Batch-Datei?
[1] Da fällt mir ein, daß wir schon vor längerer Zeit über PHP vs. Perl diskutiert haben, und ich habe Dir damals prophezeit, daß irgendwann der Punkt kommen wird, wo Du bemerken wirst, daß es gut ist Perl zu können, da es auch außerhalb des Webumfeldes viele Anwendungen geben wird, wo es sinnvoll eingesetzt werden kann. Jetzt ist es so weit;-) [2]
Stimmt! Und 10 Minuten nach besagter Diskussion habe ich mir ein PERL-Buch bestellt, habe es schon einmal grob überflogen, und habe mich die letzten Tage mal so richtig damit auseinander gesetzt! Da kommt CGI erst gar nicht vor, aber das Buch hat mich ein wenig in diese Richtung inspiriert! Zufällig habe ich jeztt noch ein bisschen mit der SHELL gemacht... so langsam wird es interessant! Sehe auch, das es für PERL tatsächlich Einsatzbereiche gibt, die PHP nicht hinbekommt. Wobei ich sagen muß, je näher die Anwendungen am, Web sind, desto mehr PHP werde ich verwenden, die ganzen Funktionen, die es da so gibt in PHP, das ist schon ein Vorteil gegenüber PERL, ich mag PHP auch (noch?) lieber, finde es irgendwie einfacher. Wofür ich PERL in naher Zukunft viel einsetzen werde, ist das dynamische Erzeugen von Excel Stylesheets! Das ist der Wahnsinn, was man da machen kann, vor allem auch bestehende zu verändern... ungeahnte Möglichkeiten! Aber so langsam ktristallisiert sich schon ein wenig heraus, wofür welche Sprache besser geeignet ist. Einfache Scripte ausführen kann PHP genauso, da braucht man IMHO nicht unbedingt den Webserver!
Viele Grüße
Andreas
Hallo Andreas,
Ja, das stimmt wohl. Bin halt kein Programmierer ;-) Also schreibe ich den notwendigen plink Aufruf einfach in eine .bat Datei und rufe die dann mit geplanten Tasks.. auf.
Viele Wege führen zum Ziel, die Frage ist oft nur, welcher der geschickteste ist, und das kann man auch nicht immer so aus dem Ärmel schütteln. Also macht man halt mal was, und wenn's nicht ganz das Wahre ist, dann wird's halt geändert.
So gesehen solltest Du vielleicht wirklich mit einer Batchdatei (das sind die mit dem .bat hintendran *g*) anfangen, und dann, wenn das nicht mehr ausreicht, mit etwas anderem Weitermachen.
Ist IMHO auch besser, nicht alles gleich kompliziert anzugehen, denn kompliziert wird's meist sowieso von selbst;-)
Könnte ich so eine DAtei doch auch im Rahmen eines Intranets aufrufen, oder das dann lieber mit PHP/PERL?
Welceh Datei meinst Du, die Batchdatei, die aufzurufen sollte kein Problem sein. Oder meinst Du die Ergebnisdatei? Da das eine stinknormale Datei auf deinem Rechner ist, sollte sowohl ein Webserver darauf zugreifen können (sofern sich die Datei in seinem Einflußbereich befindet), wie auch jede halbwegs brauchbare serverseitige Sprache.
plink kann eben auch (per ssh) verschlüsselte Daten übertragen, ...
Was heißt denn "kann auch " verschlüsselt Daten übertragen - ich dachte standardmäßig?
Es gibt neben dem SSH-Modus auch noch die Möglichkeit mittels telnet (also ohne Verschlüsselung) bzw. raw (also mit einem beliebigen Protokoll) zu arbeiten. Daher das 'kann auch'. Sollte vielleicht 'kann natürlich auch' heißen;-)
Das ist ja praktisch!!!
Das dachte ich mir auch, als ich mir heute früh den HElpfile dazu angesehen habe;-)
Und das geht auch mit größeren Datenmengen, das es mal ein paar Minuten dauern kann? Leider ist die t-dsl Bandbreite ja begrenzt!
Das einzige Problem, das ich mir vorstellen könnte, sind Stabilitätsprobleme bei der Internet-Anbindung, aber damit hättest Du auch bei jeder anderen möglichen Lösung ein Problem.
Ich denke da an ein Script auf dem Linux-Rechner, welches alle relevanten Daten sammelt und an STDOUT schreibt (einfach 'print....' in Perl).
Ja, aber was, wenn ich mehrer Dateien haben will? Ich will z.B. 10 verschienene Dateien übertragen, von denen 5 erzeugt werden, und die anderen nur so wie sie gerade sind kopieren. Alle sehr verschieden. Das sollte ich doch nicht alles in eine Datei schreiben, oder? Oder 5 mal plink und 5 mal pscp machen, halt 10 aufrufe in der Batch-Datei?
Hmm, ich denke, daß Du mit Batchdateien, Scriptsprachen, SSH-Server und diversen Clientprogrammen (plink, pscp, psftp ) sicherlich eine Auswahl an Werkzeugen hast, mit dem Du Dir etwas zusammenbauen kannst, das Deine Anforderungen erfüllt.
Stimmt! Und 10 Minuten nach besagter Diskussion habe ich mir ein PERL-Buch bestellt, habe es schon einmal grob überflogen, und habe mich die letzten Tage mal so richtig damit auseinander gesetzt! Da kommt CGI erst gar nicht vor, aber das Buch hat mich ein wenig in diese Richtung inspiriert! Zufällig habe ich jeztt noch ein bisschen mit der SHELL gemacht... so langsam wird es interessant! Sehe auch, das es für PERL tatsächlich Einsatzbereiche gibt, die PHP nicht hinbekommt. Wobei ich sagen muß, je näher die Anwendungen am, Web sind, desto mehr PHP werde ich verwenden, die ganzen Funktionen, die es da so gibt in PHP, das ist schon ein Vorteil gegenüber PERL, ich mag PHP auch (noch?) lieber, finde es irgendwie einfacher. Wofür ich PERL in naher Zukunft viel einsetzen werde, ist das dynamische Erzeugen von Excel Stylesheets! Das ist der Wahnsinn, was man da machen kann, vor allem auch bestehende zu verändern... ungeahnte Möglichkeiten! Aber so langsam ktristallisiert sich schon ein wenig heraus, wofür welche Sprache besser geeignet ist. Einfache Scripte ausführen kann PHP genauso, da braucht man IMHO nicht unbedingt den Webserver!
Je mehr Sprachen und Systeme man im Laufe der Zeit kennt, umso mehr Möglichkeiten sind einem gegeben, ein bestehendes Problem zu lösen. Irgendwie ist die Werkzeugmetapher gar nicht mal so schlecht. Wenn DU nur so einen Billigbergerzusammensteckschraubenzieher hast, dann wirds wohl mit dem gehen müssen, wenn Du nur einen Phasenprüfer da hast, dann muß der halt auhc für Kreuzschlitzschrauben herhalten. Wenn DU allerdings ein komplettes Sortiment von -zig Schraubenziehern hast, dann nimmst Du sicherlich den her, der am besten für die in Frage kommende Schraube passt.
Und so solltest Du auch Programmiersprachen bzw. (genereller) IT-Systeme sehen. Es gibt kein wirklich optimales Werkzeug, daß alles kann. Jedes halbwegs durchtdachte System hat seine Stärken, aber auhc seine Schwächen. Wenn Du allerdings über einen entsprechenden Wissensvorrat verfügst, dnan kannst Du bei jeder GElegenheit auf das passende Werkzeug zurückgreifen. Und wenn das passende gerade nicht verfügbar ist, dann nimmst Du halt, was da ist.
Und noch etwas ist recht toll, wnen Du viele verschiedene System kennst. Ein neues System wird immer leichter erlernbar, weil Du schon über genügend Erfahrung verfügst, die Du dann auf das neue System umlegen kannst.
Grüße
Klaus
(bei dem der Kelch, PHP lernen zu müssen, bisher noch immer vorübergegangen ist *g*)