python中实现ssh自动登录并且执行命令

由于要做一个对大量机器访问并且执行命令的一个操作,一个一个来那肯定不行了,那家伙一个人做要到猴年马月啊。所以想写一个工具来完成,考虑到开发速度、对数据库访问的便捷性等因素,我选择了python开发。查了一下python的ssh库,呃用起来挺简单的。

这是个修改主机密码的登录demo

def ssh_cmd(ip, passwd, cmd, newpwd):
ret = -1
ssh = pexpect.spawn(‘ssh -q -p36000 root@%s “%s”‘ % (ip, cmd))
try:
i = ssh.expect([‘password: ‘, ‘continue connecting (yes/no)?’], timeout=5)
if i == 0 :
ssh.sendline(passwd)
elif i == 1:
ssh.sendline(‘yes\n’)
ssh.expect(‘password: ‘)
ssh.sendline(passwd)
ssh.expect(‘New Password:’)
ssh.sendline(newpwd)
ssh.expect(‘Reenter New Password:’)
ssh.sendline(newpwd)
r = ssh.read()
ret = 0
except pexpect.EOF:
print “EOF”
ssh.close()
ret = -1
except pexpect.TIMEOUT:
print “TIMEOUT”
ssh.close()
ret = -2
return ret

4 thoughts on “python中实现ssh自动登录并且执行命令

  1. “查了一下python的ssh库,呃用起来挺简单的。” pexpect根本就不是Python的SSH库,只是expect的python实现而已

  2. 是的,pexpect不是python的ssh库,应该是expect的python实现,不止可用在ssh上,ftp等其它交互上都可以使用的。

Leave a Reply

Your email address will not be published. Required fields are marked *