如果 Linux 服务器密码过期了, ssh 时候会有下面提示:
You are required to change your password immediately (password aged)
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user XX.
Changing password for XX.
(current) UNIX password: ###卡在这里等着输入密码
当用 python 的 paramiko 模块通过用户名 密码登录时
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(host,port,user,pwd)###这个地方并没有任何报错
s.exec_command(cmd, get_pty=True, timeout=500) #这个地方因为密码过期了,会卡住直到超时报错
现在想在 s.connect 这个地方做个检测,如果碰到密码过期就返回错误,翻了参数也没发现有控制的地方,请教有什么好的处理方式么。
1
KIDJourney 2016-10-26 10:26:14 +08:00
exec_command 的时候把 stdin 和 stdout 拿出来,读一下 stdout ,密码过期的话用把新密码打到 stdin 里就行。
参见[How to sudo in para]( http://stackoverflow.com/questions/6270677/how-to-run-sudo-with-paramiko-python) |
2
eyp82 2016-10-28 07:30:29 +08:00
我觉得配置 ssh 无密码登陆不是更好一些? 不需要你脚本里记录密码, 另外也不需要考虑密码过期的问题了.
|