linux expect

hgs19921112發表於2018-08-07
expect -c "
   set timeout -1;
   spawn ssh root@192.168.6.132;
   expect {
    *(yes/no)* {send  yes\r ;exp_continue;}
    *password* {send  123456\r ;exp_continue;}
eof {exit 0 }
}";
透過expect工具,shell在while迴圈中完成服務期間的免密登入一鍵話指令碼
1.前提要安裝expect包
2.程式碼如下:
#!/bin/sh
#主伺服器密碼
password=123456
while read hostname ; do
    expect -c "
         set timeout -1;
         spawn ssh-copy-id ${hostname} ;
         expect {
         "*password:*" {send --  ${password}\r ;exp_continue;}
         "*\(yes/no\)*"  {send -- yes\r ;exp_continue;}
         eof {exit 0;}
          }"
echo "hosts:${hostname} done."
#ipconf.cfg 中存放要與主伺服器要免密登入的使用者的ip 例如: root@1921.68.245.134 每一行的格式與該例相同
done < ipconf.cfg
ifconf.cfg示例:
   root@192.168.6.132
   root@192.168.6.133



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31506529/viewspace-2199363/,如需轉載,請註明出處,否則將追究法律責任。

相關文章