使用 pexpect 获取 'ls' 命令的输出
Using pexpect to get output of 'ls' command
我正在尝试使用 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.
此代码似乎无法正常工作并打印出空行。
- 无法找出此代码的问题
- 如果有任何更好的方法来列出其他用户的 cron 作业,给定用户名和密码
如有任何指点或建议,我们将不胜感激。
如果你可以安排配置无密码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
我正在尝试使用 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.
此代码似乎无法正常工作并打印出空行。
- 无法找出此代码的问题
- 如果有任何更好的方法来列出其他用户的 cron 作业,给定用户名和密码
如有任何指点或建议,我们将不胜感激。
如果你可以安排配置无密码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