”ftp”が無い・・・

仕事場の古いサーバーの一部が動かなくなり用意されていた新しいサーバーに機能を移したのが先月のこと。
OS(Linux)のディストリビューションが大幅に変更され、それまで使っていたftpコマンドが使えなくなっていた。
当初はそれでも運用していたのだけど、ユーザーから「他所から定期的に受信していたファイルが来なくなった」との連絡を受けた。
そう言えば壊れたサーバーの一つが特定のftpサーバーからcrontabでファイルをgetしていたのだった。
その自動受信用のスクリプトが失われたので一から作り直す必要があった。
そんなに難しいスクリプトでは無いので、ftpサーバーのログイン情報を貰って先ずはftpコマンドでログイン・・・と思ったらftpコマンドが無いorz。
セキュリティの関係でftpクライアントがインストールされておらず、使えるのはsftpのみ(汗)。
これでも自動化は出来るだろうと思っていたが、なかなかうまくいかない。
理由はログインの自動化がどうしても出来なかったため。
sshpass
とかを使ってもうまくログインできずファイルのgetが出来ない。
結局のところsftpでの運用は諦めてlftpをインストールして運用することにした。

#yum install lftp

でインストールし、簡単なスクリプトを書いて試験をしたところ無事に目的の動作をさせることが出来た。
lftpでログインからファイル転送・ログアウトまでを自動で行うには下記のように書けば出来た。

#lftp << EOF >open -u ”ユーザー名”,”パスワード” ftpサーバー名
>”実際に行ないたい動作を示すコマンド”例:cdやget/put等
>bye
>EOF

もしくは上のopen以降byeまでをファイルに書き、
#lftp -f ”ファイル名”
でも可能。

bash下で実行させるには実行スクリプトとして
#!/bin/bash
/usr/bin/lftp << EOF open -u ”ユーザー名”,”パスワード” ftpサーバー名 ”実際に行ないたい動作を示すコマンド”例:cdやget等 bye EOF もしくは #!/bin/bash /usr/bin/lftp -f ”ファイル名” としてcrontabに登録すれば指定した時刻もしくは時間間隔での自動実行が可能となる。 ただし!どちらもサーバーへのログイン情報をプレインテキストで書くので、ファイルのアクセス権をしっかり設定しないとセキュリティ的に問題が出てくるので注意! 出来ればスクリプトの所有者をrootにしてファイルパーミッションを700にしておくのが良いかと。 さらにスクリプト名の先頭を.(ドット)にして隠しファイルにするという手もあるな。

←クリックしてくれると嬉しいです。
【広告】

コメントを残す