我正在尝试使用pythonparmiko ssh模块自动管理linux,除了sudo之外,一切都很好。我使用stdin.write()
和stdin.flush()
跟踪了sudo的paramiko文档,但是没有运气远点。拜托帮我一下。在
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host,username=uname,password=pwd)
print('Successfully authenticated on'+ " " +host)
print "\n"
stdin,stdout,stderr = ssh.exec_command('sudo ls')
stdin.write(pwd+'\n')
stdin.flush()
print stdout.readlines()
ssh.close()
您也可以使用atexit模块。它在退出时清除我的函数。 我这样使用它:
atexit.register(client.close)
sudo在TTY上的行为方式非常具体,以保持其安全性理念。有一个命令行选项可以将提示写入
stderr
并从stdin
读取,而不是sudo直接处理TTY。在尝试:
如果您是为了系统管理任务而这样做的话,那么很多框架已经完成了。如果您愿意为大多数事情编写python,或者像Ansible这样的东西仍然可以控制
ssh
,但可以用一种更简单的yaml
格式编写策略,那么您可以看看Fabric。在相关问题 更多 >
编程相关推荐