我正在尝试使用pexpect作为用户登录并尝试打印所有可用的crons:
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.
此代码似乎无法正常工作并打印空行。
任何指针或建议都会非常感激。
答案 0 :(得分: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