初めまして、Yukihiko と申します。 現在、ラズベリーパイをサーバ、Windows PC をクライアントとしたシステムを構 築中です。 クライアントからサーバに対して、任意のタイミングでファイルが転送されてき ます。(転送プロトコルは FTP です) 転送先のディレクトリはファイルによって 固定されています。 転送されてきたファイルに対する処理は、ファイルごとに異なっています。その ため、転送されたファイル名をプログラムから認識したいのですが方法が解りま せん。 どなたか解決策をご存じでしたらお教え下さい。
宜しくお願い致します。
武藤@Debianぷろじぇくとです。
At Thu, 19 Oct 2017 13:40:03 +0900, y_nakayama@tea.odn.ne.jp wrote:
クライアントからサーバに対して、任意のタイミングでファイルが転送されてき ます。(転送プロトコルは FTP です) 転送先のディレクトリはファイルによって 固定されています。 転送されてきたファイルに対する処理は、ファイルごとに異なっています。その ため、転送されたファイル名をプログラムから認識したいのですが方法が解りま せん。
シンプルには、FTPサーバのログを監視しておけばファイル名などを 取得できるのではないでしょうか。
フォルダをinotifyなどで監視するという手もありますが、完了しているか どうかの判断などで無駄に複雑になりそう。
椎谷と申します。
(武藤さんが既に回答されていますが、メール書きかけでしたので 一応送信させていただきます。)
On 2017/10/19 13:40, y_nakayama@tea.odn.ne.jp wrote:
初めまして、Yukihiko と申します。 現在、ラズベリーパイをサーバ、Windows PC をクライアントとしたシステムを構 築中です。 クライアントからサーバに対して、任意のタイミングでファイルが転送されてき ます。(転送プロトコルは FTP です) 転送先のディレクトリはファイルによって 固定されています。 転送されてきたファイルに対する処理は、ファイルごとに異なっています。その ため、転送されたファイル名をプログラムから認識したいのですが方法が解りま せん。 どなたか解決策をご存じでしたらお教え下さい。
Debian 6.0の頃(=ずいぶん昔)にrepreproというパッケージを使っていた際に、 クライアントから特定のディレクトリにアップロードされるファイルを監視して、 ファイルがアップロードされたら任意のアクションを起こすという目的のために、 「inoticoming」というパッケージを使っていたことがありました。
このパッケージの使いようによっては、 Yukihikoさんの問題が解決されるかもしれないと思い、 お知らせさせていただきます。
以上、ご参考まで。
From: y_nakayama@tea.odn.ne.jp Subject: [debian-users 00148] サーバ側に転送されたファイル名をプログラムから認識したいのですが Date: Thu, 19 Oct 2017 13:40:03 +0900
転送されてきたファイルに対する処理は、ファイルごとに異なっています。その ため、転送されたファイル名をプログラムから認識したいのですが方法が解りま せん。
「FTPアップロードが完了したタイミングで、FTPサーバ側でプログラムを 起動する」ができればよい?
FTPサーバの機能で、転送が完了すると設定したプログラムを起動できる ものを探してみました。なお、検索してキーワードを拾っただけです。 動作確認はとっていませんし、手順も調べていません。他にもあるかも。
・Pure-FTPd の uploadscript ・ProFTPd の mod_exec
あと、Pure-FTPd は、アップロードが完了してからファイルを作成する 設定ができるようなので、武藤さんのメールにあったinotifyでの監視 という方法もいけるかもしれません。
あと、半分冗談ですが、転送が終わったらクライアント側からサーバー側に HTTPで合図を送る、とかどうでしょう。
いずれにしても、起動されるプログラムの実行権限にご注意ください。
双角と言います。
既に幾つか出てきていますが、こんな方法でもありますという実例をひとつ。
Subject: [debian-users 00148] サーバ側に転送されたファイル名をプログラムから認識したいのですが Message-ID: JxzrU26C8JLUV57OJPmV8z3w1@tea.odn.ne.jp On Thu, 19 Oct 2017 13:40:03 +0900, y_nakayama@tea.odn.ne.jp wrote: ----------
転送されてきたファイルに対する処理は、ファイルごとに異なっています。その ため、転送されたファイル名をプログラムから認識したいのですが方法が解りま せん。
Raspberry Piであれば、rsyslogが動いていると思うので
・ftpデーモンのログをrsyslogに渡す ・ftpデーモンからのログを、名前付きパイプに出力 ・名前付きパイプを監視するプログラムを常時実行させ、そのプログラムの中 でやりたい処理をさせる
ということも出来ますね。(設定とかは、多少面倒かもしれませんが。) 実際に、仕事でこの仕組を動かしているものがあるのですが、問題なく処理でき ています。
rsyslog から名前付きパイプ経由で出力したログを snmptrap で飛ばす https://www.downtown.jp/~soukaku/archives/2013/0413_022911.html
参考になれば幸いです。 ________________________________________________________________________ Toshiaki TAKADA mailto:soukaku@downtown.jp http://www.downtown.jp/~soukaku/ http://twitter.com/Soukaku