此腳本需要expect指令,使用前确認一下機器收否有安裝:which expect
思路:1.編寫好要追加到hosts檔案内容的檔案(IP_hosts_test)
2.編寫腳本檔案testRead.sh(嵌套expect,實作自動登入),讀取上面的檔案,擷取ip,然後登入到其他機器,追加hosts
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX1UkaNBTTE5kMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DMxIjNzIjM4ETOxgDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
#!/bin/bash
ips=`cat IP_hosts_test |awk '{print $1}'`
for ip in $ips
do
echo -e "\n-------------開始追加hosts檔案---------------------\n"
password='rootroot'
ip='127.0.0.1'
echo -e "\n\n$ip\n"
/usr/bin/expect<<EOF
spawn scp /tmp/IP_hosts_test [email protected]$ip:/tmp/
expect {
"(yes/no)?" {
send "yes\r"
expect "*assword" {
send "$password\r"
}
}
"*assword" {
send "$password\r"
}
}
spawn ssh $ip
expect {
"(yes/no)?" {
send "yes\r"
expect "*assword" {
send "$password\r"
}
}
"*assword" {
send "$password\r"
}
}
expect "*]#"
send "cat /tmp/IP_hosts_test >> /etc/hosts\r"
expect eof
EOF
echo -e "\n-------------追加hosts檔案結束---------------------\n"
done