Shell script: sftp

Fórumok

Szeretnék írni egy shell scriptet, ami egy távoli gépről sftp-n keresztül átmásol egy fájlt a helyi gépre. Milyen parancsal lehet létrehozni a kapcsolatot és áthúzni a fájlt, majd zárni a kapcsolatot? Gondoltam további funkciókkal is felvértezem, de azoknak majd utána olvasok, viszont ezt az sftp-n keresztüli másolást sehol nem találtam. Ubuntu grafikus felületén nagyon jól működik, akkor csak meg lehet oldani parancssorban is:)

Hozzászólások

echo -e "cd Innen\nget ezafile.dat\nquit" | sftp -b - user@host.net

Persze ehez kell hogy legyen egy publikus kulcs a tavoli gepen, hogy jelszo nelkul beengedjen. Ha nem, akkor meg except-el is szorakozni kell.
Ja, es mivel latom, hogy kezdo unix, man sftp. Tanuljuk mar meg eloszor elolvasni a manualt, aztan kerdezni.

Feltételezem számodra a "Milyen parancsal lehet létrehozni a kapcsolatot" rész nem volt elég világos. Így aztán nem tudom minek a manualját olvashatnám el.

Ettől függetlenül köszönöm szépen a kimerítő választ. Nem gondoltam volna hogy ilyen egyszerű lesz. Most már tudom merre induljak el.

Mi ezzel a gondod? A bizonság, vagy a működés?
Ha a biztonság akkor jogos, hiszen a jelszó így be kerül a logba, ha a működés akkor nem jogos ez így megy!

Szerk:
Ja mégvalami!
ha estleg a jelszó urlbe tétele nem tetszik az sftp-nek, akkor legyen az első sora a scriptnek:

sftp -b ~/download.ftp kayapo@ftp.example.org

~/download.ftp:

Bar0miT1tkos
cd logs
lcd /home/kayapo/Downloads/
get ftpcheck.txt
get bait.log.gz
quit

ezt esetleg az összes letöltendő fileal legenerálod egy fileba, majd indítod az sftp kapcsolatot.

----
概略情報

Egy olyan probléma van vele, hogy több fájl lementése esetén ahelyett, hogy megvárná az előző fájl-letöltés befejeztét, hamarabb elkezdi a következőt. Így az előző mindig megszakad és csak a kis fájlok töltődnek le, a több száz megások nem. Pedig megadtam hogy új fájl letöltésénél, várja a sftp> jelzést. A kód valahogy így néz ki:
...
expect \"sftp>\"
send \"get /konyvtar/fajl1 $DIR\r\"
expect \"sftp>\"
send \"get /konyvtar/fajl2 $DIR\r\"
expect \"sftp>\"
send \"get /konyvtar/fajl3 $DIR\r\"
expect \"sftp>\"
send \"get /konyvtar/fajl4 $DIR\r\"
...

Nem celszerubb scp-t hasznalni ebben az esetben? Kulcs nelkul nem fog menni batch-bol, de ezen kivul mindent tud es siman batchelheto. man scp

Köszönöm mindenkinek az építő jellegű hozzászólásait. Azt a következtetést tudom levonni, hogy sok jó megoldás létezik, de csak is jelszó nélkül. Sikerült megoldani a kulcsos autentikációt. A jelszavas egy agyon haxolt, csúnya megoldás, ami egyáltalán nem biztonságosabb.