別のコンピュータにSSHを接続してそこからプログラムを起動し、自分のローカルコンピュータでプログラムを起動するには、予想とパスワードを使用する必要があります。どうすればいいですか?

別のコンピュータにSSHを接続してそこからプログラムを起動し、自分のローカルコンピュータでプログラムを起動するには、予想とパスワードを使用する必要があります。どうすればいいですか?

タイトルに記載されているように、コンピューターAで実行する必要があるスクリプトを作成しています。コンピュータAは、sshコンピュータBでプログラムBを実行し、セッションを終了してからssh(プログラムBがまだコンピュータBで実行されている間)、コンピュータAでプログラムAを実行する必要があります。

Expectを使用し、これを行うにはSSHパスワードを使用する必要があります。

これまでに試した方法は次のとおりです(動作しません)。

#!/bin/bash

#checks to see if programA is already running

if pidof -x "programA" >/dev/null; then
    echo "Program A already running"
    exit 1
fi

spawn ssh username@{$1}
/usr/bin/expect "assword:"
send "password"
./programB & # run programB in the background
exit
./programA

両方のコンピュータでプログラムを終了する必要があるスクリプトは次のとおりです。

pkill programA
spawn ssh username@{$1}
/usr/bin/expect "assword:"
send "password"
pkill programB
exit

プログラムを起動するスクリプトが期待どおりに動作しません。コンピュータAでプログラムAとプログラムBを起動します。また、セッションを分離する必要があることもわかりましたssh。それ以外の場合は、コンピュータ B でセッションを終了すると、プログラム B が終了します。

誰かが私が望むことを行い、私が間違っている部分を説明するスクリプトを提供できますか?

よろしくお願いします。

ベストアンサー1

ほぼ大丈夫そうです。以下を試してみてください(明らかにテストされていません)。

#!/bin/bash

#checks to see if programA is already running

if pidof -x "programA" >/dev/null; then
    echo "Program A already running"
    exit 1
fi

expect <<EOF
 spawn ssh username@${1}
 expect "assword:"
 send "password\r"
 expect "$ "
 send "nohup ./programB &\r" # run programB in the background
 exit
EOF
./programA

編集:ssh username@ {$ 1}アドレスに関するコメント

おすすめ記事