上次提到过,那么可不可以利用expect自动登录到远程主机执行命令后返回到本地机器呢?当然可以。
例如目前我们有一个脚本myscript.sh要复制到192.168.1.11 ~ 192.l68.1.20这10台机器执行一次后,放入crontab内每小时执行,参考代码如下:
-
#!/usr/bin/expect
-
-
for {set ip 11} {$ip <= 20} {incr ip} { # 假设有10台机器
-
# 复制脚本到各台机器上
-
spawn scp -P58422 /root/bin/myscript.sh "root@192.168.1.$ip:/root/bin/myscript.sh"
-
expect "*password:"
-
send "123456\r"
-
send "exit\r"
-
-
# 在各台机器上执行命令
-
spawn ssh -p58422 -t -o StrictHostKeyChecking=no "root@192.168.1.$ip"
-
expect "*password:"
-
send "123456\r"
-
expect "*]#"
-
send "/root/bin/myscript.sh\r" # 执行脚本
-
expect "*]#"
-
send "echo \"01 */1 * * * root /root/bin/myscript.sh\" >> /etc/crontab \r" # 放入crontab内
-
expect "*]#"
-
send "service crond reload \r" # 重启crond服务
-
send "exit\r"
-
}
阅读(1189) | 评论(0) | 转发(0) |