Newsgroup: it.comp.os.linux.sys
Titolo: Script ftp

Salve,
ho fatto uno script per poter automatizzare l'invio di un file tramite
ftp, il seguente:
#!/bin/sh
HOST='
ftp.remoto.it
'
USER='utente'
PASSWD='pwdutente'
FILE=$1
ftp $HOST <<EOT
user $USER
$PASSWD
put $FILE
quit
EOT
Ho il problema che alcune volte lo script si blocca, attende una risposta
dal remoto che non arriva mai e quindi devo killarlo e farlo ripartire
manualmente.
Ho provato con il comando idle ma il remoto non lo supporta; avete idee di
come inserire un timeout entro il quale cessare l'ftp? Grazie.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Ma non sarebbe opportuno utilizzare strumenti più attuali, che magari
implementano automatismi di retry o di timeout e che ti fanno fare
tutto con un'unica riga di comando?
Prova a usare ncftpput o lftp (o prova a vedere se ne esistonoaltri).
ncftpput ha una opzione di timeout (che è comunque da provare).
Nel 2010 questi prodotti sono installabili dappertutto (Leopard
compreso, ma a parte windows, dove può esistere o meno un porting)
-- 
echo onailimissaM | awk 'BEGIN { FS = "" }
{ for (i = NF; i >= 1; i-- )
  printf $i }'; echo

 compreso, ma a parte windows, dove pu� esistere o meno un porting)
Nel mio caso il server non ha ncftpput o lftp; visto non lo amministro io
preferirei non installare nulla.


 come inserire un timeout entro il quale cessare l'ftp? Grazie.
Lato server puoi impostare il timeout. Prova a guardare la guida del tuo 
server ftp.
Ciao
-- 
 ************** (.)_(.)  **************
 Un amico � uno che sa tutto di te e,
 nonostante questo, gli piaci
(E. Hobbard) 

 server ftp.
Lato server non � possibile toccarlo e non � una macchina linux. :(


 Lato server non � possibile toccarlo e non � una macchina linux. :(
Che brutta cosa :-)
Non so, la prima schifezza che mi viene in mente e' un job in cron che 
verifichi da quanto tempo e' su il tuo job ftp e se tale tempo e' maggior di 
x, con x il tempo massimo che sei disposto ad attendere, esegue un kill del 
processo ed una successiva risottomissione.
O senza scomodare cron nel batch mandi in backgroud lo script ftp salvandoti 
il pid e ti metti in attesa per x, al termine di x esegui un kill del pid. 
Qui il rischio e' che se finisce in tempo ed il pid e' stato riutilizzato da 
un processo valido rischi di uccidere una cosa che non deve morire, quindi 
devi aggiungere un po' di controlli


 verifichi da quanto tempo e' su il tuo job ftp e se tale tempo e'
In bash c'è la variabile di environment TMOUT che potrebbe fare proprio
per questo caso. Non l'ho mai provata ma può essere interessante farlo.
BTW io invece di uno script fatto a quel modo userei un .netrc ad hoc,
in questo modo potrei separare il file di configurazione dallo script.
La differenza la fa la possibilità di proteggere il file di
configurazione in lettura, ma lasciare lo script attivabile anche dal
gruppo... poi vedi tu come è il caso, è un'idea.
-- 
Massimo Bacilieri AKA Crononauta

 ripartire manualmente.
Riscrivitelo in maniera adeguata.
http://perldoc.perl.org/Net/FTP.html

Ringrazio tutti per i vs preziosi consigli.
Ho risolto utilizzando curl per fare tutto, sia inviare che ricevere i
file oltre che cancellare in remoto.
Finora non si � bloccato, il curl sembrerebbe essere pi� efficiente.
