PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : scp per cron oder Alternative



Zalon
12.04.08, 21:34
Hallo Board,

auf einem Server werden täglich einige Dateien bereitgestellt, diese sollen auf meinen Rechner kopiert werden. Ich hatte vor, das automatisch per scp erledigen zu lassen, doch leider habe ich bislang keine Möglichkeit gefunden, scp das Login-Passwort mitzugeben.

Meine Frage: Kennt da jemand eine Möglichkeit, das Passwort mitzugeben, oder eine alternative Vorgehensweise?
Denn das obige Verfahren ist alles andere als clever, es würde das gesamte Verzeichnis kopiert werden und damit eventuell vorhandene Dateien erneut übertragen. Falls es eine intelligente Methode gibt, nur neue Dateien automatisch zu übertragen (zur Verfügung steht ssh/scp oder sftp), wäre mir das natürlich lieber. Leider weiß ich aber nicht, wonach ich da suchen müsste.

Vielen Dank für Antworten.

yuhu
12.04.08, 21:42
suche mal nach rsync

ssh ohne passwort - ssh mit zertifikaten

RapidMax
13.04.08, 21:56
Das ist mit Zertifikaten leicht zu lösen: Mit ssh-keygen einen neuen Schlüssel für die Seite mit dem scp erstellen und mit ssh-copy-id auf dem Server beim gewünschten Benutzer eintragen (~/.ssh/authorized_keys2, falls ssh-copy-id nicht verfügbar ist).

Damit der Private-Key aus dem Script verfügbar ist, ihn entweder nicht mit einem Passwort verschlüsseln, oder mittels eines ssh-agent das Passwort speichern (geht nach einem Neustart natürlich nicht mehr).

Tipp: Im Script scp die Option -o BatchMode=yes mitgegeben um Fallback-Passwortabfragen zu unterdrücken.

Gruss, Andy

Zalon
14.04.08, 22:03
Hallo zusammen,

vielen Dank für die Antworten. Ich habe es jetzt so umgesetzt und alles läuft hervorragend.

Schöne Grüße.

Zalon
20.04.08, 12:56
So, jetzt habe ich doch noch eine zusätzliche Frage. Das Verfahren oben läuft prima, die Dateien werden heruntergeladen.

Jetzt sind das aber alles ZIP-Dateien, die ich am liebsten gleich automatisch entpacken lassen will. Ich habe jetzt folgende Befehlszeile am Ende meines Skripts eingefügt:


for i in *.zip ; do unzip "$i"


Damit werden die ZIP-Dateien zwar entpackt, jedoch alle im Verzeichnis und nicht nur die neuesten, aus dem letzten Download. Außerdem will das Programm eine Bestätigung für die zu überschreibenden Dateien, läuft also nicht vollautomatisch ab.
Ich habe es auch schon damit versucht, entzippte Archive verschieben zu lassen, dann werden sie jedoch von rsync das nächste Mal wieder runtergeladen.

Leider sind meine Kenntnisse in dem Basteln von Skripten ziemlich beschränkt, vielleicht kann mir jemand weiterhelfen, wie ich nur die neuesten ZIP-Archive entpacken lassen kann? Kann rsync den Namen des/der zuletzt heruntergeladenen Archive vielleicht an unzip weitergeben?

Danke!

Achja: Die Option -n mitzugeben wäre eine Möglichkeit, aber dann muss er sich doch dennoch jedes Mal durch alle ZIP-Files durcharbeiten, was ich gerne vermeiden würde.