【问题标题】:How to execute a root command using Python's pexpect library?如何使用 Python 的 pexpect 库执行 root 命令?
【发布时间】:2016-07-13 13:51:10
【问题描述】:

我正在尝试在我的系统 (Centos) 上安装驱动器共享文件夹。

由于mount 命令需要以root 用户身份执行,我首先使用su 命令以sudo 用户身份登录。登录成功后,我想执行我的mount命令。

import pexpect

cmd1 = "su"
cmd2 = "mount -t cifs -o username=abc,password=def //101.101.101.214/Volume1 /home/Juna/Drive"
pwd = "my_password"
child = pexpect.spawn(cmd1)
child.expect('Password:')
child.sendline(pwd)
child.expect('#')
child.sendline(cmd2)

我的脚本没有得到想要的结果。您能否分享我的脚本中需要完成或修改的内容以获得所需的结果。

【问题讨论】:

  • 向用户提供NOPASSWD sudo access 确实比将您的root 密码放入Python 脚本中更好。它可能会从该脚本中泄漏(例如,如果您最终将其推送到 github),这会使调用更加复杂。
  • 不要只说“我没有得到想要的结果”,要说出问题所在。

标签: python python-2.7 pexpect


【解决方案1】:

与其以交互方式发送命令,不如使用-c option to su 为其提供您要运行的命令:

child = pexpect.spawn(['su', 'root', '-c', cmd2])

【讨论】:

    猜你喜欢
    • 2017-02-15
    • 1970-01-01
    • 2018-02-08
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    相关资源
    最近更新 更多