python交互式登录远程机器并令其关机
用脚本实现自动化很方便,当遇到交互式的操作该如何处理呢。expect是一个利器。Python中也有expect相关模块pexpect。写了一个小例子,实现远程登陆另一远程机器并执行关机命令。
代码如下:
import pexpect
def shutdown_remote_sys(ip, username, password):
# ssh login
proc = pexpect.spawn("ssh %s@%s " % (str(username), str(ip)))
index = proc.expect([".*assword.*", ".*yes.*"])
if index > 0:
proc.sendline("yes")
proc.expect(".*assword.*")
proc.sendline(password)
# shutdown the dst machine
proc.sendline("sudo shutdown -P now")
proc.expect(".*assword.*")
proc.sendline(password)
proc.interact()
tips
有时候在输入密码之前有一个先选择yes/no的选项。一般选择一次即可,以后不会再出现这个选项。