2012-11-27 162 views
0

我想創建一個腳本來上傳文件,直到上傳操作成功。該腳本將監視日誌文件。如果「未連接」服務器,我想重複上傳操作,直到「連接」和「文件成功傳輸」任何人都可以幫助我建立正確的請求。我應該寫後如果egrep的「不......FTP bash腳本

LOGFILE=/home/transfer_logs/$a.log 
First=$(egrep "Connected" $LOGFILE) 
Second=$(egrep "File successfully transferred" $LOGFILE) 

    ftp -p -v -i 192.163.3.3 <../../example.script> ../../$LOGFILE 2>&1 

    if 
    egrep "Not connected" $LOGFILE; then 

    ftp -p -v -i 192.163.3.3 <../../example.script> ../../$LOGFILE 2>&1 

    until 
    [[ -n "$first" ]] && [[ -n "$second" ]]; 
    done 
    fi 

例子包括:

binary 
    mput a.txt 
    quit 
+1

你鎖定到FTP什麼SCP如果你絕對必須使用FTP,請? out [expect](http://linux.die.net/man/1/expect)它是爲交互式會話的腳本控制而量身定做的 – Gus

+0

我不確定'ftp'的退出狀態是否有用,但如果是這樣的話,它會比grepping輸出更強大。 – Thomas

+0

可能是一個不好的例子,我不知道我應該怎麼做,我只想重複uploa d操作,直到文件上傳成功。 – Smithis

回答

1
while :; do 
    ftp ... > $LOGFILE 
    grep -qF Connected $LOGFILE && 
    grep -qF "File successfully transferred" $LOGFILE && break 
done 
+0

qF會做什麼?和「連接」的權利? – Smithis

+0

@Smithis你熟悉手冊頁嗎? RTFM。並且,不,引號是沒有必要的。你有沒有嘗試過上面給出的命令? –

+0

我試過是的,運行後沒有給回任何東西,必須ctr + z停止 – Smithis