簡體   English   中英

使用 pexpect 獲取“ls”命令的輸出

[英]Using pexpect to get output of 'ls' command

我正在嘗試使用 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 作業,給定用戶名和密碼

任何指示或建議將不勝感激。

如果您可以安排配置無密碼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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM