私は、ブログをリモートサーバーに展開するために、Python2。*でのみ動作するデプロイメントツールであるファブリックを使用しています。私のブログはPython 3.5で書かれているので、私は自動的に展開ことを行うためのスクリプトとpyenvツールを期待して使用しようとしていますが複数のシェルステートメントを持つexpectスクリプト
:
#!/usr/bin/expect
set timeout 10
spawn pyenv global system # changes python to 2.* version
spawn fab build # gets files zipped
spawn fab deploy
expect "private key:"
send "x\r"
expect "Login password for 'myblog': "
send "*******\r"
expect eof
spawn pyenv global 3.5.1 # changes back
は、その後、私は唯一のspawn pyenv global system
とspawn fab deploy
パートの仕事を見つけました。
spawn fab build
の部分には入力やフィードバックは必要ないため、これはありますか?しかしもしそうなら、最初のステートメントspawn pyenv global system
がなぜ機能したのか説明できません。また、奇妙なことに、最後のステートメントは失敗しました。
ところで、これら4つのステートメントをコマンドラインで別々に実行するとよいです。
後
expect eof
を追加し、あなたがチェックしました'autoexpect'を出す?シェルスクリプトをexpectスクリプトに記録し、間違っていることを明らかにする可能性があるかどうかを検査します。 – Ben@Benまだ、あなたはそれを言う前に私はautoexpectを知らない。私は今、それを試してみよう! – Spike