Re: [問題] expect 背景執行後的問題

看板Linux作者 (人很好那一個)時間16年前 (2009/07/31 22:38), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《coolkevin (我笑他人看不穿)》之銘言: : 請問一下 我寫了一個定時重開某一台機器的script 檔名為restart.exp : #!/usr/local/bin/expect -f : spawn ssh root@192.168.16.20 : set timeout 15 : expect "root@192.168.16.20's password:" : exec sleep 3 : send "lkksf442d\r" : exec sleep 1 : send "reboot\r" : exec sleep 5 : interact : exit : 當我直接執行的時候 $ expect -f restart.exp : 這個script 的功能正常 : 但是當我用crontab 或 at 或 expect -f restart.exp & : 他出現 : $ spawn ssh root@192.168.16.20 : root@192.168.16.20's password: : 就停住不動了 : 我把timeout, sleep 都 去掉也是一樣的結果 : 請各位先進給點指導 : 謝謝 expect 讀stdout,寫stdin。 當你用cron或者是 & 的時候,stdout已經被導別的地方去了。 stdin也是,所以不管你interact 或者是send都吃不到stdin,stdout。 man看看expect是否可以把stdin,stdout指定回來,或許有機會。(我看了一下是不行) 試著用ssh -i key root@ip reboot,這個方法比較快。 另外,你都可以登入了,為啥不改那台的cron,讓他自己reboot? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.215.56

08/03 19:25, , 1F
除了reboot以外還有其他動作 不過都不能用@@
08/03 19:25, 1F
文章代碼(AID): #1ASm7bmP (Linux)
文章代碼(AID): #1ASm7bmP (Linux)