私はbashスクリプトで次のことを達成しようとしています:
- SSH 接続を試行し、失敗した場合はエラー、SSH 接続が失敗した場合はエラー
- 確認したら、「top」コマンドを実行し、結果をファイルに保存します
- リモートサーバーから戻るscpファイル
私は次のような個々のコマンドを知っています:1)ssh接続を確認する:
ssh -q user@ip exit
echo $?
これは、成功した場合は '0' を返し、エラーの場合は '255' を返します。
2) top を実行してファイルに保存するには、次のようにします。
top -n 1 -b > /tmp/top.out
3) リモートホストからの scp バックファイル
expect -c "
set timeout 1
spawn scp user@host:/tmp/top.out root@anotherhost:/.
expect yes/no { send yes\r ; exp_continue }
expect password: { send password\r }
expect 100%
sleep 1
exit
"
より具体的には、これを完全にまとめることが私の問題です。
Expect を使用して SCP 接続をテストするときに、返された '0' と '255' の値を取得できないようです。
- 再びexpectを使用してtopコマンドを実行できないようです。つまり、これは機能しません。
expect -c " set timeout 1 spawn ssh user@host top -n 3 -b > /tmp/top.out expect password: { send password\r } sleep 1 exit "
- したがって、3 番目のビットも機能しません。
どんな助けでも大歓迎です。私のスクリプトは#!/bin/bash宣言を含む .sh スクリプトであることに注意してください。さまざまな理由で#!/usr/bin/expectを使用できません。