Newsgroup: it.comp.aiuto
Titolo: AIUTO ! FTP in background su UNIX ...?

Vorrei fare il download di uno o piu' file durante la notte, quindi
vorrei eseguire l'FTP senza che il processo venga interrotto
dal logout. 
Come fare ?
Grazie,
Claude.

 -----------+

 Come fare ?
Se non ricordo male puoi mettere tutti i comandi che daresti dentro un
file, dopodiche' dai il comando
	nohup ftp sito < comandi
a questo  punto se  c'e' il  job control  puoi portarlo in foreground,
dare la password (che  viene letta da tty  e non da stdio), rimetterlo
in  background  e  goodbye. Alcune shell   permettono  ai programmi in
background di sopravvivere alla morte della shell genitrice. In questo
caso puoi ad esempio dare un mget e poi mandare in background ftp.
Infine ci sono i client che ti permettono  di lavorare in batch, ncftp
e bftp se non ricordo male.
o   oooooo	Gian Uberto Lauri        "So, are you working on finding
      o    o	
sa...@maya.dei.unipd.it
   that bug *now* or leaving it until
     o o				  later?" - "Yes!" 

 lanci l'ftp), man crontab.
Ricordati  che   ftp  non preleva  la  password   da stdin (flusso  di
ingresso) ma dal  device fisico del terminale,  quindi la cosa non  e'
facilissima...


 


facilissima...
Ok... scrivo il procedimento completo per chi l'aveva chiesto (non per te
Saint, ovviamente ;-) ), cosi' chiariamo i dubbi.
Supponiamo che tu, Bazza, debba fare un ftp a 
ftp.unipd.it
.
Lo script che devi fare per l'ftp e' il seguente:
---------------
#!/bin/sh
cat << EOF | ftp -vi 
ftp.unipd.it
cd /pub/quellochevuoi
bin
get nomefile
bye
EOF
---------------
Salvi questo file con un nome qualsiasi, per es. mioftp, e gli dai i
permessi di esecuzione (chmod +x mioftp).
Avrai notato che non si specificano username e password... man ftp e cerca
il significato dell'opzione -i.
Ora devi creare un file .netrc nella tua home directory. Il file deve
essere composto da questa linea (nel nostro caso):
machine 
ftp.unipd.it
 login anonymous password 
bazz...@iol.it
Cio' ti permette l'accesso, quando lanci un ftp -i alla macchina
ftp.unipd.it
, con login anonymous e password il tuo e-mail. Si puo' anche
utilizzare la parola "default" al posto di "machine 
ftp.unipd.it
", con il
risultato di effettuare un accesso anonymous a *qualsiasi* sito ftp (a meno
che non sia stato precedentemente specificato in .netrc...).
Comunque... man ftp per ulteriori dettagli.
Riassumendo: hai un file mioftp (eseguibile), un file .netrc nella tua home
(attenzione, deve avere permessi -r-w------, cioe' 600 se non erro).
Hai 2 soluzioni: o lanci mioftp e ti scolleghi (nohup mioftp &), oppure fai
un bel:
crontab -e 
ed editi una linea del tipo:
MINUTO ORA GIORNO MESE GIORNODELLASETT COMANDO
Supponendo di voler fare quel famoso ftp domani sera (10/01) alle 21.30, la
riga di crontab da scrivere e':
30 21 10 01 * mioftp >mioftp.out 2>mioftp.errors
man crontab per ulteriori dettagli. Domani sera alle 21.30 verra' lanciato
il comando, che lancia mioftp redirigendo l'output verso un file mioftp.out
e gli errori verso mioftp.errors.
Spero di essere stato chiaro, e spero di non aver sbagliato nulla...
comunque Saint o Jake saranno pronti a correggermi! ;-)


facilissima...
Esiste uno switch da linea di comando per non fare il login automatico
e per leggere anche username e password da file.
un;
ftp -i -n < file
dove file contiene
open hostname.domain
user pippo MyPass
get prova.exe
quit
funziona perfettamente
	Leo
-- 
------------------------------------------------------------------------------
           Leonardo Bocchi                 
boc...@cobra.die.unifi.it
           Dip. di Ingegneria Elettronica  
l...@asp.die.unifi.it
           Fac. di Ingegneria Un. Firenze  Tel. +39 55 4796 443