如何从python中提供shell的输入?

时间:2017-02-15 16:59:43

标签: python ubuntu

我在ubuntu中运行我的python并尝试创建一个与shell通信的脚本。我的脚本很简单

import os

os.system('sudo su - xyz') 

当我运行脚本并尝试登录xyz时,它会在我的shell中询问密码。但是如何通过python脚本发送密码并登录。有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

将硬编码的密码输入stdin,这样您就不必为需要sudoer权限的命令输入密码过度思考它(除了高度不安全)。

假设你的Python脚本中你是root用户(即不用sudo执行命令)。

import os
os.system('su - xyz') 

然后使用sudo启动Python脚本。

$ sudo python foo.py

除非你有一些奇怪的要求,否则这是最自然的方式。

答案 1 :(得分:0)

您可以尝试将密码管道输入命令行字符串。

注意:这非常不安全。任何人都可以访问你的python脚本,知道你的密码,并可以获得你的系统。

import os
password = 'ABCDEFG'
os.system('echo {} | sudo -S su - xyz'.format(password)) 

编辑:注意将echo和-S添加到sudo,因此它可以接受来自管道的密码