【发布时间】:2017-11-19 01:42:57
【问题描述】:
我正在使用 user1 运行 Python 脚本,在此脚本中,我需要将文件移动到我无权访问的文件夹中。该文件夹归 user2 所有。
我想做的是:
- 使用 su - user2 从 user1 更改为 user2
- 输入密码
- 移动文件
到目前为止,我尝试使用 Popen :
p = subprocess.Popen(["su", "-", "user2"])
p.communicate("user2_password")
p.communicate("mv path/to/file other/path/to/file")
不行,需要在shell中手动输入密码。
我也尝试了 pexpect :
child = pexpect.spawn('su - user2')
child.expect ('Password:')
child.sendline('user2_password')
child.sendline('mv path/to/file other/path/to/file')
脚本运行但没有任何反应,运行脚本后我仍然是 user1。
知道为什么吗?对于它的价值,它似乎特定于su,因为如果我用sudo 编写脚本,它就可以工作(我可以输入密码)。
感谢您的帮助!
【问题讨论】:
-
su和sudo是不同的。也许您的root密码与 User2 的 sudo 密码不同 -
我查过,它们是一样的!
标签: python shell popen pexpect su