找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 311|回复: 1

[求助] python3,修改Linux服务器密码,超时

1

主题

1

帖子

1

积分

贫民

积分
1
TTTTT 发表于 2018-3-12 16:26:30 | 显示全部楼层 |阅读模式
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect

oldpwd="oracle"

def ssh_cmd(user, ip, cmd, newpwd):
    ssh = pexpect.spawn('ssh %s@%s "%s"' % (user,ip,cmd))
    try:
        i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
        if i == 0 :
            ssh.sendline(oldpwd)
        elif i == 1:
            ssh.sendline('yes')
            ssh.expect('password: ')
            ssh.sendline(oldpwd)
        ssh.expect("(current) UNIX password:")  ## 程序走到这一句,就会出现超时的情况。
        ssh.sendline(oldpwd)
        ssh.sendline(newpwd)
        ssh.sendline(newpwd)
        ssh.expect("passwd: all authentication tokens updated successfully.")
    except pexpect.EOF:
        print ("EOF")
    except pexpect.TIMEOUT:
        print ("TIMEOUT")
    else:
        r = ssh.read()
        print (r)
        print ('haha')
    ssh.close()

if __name__ == '__main__':
    ssh_cmd("grid","192.168.10.5","passwd","zaq1@WSXcde3")



1:修改Linux操作系统密码,我只想自己修改自己的密码,如:grid用户修改自己的密码,而非用root修改。
2:这段儿代码主要是从网上摘取,并做了简单的修改
3:在上面注释的部分,出现超时的情况。如果把那句话去掉,修改密码是没有问题的。但是为了让程序可控,我还是希望能有返回信息。
4:例如:ssh.expect('New UNIX password:'),ssh.expect('Retype new UNIX password:')这两句话也是同样会出现超时。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表