# Script zum Download von Daten auf Server



## denis7788 (21. Jan 2016)

Hallo,

wie könnte ich denn ein kleines Script realisieren, dass mir in bestimmten Zeitabständen automatisch einen ssh tunnel öffnet und Daten von einem Server lädt?


----------



## Joose (21. Jan 2016)

Wo genau liegt das Problem?

Dein Skript besteht aus 3 grundlegenden Punkte:
1) SSH Tunnel öffnen
2) Daten kopieren
3) regelmäßig ausführen

Jeder dieser Punkte lässt sich (für sich alleine) einfach googeln, mit den Ergebnissen sollte man sich doch ein passenden Skript zusammenstellen können. Sollte es dann ein spezifischeres Problem geben, kann man dir sicher weiterhelfen.
Außerdem ohne weitere Informationen kann man dir auch schwer helfen. Welche Art Skript? Für Linux/Windows/Mac?


----------



## kneitzel (21. Jan 2016)

Also wenn es um das Dateien kopieren geht - da reicht doch schon ein einzelner Aufruf eines scp Programmes (z.B. bei openssh dabei oder bei putty das pscp).


----------



## denis7788 (21. Jan 2016)

Joose hat gesagt.:


> Jeder dieser Punkte lässt sich (für sich alleine) einfach googeln, mit den Ergebnissen sollte man sich doch ein passenden Skript zusammenstellen können. Sollte es dann ein spezifischeres Problem geben, kann man dir sicher weiterhelfen.
> Außerdem ohne weitere Informationen kann man dir auch schwer helfen. Welche Art Skript? Für Linux/Windows/Mac?


Ja, war schlecht gefragt. Also genauer :
- Sollte auf Windows laufen, da stellt sich die Frage, ob ich das z.B. in Java mache oder eine batch Datei 
- Sollte wie gesagt in bestimmten Zeitabständen laufen
- Dann stellt sich mir die Frage, ob es beispielsweise über ein Öffnen des Terminals und Eingabe des Befehls als String gut gelöst ist oder es besser ist irgendwelche Bibliotheken zu verwenden
- Und es sollte auf Versionen Win7+ laufen



kneitzel hat gesagt.:


> Also wenn es um das Dateien kopieren geht - da reicht doch schon ein einzelner Aufruf eines scp Programmes (z.B. bei openssh dabei oder bei putty das pscp).


Was genau heißt aufrufen des scp Programmes, bzw. wie kann ich das Umsetzen? Ist beispielsweise scp als Befehl in einer ausführbaren Datei gespeichert? Wie würde ich dann meine Parameter übergeben?


----------



## Joose (21. Jan 2016)

denis7788 hat gesagt.:


> - Sollte auf Windows laufen, da stellt sich die Frage, ob ich das z.B. in Java mache oder eine batch Date



Ein Java Programm lässt sich leicht erweiteren und auch mit einer GUI austatten wenn gewünscht.
Bei Batch brauchst du dafür keine extra Laufzeitumgebung (bei Java die JRE).

Ich würde dir zu Java raten.



denis7788 hat gesagt.:


> - Sollte wie gesagt in bestimmten Zeitabständen laufen



Dann musst du dafür sorgen das dein Java Programm dauerhaft läuft oder das es eben immer wieder zu bestimmten Zeitpunkten gestartet wird
Bei einem Batch musst du eben nachschauen wie man diesen immer wieder ausführen kann (zu bestimmten Zeitpunkten).



denis7788 hat gesagt.:


> - Dann stellt sich mir die Frage, ob es beispielsweise über ein Öffnen des Terminals und Eingabe des Befehls als String gut gelöst ist oder es besser ist irgendwelche Bibliotheken zu verwenden



Was hat das eine mit dem anderen zu tun? Bei dem einen geht es um die darum wie du dein Programm bedienst, das andere handelt darum ob du alles selber schreibst oder schon fertige Bibliotheken einsetzt.

Wenn es nicht viel Parameter und Einstellungen braucht und wirklich nur Dateien kopieren soll reicht ein Start per Konsole mit Übergabeparameter vollkommen aus. Ansonsten wär ein Java Program mit GUI passender.

Wozu das Rad neu erfinden? Wenn es schon etwas fertiges gibt dann kann man dies auch verwenden.



denis7788 hat gesagt.:


> Was genau heißt aufrufen des scp Programmes, bzw. wie kann ich das Umsetzen? Ist beispielsweise scp als Befehl in einer ausführbaren Datei gespeichert? Wie würde ich dann meine Parameter übergeben?



