2011-08-10 80 views
3

我使用python自動執行一些任務,但遇到了一些障礙。我自動化的一項任務需要用戶在shell中輸入。如何使用python自動化shell輸入?

要求您運行帶有電子郵件地址作爲參數的命令(足夠簡單),然後要求您使用該電子郵件地址的密碼進行身份驗證。你怎樣模擬用戶輸入來提供密碼?

之後還有一些菜單提示選項,輸入需要重複輸入。這是如何模擬的?請記住,這個窗口並不總是有重點..

回答

1

看起來像是在錯誤地思考。你只需要通過管道發送一些字節到收件人(你的情況下的shell腳本),這可以通過subprocess完成。

3

我不確定你在第二部分要問什麼,但子過程可以用pexpect模塊來控制。例如:

#!/usr/bin/env python 

import pexpect 
import sys 

# Get email and password somehow 
#email = ... 
#password = ... 

# Start the subprocess 
child = pexpect.spawn('mycommand %s' % email) 
# redirect output to stdout 
child.logfile_read = sys.stdout 

# Assumes the prompt is "password:" 
child.expect('password:') 
child.sendline(password) 

# Wait for the process to close its output 
child.expect(pexpect.EOF)