2台のlinuxサーバ間で、リモートでファイルの存在確認をするシェルスクリプトを考えています。
サーバAが日次処理でバックアップを作成、サーバBがリモートでサーバAのバックアップ
を確認し結果をメール送信する、といった一連の処理です。
単純に
#!/bin/sh
if ssh [IPアドレス] test -e [ファイルパス]
then
echo "found"
fi
とすると取得はできるのですが、いちいちパスワードを入力しなければなりません。
バッチ処理で確認したいので、パスワードは自動入力にしたいので、expectを使って
パスワードを送信するところまではできました。
expect -c "
set timeout 30
spawn ssh [ユーザ名]@[IPアドレス]
expect ":"
send "[パスワード]\n"
"
が、この先、存在確認を実行しようとしても上手くいきません。
一応、以下のように考えてみたのですが....
#!/bin/sh
cat << EOF > "cmd.txt"
if [ -e [ファイルパス] ]
then
echo "found"
fi
EOF
cmd=cat "cmd.txt"
rm "cmd.txt"
expect -c "
set timeout 30
spawn ssh [ユーザ名]@[IPアドレス]
expect ":"
send "[パスワード]\n"
send "${cmd}\n"
"
"extra characters after close-quote while executing"
とメッセージが表示されます。
パスワードを自動入力した後、存在確認を行う方法をご教授いただけないでしょうか。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。