Python paramiko sudo不起作用

时间:2016-02-09 10:52:30

标签: python ssh sudo paramiko

我正在尝试使用Python Paramiko ssh模块自动执行linux管理,一切正常,除了sudo。我使用stdin.write()stdin.flush()跟踪了suram的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()

2 个答案:

答案 0 :(得分:0)

为了保持其安全性,

sudo会以非常具体的方式处理您所使用的TTY。有一个命令行选项可以将提示写入stderr并从stdin读取,而不是sudo直接处理TTY。

尝试:

stdin, stdout, stderr = ssh.exec_command('sudo -S ls')

如果您正在为系统管理任务执行此操作,那么很多框架已经完成。你可以看看Fabric如果你为大多数事情写python,或者像Ansible这样的东西仍然可以控制ssh以外的东西,但是可以用更简单的{{{{{{{ 1}}格式。

答案 1 :(得分:0)

您还可以使用atexit模块。它在退出时清除我的功能。 我这样使用它:atexit.register(client.close)