看板 Linux 關於我們 聯絡資訊
感謝大家,我找到解法了!!! 關鍵在於需要"等到"要傳送的檔案開始傳送才可以繼續下個動作 以下是放到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 "user@example.com:/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 jjkkwsr@192.168.2.204:/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 jjkkwsr@192.168.2.204:/home/jjkkwsr/backup : password: : ====================== : 爬過前文有人遇到相同的問題,癥結點似乎在於 crontab 的 stdin 和 stdout : 請問有前輩可以指點小弟是否有什麼地方遺漏了嗎,感謝>< -- 天烽火漫無邊 河漢界戰國天 霜覆雪麻煩牽 木生子帶頭尖 事綿延滿人間 亮情節非等閑 無宮闕難成仙 謀天下劃兩邊 該英雄出頭時 怨老天未眷顧 蒙今已非比昔 分藍袍破家門 羊變色任我顛 非總有清曉年 擔欲撐半邊天 手遮天禍人間 http://www.wretch.cc/user/jjkkwsr -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.138.164.5
zx1986:我也有在用 execpt 好筆記先收下了 感謝 03/24 12:13
zx1986: expect .... 03/24 12:13