Gitコマンドの自動化にplink.exeを使用していますが、これは正常に機能します。しかし、私はこれをSudoのログインを持つサーバーで使用する必要があります
plink.exe -ssh [email protected] -m commands.txt
たとえば、私のcommands.txtファイル:
echo -e "MYPASSWORD\n" | Sudo -S -i
cd /home/www/argentium.ru
git checkout HEAD~3
出力はログインしているように見えますが、gitはSudoのログインなしで機能するかのように実行されます。
[Sudo] password for argentium: fatal: Unable to create '/home/www/argentium.ru/.git/index.lock': Permission denied
助けを借りてPuTTY.exeは正常に動作します
сentos-7-x86_64-minimal @ 23.11.2016
-bash-4.2$ Sudo -i
[Sudo] password for argentium:
[root@stilnoeserebro ~]# cd /home/www/argentium.ru
[root@stilnoeserebro argentium.ru]# git checkout HEAD~3
Note: checking out 'HEAD~3'.
コマンド Sudo -S -i
標準入力からパスワードとコマンドを読み取ります。
echo -e "MYPASSWORD\n" | Sudo -S -i
標準入力はパイプからのもので、改行を返し、パスワードが読み取られた後にファイルの終わりを返します。残りのコマンドは通常のシェルで実行されます。
ラウンドにはいくつかの方法があります。コーディングしたものに最も近いのは、ヒアドキュメント:-を使用することです。
Sudo -S -i <<EOF
MYPASSWORD
cd /home/www/argentium.ru
git checkout HEAD~3
EOF
または、すべてのコマンドを入力ストリームに追加することもできます。-
echo -e "MYPASSWORD\ncd /home/www/argentium.ru\ngit checkout HEAD~3" | Sudo -S -i
bash
で簡単にテストできるセットアップがないため、これを通常のplink
シェルでテストしたことに注意してください。