bashを使用してリモートサーバーにsshとpingを実行すると予想されます。

bashを使用してリモートサーバーにsshとpingを実行すると予想されます。

コードを開発中です。サーバーで Spawn を使用してサーバー B と SSH セッションを確立し、サーバー B からサーバー C にファイルを SFTP に転送します。サーバーAとBは、以前のユーザー構成によってはパスワードがないか、パスワードが必要な場合があります。以下のコードを探してください。

 #!/bin/bash
 /usr/bin/expect <<EOD
 lassign $argv 1 2 3 4 file1 file2
 spawn ssh -oStrictHostKeyChecking=no root@$1
 sleep 2
 expect {
 "#" {
 send_user "successfully logged in!\r"
     }
 "Password:" {
  send "$2\r"
   }
 }
 EOD
 sleep 3
 pinging=$( ping $3 -w1 | head -n 2 | grep -i time )
 if [[ $pinging == *"time"* ]];
 then
            echo "ping successfull to:" $3
 else
            echo "ping not successfull:"$3 "Contact IT Support"
            exit
 fi

問題は、if-elseループがパスワードプロンプトを正しく実行しないか、SSHリモートセッションにログインした後にパスワードプロンプトがないことです。ログインに成功しても、まだパスワードを求められます。また、サーバCに対するPingは、サーバAではなくサーバBで発生する。私は最初にTCLコマンドに触れました。

答え1

このように期待とシェルを混在させることはできません。パスワードを送信すると、予想スクリプトが終了し、予想プロセスが終了し、SSH接続が消えます。 BからCをpingするには、その部分を予想コードに入れる必要があります。

関連情報