问题遇到的现象和发生背景
使用python subprocess.run运行sudo指令,需要输入密码,怎么通过subprocess输入呢?如果直接在subprocess里面输入密码,会报错,因为密码不是一条指令。
我想要达到的结果
使用tkinter文本框,先执行sudo命令,要求输入密码时,再在文本框中输入sudo密码。
使用python subprocess.run运行sudo指令,需要输入密码,怎么通过subprocess输入呢?如果直接在subprocess里面输入密码,会报错,因为密码不是一条指令。
使用tkinter文本框,先执行sudo命令,要求输入密码时,再在文本框中输入sudo密码。
试试 paramiko
大概这么用,运行了sudo 后,再通过write方式输入密码
try:
ssh_client = paramiko.SSHClient()
ssh_client.load_system_host_keys()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(host,22,'user','PWD')
std_in,std_out,std_err = ssh_client.exec_command('cd /home/swuser/share/;tar -zxvf requests-2.13.0.tar.gz;cd requests-2.13.0;sudo -S python setup.py install',get_pty=True) #在command命令最后加上 get_pty=True,执行多条命令 的话用;隔开,另外所有命令都在一个大的单引号范围内引用
std_in.write('PWD'+'\n') #执行输入命令,输入sudo命令的密码,会自动执行
for line in std_out:
print line.strip('\n')
ssh_client.close()
except Exception,e:
print e