2011-08-10 10 views
3

私はいくつかのタスクをPythonで自動化していますが、少しばかりのロードブロックに当たっています。私が自動化しているタスクの1つは、シェルでのユーザー入力が必要です。Pythonでシェル入力を自動化するには?

パラメータとして電子メールアドレスを指定してコマンドを実行し、その電子メールアドレスのパスワードで認証するように求められます。ユーザー入力をシミュレートしてパスワードを提供するにはどうすればよいですか?

また、いくつかのメニューがあります。これは、入力を繰り返し打つだけで入力が必要なオプションです。これはどのようにシミュレートされますか?このウィンドウには常にフォーカスがあるわけではありません。

答えて

1

あなたが間違った方法で考えているように見えます。あなたは受信者(あなたの場合はシェルスクリプト)にパイプ経由でいくつかのバイトを送る必要があります。これはsubprocessで行うことができます。

3

私は第2部で何を求めているのか分かりませんが、サブプロセスは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) 
関連する問題