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

| 2010年12月21日

由于要做一个对大量机器访问并且执行命令的一个操作,一个一个来那肯定不行了,那家伙一个人做要到猴年马月啊。所以想写一个工具来完成,考虑到开发速度、对数据库访问的便捷性等因素,我选择了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
看完本文有收获?请分享给更多人

关注「黑光技术」,关注大数据+微服务