web-dev-qa-db-ja.com

Plinkはsudoのgitのコマンドファイルでは機能しません

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'.
1
Eugen Gedroyc

コマンド 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シェルでテストしたことに注意してください。

1
AFH