1.概要
sshでのコピーコマンドとしてscpコマンドがあり、これを利用します。
ですが、単純にコマンドを実行するだけですとパスワードを聞かれてしまい、シェルスクリプトはそこで入力待ちになってしまい自動実行はできません。
そこで、自動化するにはホストベース認証かパスフレーズなしの公開鍵認証の設定をし、パスワードを入力をせずにsshできる必要があります。
シェルスクリプト自体より、こちらが肝になると思います。
2.具体策
・シェルスクリプト
~~~~ここから~~~~
#!/usr/bin/sh
FILE_PATH="/xxx/xxx/" #csvファイルが保存されているパス
scp ユーザ名@ホスト名(or IPadress):$FILE_PATH/xxxxx.csv.`date +%Y%m%d` #ファイル転送
RET_CODE=$? #scpコマンドの結果をRET_CODEに代入(成功:0、失敗1以上)
if [ ${RET_CODE} -ne 0 ] ; then #成功でなければ
mail -s "メールのタイトル" メールアドレス #メールを送信
fi
~~~~ここまで~~~~
・ホストベース認証、パスフレーズなしの公開鍵認証の設定
ここを参考にすると良いです。
http://www.jp.freebsd.org/QandA/HTML/2255.html
3.補足
scpコマンドには-Pオプションで転送に使うポート番号を指定できます。
デフォルトでは22番ポートとなっていますが、これは一般的に知られているポートですので、サーバへの攻撃に使われる可能性を考えると任意の使っていないポートを使うと(サーバへの)安全性が若干高まります。
また、インターネットを介した通信とのことですので、ネットワーク機器(ファイアーウォール、ルータ、スイッチ)やOSで該当のポート、IPアドレスが許可されていることが必要です。
4.セキュリティ面
基本的な事項として、このシェルスクリプトのwrite権を外しておいて下さい。
また、シェルスクリプトでの考慮は難しいですが、3.補足にあるように、ネットワーク、OSでIPアドレス、ポートを組み合わせて不正な通信自体をブロックすればまず漏れることはありません。
情報漏えいの原因の殆どは、該当ユーザのパスワードを教えてしまった(ばれてしまった)、上での設定を間違え他の人も使えるようになっていた、など人的な要因であり、きちんと設定していれば技術的にハッキングすることはまず無いと考えて良いです。