crontab 搭配 expect - Linux

Table of Contents

感謝大家,我找到解法了!!!

關鍵在於需要"等到"要傳送的檔案開始傳送才可以繼續下個動作

以下是放到crontab可以work的程式

來源:https://blogs.oracle.com/SanthoshK/entry/automate_linux_scp_command

#!/usr/bin/expect -f
# connect via scp
set timeout 600
spawn scp /u01/dumps/file.dmp "[email protected]:/home/santhosh/file.dmp"

expect {
-re ".*es.*o.*"
{
exp_send "yes\r"
exp_continue }

-re ".*sword.*"
{
exp_send "PASSWORD\r"
exp_continue }

-re "file.dmp.*" {
sleep 5 send "\r"
exp_continue }
}
exit




※ 引述《jjkkwsr (JJKKWSR)》之銘言:
: 小弟用 expect 寫了一支 scp 的程式
: 定期會送 log 到另一台 server 上,手動執行沒問題
: 但放到 crontab 時就無法執行
: expect 程式如下
: log.sh
: ======================
: #!/usr/bin/expect -f
: spawn scp bash -c "/tmp/loginlog [email protected]:/home/jjkkwsr/backup"
: expect "password:"
: send "****\n"
: interact
: ======================
: crontab 設定如下(都已用完整路徑)
: ======================
: */1 * * * * /usr/bin/expect /export/log.sh > monitor
: ======================
: 執行完 crontab 後的記錄檔,發現卡在 password
: ======================
: spawn scp bash -c /tmp/loginlog [email protected]:/home/jjkkwsr/backup
: password:
: ======================
: 爬過前文有人遇到相同的問題,癥結點似乎在於 crontab 的 stdin 和 stdout
: 請問有前輩可以指點小弟是否有什麼地方遺漏了嗎,感謝><

--
天烽火漫無邊 河漢界戰國天 霜覆雪麻煩牽 木生子帶頭尖
事綿延滿人間 亮情節非等閑 無宮闕難成仙 謀天下劃兩邊
該英雄出頭時 怨老天未眷顧 蒙今已非比昔 分藍袍破家門
羊變色任我顛 非總有清曉年 擔欲撐半邊天 手遮天禍人間

http://www.wretch.cc/user/jjkkwsr

--

All Comments

Frederic avatarFrederic2012-03-20
我也有在用 execpt 好筆記先收下了 感謝
expect ....