MUSSHを使用してリモートシステムでbashスクリプトを実行する
$ mussh -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2
sudo: unable to resolve host hostname
[email protected]: sudo: no tty present and no askpass program specified
マシンの1つに直接SSH経由でスクリプトを実行すると、すべてがうまく機能します。
答え1
mussh
値を持つオプションを使用して端末を割り当てる必要があるという要件を通知できますssh
。たとえば、次のようになります。-o
RequestTTY
mussh -o RequestTTY=yes -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2
直接使用する場合は、そのオプションを使用ssh
できますが、他の目的に使用できます。-t
mussh
-t
それ到着ssh
):
-t
擬似tty割り当てを強制します。これは、リモートコンピュータ上で任意の画面ベースのプログラムを実行するために使用することができ、これは、例えばメニューサービスを実装する場合に有用である。-t
sshにローカルttyがない場合でも、複数のオプションがtty割り当てを強制します。
RequestTTY
セッションの疑似端末を要求するかどうかを指定します。パラメータは次のいずれかです。no
(TTYを要求しないでください)、yes
(標準入力がTTYの場合は常にTTYが要求されます。)force
(常にTTYをリクエストしてください)またはauto
(ログインセッションを開くとTTYが要求されます。)このオプションはミラーリング-t
と-T
フラグ付け SSH(1)。
追加資料:
答え2
さて、問題を解決しました! (退勤後に戦った後)
完全な作業コードは次のとおりです。https://github.com/aurelien-git/MAS]
解決策はRequestTTYを使用しないことです。
ただし、/root/.ssh/authorized_keysにAuthorized_keysが必要です。
これでコマンドを正常にロードできます。
mussh -a -i /home/aurelien/.ssh/id_rsa -d -H mas-hostfile -C 'update.sh' -m2
そしてもっと;-)