Wenn du etwas in dieser Richtung realisieren willst dann musst du auch entsprechende Eigeninitiative zeigen.
Hier wäre es passend selber zu googeln was SCP ist und ob es dir bei deinem Projekt helfen könnte.


----------



## kneitzel (21. Jan 2016)

Auf einem Unix-System mit installiertem openssh kannst Du "man scp" machen um nähere Informationen zu erhalten. Unter Windows kannst Du Dir Putty ansehen. Google hilft Dir hier bestimmt weiter und pscp wirst Du dann auch finden.

Mittels scp / pscp kopiere ich schon seit jeher Dateien zwischen Servern umher und das ist relativ einfach und trivial. Generell lässt sich sowas auch in Scripten aufrufen. Und wenn Du wirklich etwas richtiges entwickeln willst: Du kannst auch mit Java alles entwickeln. Es gibt für Java ssh Libraries, die man verwenden kann um dann Dateien zu kopieren. Das halte ich aber für overkill.

Konrad


----------



## denis7788 (21. Jan 2016)

kneitzel hat gesagt.:


> Mittels scp / pscp kopiere ich schon seit jeher Dateien zwischen Servern umher und das ist relativ einfach und trivial. Generell lässt sich sowas auch in Scripten aufrufen. Und wenn Du wirklich etwas richtiges entwickeln willst: Du kannst auch mit Java alles entwickeln. Es gibt für Java ssh Libraries, die man verwenden kann um dann Dateien zu kopieren. Das halte ich aber für overkill.


Ich selbst gehe da einfach über die Kommandozeile, aber ich suche nach einer Möglichkeit für jemanden, der keine Anwendung nutzen oder was tippen möchte um jedes Mal dieselbe Datei zu sichern. Deshalb in einem Script. 



Joose hat gesagt.:


> Dann musst du dafür sorgen das dein Java Programm dauerhaft läuft oder das es eben immer wieder zu bestimmten Zeitpunkten gestartet wird
> Bei einem Batch musst du eben nachschauen wie man diesen immer wieder ausführen kann (zu bestimmten Zeitpunkten).


Es sollte schon ohne explizites Öffnen einer Anwendung funktionieren, falls z.B. der Rechner neu gestartet wird. Ich habe gesehen, dass man Batch Dateien über den Task Scheduler. Wobei ich das Java Programm dann auch über eine Batch Script starten könnte.



Joose hat gesagt.:


> Was hat das eine mit dem anderen zu tun? Bei dem einen geht es um die darum wie du dein Programm bedienst, das andere handelt darum ob du alles selber schreibst oder schon fertige Bibliotheken einsetzt.


Damit meinte ich was das Script macht. Ob es nun das Terminal öffnet und Text hineinschreibt, oder ob es im Hintergrund mit Hilfe irgendeiner Bibliothek läuft.


Joose hat gesagt.:


> Wenn du etwas in dieser Richtung realisieren willst dann musst du auch entsprechende Eigeninitiative zeigen.
> Hier wäre es passend selber zu googeln was SCP ist und ob es dir bei deinem Projekt helfen könnte.


Wenn mit scp der Befehl gemeint ist, dann kann ich das schon zuordnen, da ich ssh für gewöhnlich über die Kommandozeile nutze. Was ich meinte war, ob Programme wie Putty z.B. eine scp.batch oder scp.sh oder so ähnlich gekapselt haben, das ich aufrufen kann. Ich habe nicht so richtig verstanden was mit "da reicht doch schon ein einzelner Aufruf eines scp Programmes" genau gemeint war.


----------



## Joose (21. Jan 2016)

denis7788 hat gesagt.:


> Ich selbst gehe da einfach über die Kommandozeile, aber ich suche nach einer Möglichkeit für jemanden, der keine Anwendung nutzen oder was tippen möchte um jedes Mal dieselbe Datei zu sichern. Deshalb in einem Script.



Ok. Dann verwende einfach eine Batch Datei wenn es sich sowieso immer um dieselbe Datei handelt und sonst nicht viel mit der Datei gemacht werden soll.
Und solltest du doch mal etwas "drum herum" haben wollen kann man aus dem Java Programm immer noch einen Prozess starten (batch aufrufen)


----------



## kneitzel (21. Jan 2016)

Wenn es ständig automatisiert laufen soll, dann kann man im Windows Scheduler einen Job anlegen mit eben dem gewünschten pscp Aufruf. Java nur für diese Anwendung halte ich für etwas Overkill. Wozu so viel Arbeit und vor allem weitere Abhängigkeiten?

Konrad


----------

