Šta je novo?

shell script za ftp

orange47

Slavan
Učlanjen(a)
25.12.2007
Poruke
3,083
Poena
455
treba mi skripta za ftp koja bi ovako nekako radila

..
cd a
mget *.zip
..
cd b
mget *.zip
..
cd c
mget *.zip

itd.. da ne bih kucao sva slova abecede, treba mi petlja koja ce to odraditi..?

hvala.
 
Uradi ovo sto ace rimmer predlaze.

Login sa sertifikatom, copy preko scp/sftp ili rsync, whatever.
 
Ne kapiram kakve veze ima koriscenje ssh-a sa pitanjem. Ponovo je potrebno da se skriptuje transfer. :|

Anyway, za ovaj skript je potreban lftp (LFTP) klijent, posto "regular" ftp klijent nije moguce skriptovati (ne podrzava non-interactive mode).

Zameniti localhost, username, sifra, lokalni_dir i remote_dir vrednosti.

Kod:
#!/bin/bash

x="open localhost; user username sifra; lcd lokalni_dir; cd remote_dir "

for i in {a..z}; do
        x=$x"cd $i; mget *.zip; "
done

tmp=`mktemp` && echo $x > $tmp && lftp -f $tmp
 
ssh ima veze s pitanjem jer se upravo za tu svrhu obično koristi
 
Pa zar se ne trudimo da uvek izbegnemo slanje user/pass komboa u plain-text formatu? :)

Ok, ne mora sa sertifikatima, moze i koriscenjem sshpass i rsync-a (oba se moraju instalirati na sistem).

Evo koda:
#!/bin/bash

for i in {a..c}; do

rsync -avz --rsh="sshpass -p PASSWORD ssh -l USER" REMOTEHOST:/REMOTEDIR/$i/*.zip /LOCALDIR/$i

done

PASSWORD - password na udaljenom serveru
USER - user na udaljenom serveru
REMOTEHOST - ip adresa udaljenog servera
REMOTEDIR - direktorijum iz koga se cupaju *.zip fajlovi
LOCALDIR - direktorijum gde se snimaju zip-ovi, bice snimljeni po direktorijumima a,b,c,d itd ; ako na lokalnoj masini zelis snimanje svih zipova u jedan direktorijum onda rsync linija izgleda ovako:

rsync -avz --rsh="sshpass -p PASSWORD ssh -l USER" REMOTEHOST:/REMOTEDIR/$i/*.zip /LOCALDIR/
 
aha, kacim se kao anonymous na ftp..

hvala na resenju.
 
e da, fali jedno ; pa bi trebalo

cd remote_dir;

ili ispred
;cd $i

i jedno cd ..
mget *.zip; cd ..; "

ali inace super radi, hvala puno :)
 
Poslednja izmena:
mozes to i sa wget, podrzava ftp,

npr.

wget --cut-dirs=1 -nH -r --server-response --wait=1 --directory-prefix="/home/dir" -c -i filelist

u filelist ubacis listu ftp linkova do fajlova koje hoces, a mozes i regexp da koristis.
 
Poslednja izmena:
Nazad
Vrh Dno