作者 主題: shell ftp 之後再執行動作  (閱讀 2368 次)

0 會員 與 1 訪客 正在閱讀本文。

nomoty

  • 懷疑的國中生
  • **
  • 文章數: 58
    • 檢視個人資料
shell ftp 之後再執行動作
« 於: 2012-03-29 10:37 »
下面shell是連到ftp 之後要輸出時間至end.txt,但ftp close後就結束這個shell,
不會再執行下面輸出的動作,不知有沒有什麼指令可以再繼續動作

#! /bin/sh
......
......
startTime=`/bin/date +"%Y%m%d %H:%M:%S"`
echo $startTime >> /home/admin/start.txt

ftp -n "$host" <<EOC
user $id $pw
binary
cd $remodir
bye

endTime=`/bin/date +"%Y%m%d %H:%M:%S"`
echo $endTime > /home/admin/end.txt

noki

  • 憂鬱的高中生
  • ***
  • 文章數: 197
    • 檢視個人資料
Re: shell ftp 之後再執行動作
« 回覆 #1 於: 2012-03-30 16:14 »
你這shell script中的  << EOC
只是跟系統講讀檔案時遇到EOC時就要停止
因為你的ftp是去讀下面一行行的指令並執行
所以必須跟他講讀到那一行要結束(Ctrl + D)

但是你沒有EOC做結束
所以script應該一直停留在ftp的狀態下
而ftp沒有辦法執行bye下的那兩行
故沒有出現預期中的end.txt

小弟拙見,有誤請大大糾正。

nomoty

  • 懷疑的國中生
  • **
  • 文章數: 58
    • 檢視個人資料
Re: shell ftp 之後再執行動作
« 回覆 #2 於: 2012-03-30 17:17 »
不知道該怎麼改才行呢,網路上找到有關ftp 的shell script大多結束後
就沒後續動作了

vincent119

  • 憂鬱的高中生
  • ***
  • 文章數: 137
    • 檢視個人資料
Re: shell ftp 之後再執行動作
« 回覆 #3 於: 2012-04-02 14:28 »
2樓說得很明白了

startTime=`/bin/date +"%Y%m%d %H:%M:%S"`
echo $startTime >> /home/admin/start.txt

ftp -n "$host" <<EOC
user $id $pw
binary
cd $remodir
bye
EOC
endTime=`/bin/date +"%Y%m%d %H:%M:%S"`
echo $endTime > /home/admin/end.txt

nomoty

  • 懷疑的國中生
  • **
  • 文章數: 58
    • 檢視個人資料
Re: shell ftp 之後再執行動作
« 回覆 #4 於: 2012-04-03 16:28 »
感謝回答,在ftp bye 下加EOC就可以了....