2012-04-17 12 views
0

背景:ローカルのユーザー名がgitユーザー名と同じでない場合、gitは〜/ .netrcが存在する場合でもパスワードを要求します(Enterキーを押すとnetrcが使用されますが、このEnterは必須です) 。expect:すべての出力を保持する方法?

質問:私はgit pullでgitにパスワードを渡す必要がありますが、gitがstdoutに返信したかったら見たい(そして後でリダイレクトすることもできます)。試しました

#!/usr/bin/expect -f 
spawn /usr/bin/git $argv 
expect Password: 
send "secret" 

これはうまくいくようですが、git出力は表示されません。

私はシンプル

puts "$expect_out(buffer)" 

と空想

while (1) { 
    expect { 
    eof {break} 
    -re ".*" {puts "$expect_out(buffer)"} 
    } 
} 

とさえfancier

while (1) { 
    expect { 
    -re "(\[^\n]*\)\n" { send_user $expect_out(buffer) } 
    eof {break} 
    } 
} 

と少し単純

while (1) { 
    expect { 
    "\n" { send_user $expect_out(buffer) } 
    eof {break} 
    } 
} 
を試してみました

いずれもgit出力を表示しません。

PS。このような場合、sshはオプションではありません。あなたの時間を無駄にしないでください。

答えて

2

パスワードを入力した後に「入力」する必要があります。send "secret\r"

+0

が完璧です。ありがとう。 1つの問題:すべてのgit出力が2回印刷されるようになりました。 – sds

+0

あなたのexpectスクリプトに 'log_user 0'を追加してください。 –

関連する問題