プロジェクトのシナリオ:
仕事では、ローカルでノードをサブミットし、他のノードにリモートでログインしてシェル コマンドを実行する必要がよくありますが、各リモート ホストに個別に ssh 接続すると、それぞれのコマンドを実行するのが非常に面倒になります。各リモートホストに直接 ssh 接続してサブミッションノード上でコマンドを実行できれば、いちいちログインする手間が省けます。
機能を実現します。
ssh パスワード不要のログインを設定する必要があります。ログイン パスワードをスキップして、リモート ホストに直接ログインできます。これは、シェル スクリプトで実行する場合に非常に重要です。
操作脚本:
次の内容の新しいシェル スクリプトを作成します。
set user "holden"
set host "192.168.0.80"
set loginpass "123456"
set cmd_prompt "]#|~]?"
spawn ssh $user@$host
set timeout 30
expect {
-re "Are you sure you want to continue connecting (yes/no)?" {
send "yes\r"
}
-re "password:" {
send "${loginpass}\r"
}
-re "Permission denied, please try again." {
exit
}
}
expect {
-re $cmd_prompt {
send "./robosense_sdk.sh\r"
send "exit \r"
}
}
interact
走る:
ファイル名は start.sh、run です。
expect start.sh