このコードを pexpect モジュールで動作させるには、ほとんど支援が必要ありません。
このコードは、サーバーにログインして git pull を実行し、最新のコード (アップグレードが利用可能な場合) をダウンロードするか、「既に最新です」というメッセージを送信します。
コードは実際にはパスワード画面を識別しますが、「すでに最新」というテキストを識別しません
ここに何か欠けているかどうかわかりません。
コードのスニペットは次のとおりです。
p = pexpect.spawn('git pull',cwd = comp_dir,maxread = 10000, timeout = 100)
i = p.expect(['password:','Already up-to-date.',pexpect.EOF])
if i == 0:
output_lines = p.before
output_line_list = output_lines.split('\r\n')
for line in output_line_list: print line
count = 0
p.sendline(pwd)
while count < 3: **# The server in case of unsuccessful login asks for password thrice so this check... (not sure if there is a better way of achieving this)**
try:
output = p.expect('Permission denied')
count+=1
p.sendline(pwd)
p.logfile = sys.stdout
except:
print 'Successful Login !!!! ------'
p.expect('Already up-to-date',timeout=None)
count = 3
if i == 1:
output_lines = p.before
output_line_list = output_lines.split('\r\n')
for line in output_line_list: print line
p.expect(pexpect.EOF)
どんな助けでも大歓迎です。
ありがとう、ビジェイ