【问题标题】:Using pexpect to get output of 'ls' command使用 pexpect 获取“ls”命令的输出
【发布时间】:2016-09-07 03:24:38
【问题描述】:

我正在尝试使用 pexpect 以用户身份登录并尝试打印所有可用的 cron:

import pexpect
import os, time
passwd = "mypass"
child = pexpect.spawn('su myuser')
child.expect('Password:')
child.sendline(passwd)
child.expect('$')
child.sendline('crontab -l')
i =child.expect(['%','.*$', '$'  ])
print i                       # prints 1 here so, the shell is expected.
print child.before            # this doesn't print anything though.

此代码似乎不起作用并打印空行。

  1. 无法找出这段代码的问题
  2. 如果有任何更好的方法来列出其他用户的 cron 作业,给定用户名和密码

任何指针或建议将不胜感激。

【问题讨论】:

    标签: python python-2.7 subprocess crontab pexpect


    【解决方案1】:

    如果你可以安排配置无密码sudo访问,那么上面简单的变成:

    import subprocess
    output = subprocess.check_output('sudo -u myuser crontab -l', shell=True)
    

    如果你需要继续使用su,那么你可以给它一个命令,避免尝试解析shell提示:

    import pexpect
    passwd = "mypass"
    child = pexpect.spawn('su myuser -c "crontab -l"')
    child.expect('Password:')
    child.sendline(passwd)
    child.expect(pexpect.EOF)
    
    print child.before 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多