Re: [OT] - Semplice script bash
Sempre esulando un po' dal (off)topic specifico dello script ma considerando il caso d'uso (copiare tutti i file con con un certo pattern sull'FTP) segnalo lftp che può semplificare di molto questo tipo di operazione (io lo uso per fare dei backup da ftp con timestamp ad esmpio)... SOURCEDIR=/dati HOST=ftp..yyy.zzz USER=utente PASS=segreto lftp -c lftp $HOST -u $USER,$PASS;mput $SOURCEDIR/*4803* Ciao, Lorenzo. On 08/02/12 12:33, emmanuel segura wrote: Sinceramente preferisco farlo in perl #!/usr/bin/env perl use Net::FTP; $conn = Net::FTP-new(xxx...xxx) or die(cannot connect); $conn-login(user,password) or die(cannot login); $conn-cwd(/workdir); @files = glob(*4803*); foreach $i(@files) { $conn-put($i); } $conn-quit; Il giorno 08 febbraio 2012 11:04, Ennio-Srnasr.la...@tin.it ha scritto: * qzertywsxqzerty...@gmail.com [070212, 21:14]: Il giorno 07 febbraio 2012 17:49, Ennio-Srnasr.la...@tin.it ha scritto: . E dove posso trovare la sintassi degli altri comandi? Se non sbaglio si chiama here document: http://www.faqs.org/docs/abs/HTML/here-docs.html -- Stefano Lini Link molto interessante. Molte grazie, ennio -- [Perche' usare Win$ozz (dico io) se ...anche uno sciocco sa farlo. \\?// Fa' qualche cosa di cui non sei capace! (diceva Henry Miller) ](°|°) [Why use Win$ozz (I say) if ... even a fool can do that. )=( Do something you aren't good at! (as Henry Miller used to say) ] -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20120208100423.ga29...@deby.ei.hnet -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4f33936d.2070...@gmail.com
Re: [OT] - Semplice script bash
Ringrazio tutti per le osservazioni, consigli e spunti dati. Dato che ho solleticato la curiosità di qualcuno vi spiego qual'e' l'intento dello script: Individuare un certo tipo di file e mettere in un array solo quelli che hanno dimensione di 0. Il mio scopo era quello di effettuare l'ftp solo se esiste almeno un file con dei dati all'interno. E' vero che poi da tale array non prendo alcuna informazione, ma in prospettiva (per motivi di controllo) potrei averne bisogno e quindi, me lo sono preparato... Grazie ancora a tutti Alessio -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/E131A00A587E1A47ACB9531033151C810179@ntsvr02.pontassieve.local
Re: [OT] - Semplice script bash
Ciao Alessio, se me lo permetti faccio alcuni commenti allo script. Così magari ne nasce una discussione utile per tutti. Ho aggiunto dei commenti subito prima delle righe alle quali si applicano. In genere io utilizzo lo shebang nella forma che inibisce l'invocazione con altri argomenti interpretabili dalla shell, cioè con il «--» dopo il comando: #! /bin/bash -- #!/bin/bash queste, che sono costanti, puoi dichiararle tali aggiungendo «readonly» in modo da non cambiarle, successivamente, per sbaglio: readonly WORKINGDIR=/tmp WORKINGDIR=/tmp/ STORICO=/data/medici HOST='xxx.yyy.zzz.ttt' USER='utente' PASSWD='passsword' #mi sposto nella cartella di lavoro/salvataggio dei file generati cd $WORKINGDIR le righe successive, se non ho capito male cercano di capire se ci sono dei file che hanno nome che inizia per «048033» e le mettono in un array. In realtà, sotto, non interessa quali siano i nomi dei file, ma solo se ne esistano o meno. Il ciclo dovrebbe popolare una variabile array, ma in realtà mette tutti i nomi nella posizione 0 dell'array poiché hai utilizzato la variabile «i» come indice anziché «I». declare -a arr I=0 for file in $( ls 048033* ) ; do if [ -s $file ]; then arr[i]=$file fi I=$((I + 1)) done ELEMENTS=${#arr[@]}; Il ciclo superiore non l'avrei fatto e avrei scritto così, ma sono abbastanza convinto che esistano metodi più veloci: ELEMENTS=0 [ $(echo 048033*) != '048033*' ] ELEMENTS=1 Tra l'altr, se non si utilizzano gli array, puoi anche evitare di usare la bash e usare la dash, che in questo caso potrebbe essere più veloce. Nella parte sotto, a parte lo «here document» indentato, c'è il problema della password che è messa in chiaro nello script. Forse sarebbe possibile sfruttare file di configurazione di ftp, come il .netrc usato da ncftp, per evitare di inserire qui la password. Invece tu hai utilizzato il «-n» proprio per disabilitare il login automatico. Come mai? if [ $ELEMENTS -gt 0 ]; then ftp -nv $HOST CMD_SCRIPT user $USER $PASSWD ascii prompt mput 048033*.txt bye CMD_SCRIPT fi Questo, combinato con il procedente controllo, potrebbe diventare: if [ $(echo 048033*) != '048033*' ]; then ftp -nv $HOST CMD_SCRIPT user $USER $PASSWD ascii prompt mput 048033*.txt bye CMD_SCRIPT fi Ciao, Giuseppe -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/1328689815.28882.16.camel@scarafaggio
Re: [OT] - Semplice script bash
* qzertywsx qzerty...@gmail.com [070212, 21:14]: Il giorno 07 febbraio 2012 17:49, Ennio-Sr nasr.la...@tin.it ha scritto: . E dove posso trovare la sintassi degli altri comandi? Se non sbaglio si chiama here document: http://www.faqs.org/docs/abs/HTML/here-docs.html -- Stefano Lini Link molto interessante. Molte grazie, ennio -- [Perche' usare Win$ozz (dico io) se ...anche uno sciocco sa farlo. \\?// Fa' qualche cosa di cui non sei capace! (diceva Henry Miller) ](°|°) [Why use Win$ozz (I say) if ... even a fool can do that. )=( Do something you aren't good at! (as Henry Miller used to say) ] -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20120208100423.ga29...@deby.ei.hnet
Re: [OT] - Semplice script bash
Sinceramente preferisco farlo in perl #!/usr/bin/env perl use Net::FTP; $conn = Net::FTP-new(xxx...xxx) or die(cannot connect); $conn-login(user,password) or die(cannot login); $conn-cwd(/workdir); @files = glob(*4803*); foreach $i(@files) { $conn-put($i); } $conn-quit; Il giorno 08 febbraio 2012 11:04, Ennio-Sr nasr.la...@tin.it ha scritto: * qzertywsx qzerty...@gmail.com [070212, 21:14]: Il giorno 07 febbraio 2012 17:49, Ennio-Sr nasr.la...@tin.it ha scritto: . E dove posso trovare la sintassi degli altri comandi? Se non sbaglio si chiama here document: http://www.faqs.org/docs/abs/HTML/here-docs.html -- Stefano Lini Link molto interessante. Molte grazie, ennio -- [Perche' usare Win$ozz (dico io) se ...anche uno sciocco sa farlo. \\?// Fa' qualche cosa di cui non sei capace! (diceva Henry Miller) ](°|°) [Why use Win$ozz (I say) if ... even a fool can do that. )=( Do something you aren't good at! (as Henry Miller used to say) ] -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20120208100423.ga29...@deby.ei.hnet -- esta es mi vida e me la vivo hasta que dios quiera
[OT] - Semplice script bash
Salve a tutti, scusate l'OT ma sto avendo difficoltà a realizzare lo script trasferimento.sh: - #!/bin/bash WORKINGDIR=/tmp/ STORICO=/data/medici HOST='xxx.yyy.zzz.ttt' USER='utente' PASSWD='passsword' #mi sposto nella cartella di lavoro/salvataggio dei file generati cd $WORKINGDIR declare -a arr I=0 for file in $( ls 048033* ) ; do if [ -s $file ]; then arr[i]=$file fi I=$((I + 1)) done ELEMENTS=${#arr[@]}; if [ $ELEMENTS -gt 0 ]; then ftp -nv $HOST CMD_SCRIPT user $USER $PASSWD ascii prompt mput 048033*.txt bye CMD_SCRIPT fi - Se lo eseguo ottengo: ./trsferimento.sh: line 56: syntax error: unexpected end of file Se commento l'IF finale l'errore scompare ma dove sta questo errore? Grazie a tutti Alessio Artini -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/E131A00A587E1A47ACB9531033151C810179D951@ntsvr02.pontassieve.local
Re: [OT] - Semplice script bash
for file in $( ls 048033* ) ; do if [ -s $file ]; then arr[l]=$file fi I=$((I + 1)) done Il giorno 07 febbraio 2012 11:13, Artini Alessio aart...@comune.pontassieve.fi.it ha scritto: Salve a tutti, scusate l'OT ma sto avendo difficoltà a realizzare lo script trasferimento.sh: - #!/bin/bash WORKINGDIR=/tmp/ STORICO=/data/medici HOST='xxx.yyy.zzz.ttt' USER='utente' PASSWD='passsword' #mi sposto nella cartella di lavoro/salvataggio dei file generati cd $WORKINGDIR declare -a arr I=0 for file in $( ls 048033* ) ; do if [ -s $file ]; then arr[i]=$file fi I=$((I + 1)) done ELEMENTS=${#arr[@]}; if [ $ELEMENTS -gt 0 ]; then ftp -nv $HOST CMD_SCRIPT user $USER $PASSWD ascii prompt mput 048033*.txt bye CMD_SCRIPT fi - Se lo eseguo ottengo: ./trsferimento.sh: line 56: syntax error: unexpected end of file Se commento l'IF finale l'errore scompare ma dove sta questo errore? Grazie a tutti Alessio Artini -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/E131A00A587E1A47ACB9531033151C810179D951@ntsvr02.pontassieve.local -- esta es mi vida e me la vivo hasta que dios quiera
Re: [OT] - Semplice script bash
Ciao Alessio Scusa la risposta un po troppo veloce for file in $( ls 048033* ) ; do if [ -s $file ]; then arr[l]=$file I=$((I + 1)) fi done Il giorno 07 febbraio 2012 11:26, emmanuel segura emi2f...@gmail.com ha scritto: for file in $( ls 048033* ) ; do if [ -s $file ]; then arr[l]=$file fi I=$((I + 1)) done Il giorno 07 febbraio 2012 11:13, Artini Alessio aart...@comune.pontassieve.fi.it ha scritto: Salve a tutti, scusate l'OT ma sto avendo difficoltà a realizzare lo script trasferimento.sh: - #!/bin/bash WORKINGDIR=/tmp/ STORICO=/data/medici HOST='xxx.yyy.zzz.ttt' USER='utente' PASSWD='passsword' #mi sposto nella cartella di lavoro/salvataggio dei file generati cd $WORKINGDIR declare -a arr I=0 for file in $( ls 048033* ) ; do if [ -s $file ]; then arr[i]=$file fi I=$((I + 1)) done ELEMENTS=${#arr[@]}; if [ $ELEMENTS -gt 0 ]; then ftp -nv $HOST CMD_SCRIPT user $USER $PASSWD ascii prompt mput 048033*.txt bye CMD_SCRIPT fi - Se lo eseguo ottengo: ./trsferimento.sh: line 56: syntax error: unexpected end of file Se commento l'IF finale l'errore scompare ma dove sta questo errore? Grazie a tutti Alessio Artini -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/E131A00A587E1A47ACB9531033151C810179D951@ntsvr02.pontassieve.local -- esta es mi vida e me la vivo hasta que dios quiera -- esta es mi vida e me la vivo hasta que dios quiera
Re: [OT] - Semplice script bash
-Messaggio originale- lucky2 ha scritto: Inviato: martedì 7 febbraio 2012 11.27 A: Artini Alessio Oggetto: R: [OT] - Semplice script bash i doppi apici dopo tmp e medici sono giusti? Penso di si e comunque, sia con che senza l'errore rimane...
R: [OT] - Semplice script bash
emmanuel segura ha scritto: Inviato: martedì 7 febbraio 2012 11.30 A: Artini Alessio Cc: debian-italian@lists.debian.org Oggetto: Re: [OT] - Semplice script bash Ciao Alessio Scusa la risposta un po troppo veloce for file in $( ls 048033* ) ; do if [ -s $file ]; then arr[l]=$file I=$((I + 1)) fi done Ho capito che hai spostato il contatore dentro la condizione IF ma l'errore si presenta lo stesso... -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/E131A00A587E1A47ACB9531033151C810179D970@ntsvr02.pontassieve.local
Re: [OT] - Semplice script bash
Oltre a cambiare il contatore ho messo arr[l] Visto che l è la variabile che stai incrementando Visto che nel tuo esempio hai messo arr[i] e non so se vado bene visto che i fa refiremento al ciclo for Il giorno 07 febbraio 2012 11:40, Artini Alessio aart...@comune.pontassieve.fi.it ha scritto: emmanuel segura ha scritto: Inviato: martedì 7 febbraio 2012 11.30 A: Artini Alessio Cc: debian-italian@lists.debian.org Oggetto: Re: [OT] - Semplice script bash Ciao Alessio Scusa la risposta un po troppo veloce for file in $( ls 048033* ) ; do if [ -s $file ]; then arr[l]=$file I=$((I + 1)) fi done Ho capito che hai spostato il contatore dentro la condizione IF ma l'errore si presenta lo stesso... -- esta es mi vida e me la vivo hasta que dios quiera
Re: [OT] - Semplice script bash
emmanuel segura ha scritto: Inviato: martedì 7 febbraio 2012 11.44 A: Artini Alessio Cc: debian-italian Oggetto: Re: [OT] - Semplice script bash Oltre a cambiare il contatore ho messo arr[l] Visto che l è la variabile che stai incrementando Visto che nel tuo esempio hai messo arr[i] e non so se vado bene visto che i fa riferimento al ciclo for E' vero ho visto e corretto ma l'errore rimane... -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/E131A00A587E1A47ACB9531033151C810179D97B@ntsvr02.pontassieve.local
Re: [OT] - Semplice script bash
[Artini Alessio, martedì 7 febbraio 2012] if [ $ELEMENTS -gt 0 ]; then ftp -nv $HOST CMD_SCRIPT user $USER $PASSWD ascii prompt mput 048033*.txt bye CMD_SCRIPT fi Non ho la possibilità di provare, ma temo che il problema sia l'indentazione del delimitatore CMD_SCRIPT. Hai due possibilità: usare - CMD_SCRIPT (minore, minore, meno) che ti toglie i tab dalla riga del delimitatore, oppure scrivere il delimitatore ad inizio riga, senza indentarlo. Spero di aver beccato il problema! :-) -- DaC -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/201202071156.12948.duffy...@gmail.com
Re: [OT] - Semplice script bash
-Messaggio originale- Duffy DaC ha scritto: Inviato: martedì 7 febbraio 2012 11.56 A: debian-italian Oggetto: Re: [OT] - Semplice script bash Non ho la possibilità di provare, ma temo che il problema sia l'indentazione del delimitatore CMD_SCRIPT. Hai due possibilità: usare - CMD_SCRIPT (minore, minore, meno) che ti toglie i tab dalla riga del delimitatore, oppure scrivere il delimitatore ad inizio riga, senza indentarlo. In effetti ho solo spostato la parte CMD_SCRIPT ad inizio del rigo ed adesso sembra funzionare!! Grazie a te ed a tutti gli altri!!! Alessio -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/E131A00A587E1A47ACB9531033151C810179D99C@ntsvr02.pontassieve.local
Re: [OT] - Semplice script bash
[Artini Alessio, martedì 7 febbraio 2012] Incuriosito dallo script, ho provato (dopo aver fatto piccole modifiche) a lanciarlo, ma non riesco a cavarne fuori niente ;-( In particolare, non riesco a capire (né trovo roferimenti in rete) che cosa dovrebbe fare l'ultima parte dello script: [...] if [ $ELEMENTS -gt 0 ]; then ftp -nv $HOST CMD_SCRIPT user $USER $PASSWD ascii prompt mput 048033*.txt bye CMD_SCRIPT fi Immagino che si colleghi all'host indicato nella relativa variabile e vi copi i file che individua in base all'algoritmo dato prima. Ma, il 'CMD_SCRIPT' è un nome qualunque? E dove posso trovare la sintassi degli altri comandi? Grazie dell'attenzione, ennio --- BTW: Nella mia versione ho posto I=pr0 (al posto di I=3D0) e la condizione mi funziona solo se la cambio in 'if [ $ELEMENTS != ]' -- [Perche' usare Win$ozz (dico io) se ...anche uno sciocco sa farlo. \\?// Fa' qualche cosa di cui non sei capace! (diceva Henry Miller) ](°|°) [Why use Win$ozz (I say) if ... even a fool can do that. )=( Do something you aren't good at! (as Henry Miller used to say) ] -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20120207164937.ga32...@deby.ei.hnet
Re: [OT] - Semplice script bash
Il giorno 07 febbraio 2012 17:49, Ennio-Sr nasr.la...@tin.it ha scritto: [Artini Alessio, martedì 7 febbraio 2012] Incuriosito dallo script, ho provato (dopo aver fatto piccole modifiche) a lanciarlo, ma non riesco a cavarne fuori niente ;-( In particolare, non riesco a capire (né trovo roferimenti in rete) che cosa dovrebbe fare l'ultima parte dello script: [...] if [ $ELEMENTS -gt 0 ]; then ftp -nv $HOST CMD_SCRIPT user $USER $PASSWD ascii prompt mput 048033*.txt bye CMD_SCRIPT fi Immagino che si colleghi all'host indicato nella relativa variabile e vi copi i file che individua in base all'algoritmo dato prima. Ma, il 'CMD_SCRIPT' è un nome qualunque? E dove posso trovare la sintassi degli altri comandi? Se non sbaglio si chiama here document: http://www.faqs.org/docs/abs/HTML/here-docs.html -- Stefano Lini Sistema operativo: Debian GNU/Linux Wheezy/Testing AMD64 GNU/Linux User: 508629: http://counter.li.org -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/CAOW=nhdetmfou+abgjewcyddt5z6zvu34r3qfyyor37+mic...@mail.gmail.com