ファイルのリストがあります〜しなければならない確認メールを送信する前に、リモートディレクトリに存在します。たとえば、私のリストは次のとおりですfile_list=example.txt testfile.txt
。私はそれぞれをテストする方法を知っています個人のファイルは次のように存在します。
ssh [email protected] "test -e /path/to/file/example.txt"
if [ $? -eq 0 ]; then
echo -e "Email body" | mail -s "File exists." "[email protected]"
fi
しかし、リスト内の各ファイルをどのようにクリックして確認できますか?すべてのファイルそのリモートディレクトリに存在しますか? 4つのうち3つが正常にプッシュされたとsftp
仮定すると、クライアントにすべてのファイルが利用可能であるという電子メールを送信し続けるのではなく、終了し、私のグループにエラーを電子メールで送信して確認するように言う必要があります。ロジックは次のようになります。
ssh [email protected] "test - [$file_list]"
if [they all exist]; then
successful -- email the client
else
error -- email your group
exit
fi
答え1
あなたできる単一のSSH接続のリモート側に配列を設定し、それを繰り返してみてください。ファイルリストが静的でリモート側にシェルスクリプトを配置できる場合は、それを呼び出すのが最も簡単です。それ以外の場合は、配列をローカルに設定して繰り返しSSH経由でテストするたびにファイルが存在することを確認できます。
files=(example.txt testfile.txt)
ok=0
for file in "${files[@]}"
do
ssh [email protected] test -e "$file" && ((ok++))
done
if [ $ok -eq ${#files[@]} ]
then
success, all $ok files made it
else
failure, only $ok files made it
fi
答え2
変数を設定file
し、file1
ファイル名を追加します。
file="/path/to/testfile.txt"
file1="/path/to/example.txt"
ssh [email protected]
if [[ -f "$file" && -f "$file1" ]]; then
echo -e "Email body" | mail -s "File exists." "[email protected]"
else
echo -e "Email body" | mail -s "File does not exists." "[email protected]"
exit
fi
-f
: ファイルが存在し、通常のファイルの場合は true を返します。