2012-04-18 12 views
0

私は3台のサーバ、s1、s2、d1を持っています.d1はsambaサーバです。私が持っているプロセスは、s1で実行されているスクリプトがファイルを生成してd1にコピーし、s2がd1からそれらのファイルを取り出し、それらのファイルでいくつかのプロセスを実行するというものです。Bashスクリプト:共有ファイルが別のサーバで開かれていることを確認してください

私の問題は、s2でs1がピックアップする前にd1にファイルを書き終わっていることを確認する必要があるということです。これらは時には大きなファイルなので、s2上にあるcrontabの設定に基づいてs2がファイルをコピーしようとしているときにs2が重複している可能性があります。

最初の傾きはlsofを使用していましたが、コマンドを実行しているサーバーでどのファイルが使用されているのかが分かります。どのように私はこのファイルのチェックをスクリプト化することができますか?

+0

何についてはsshとgrep経由のlsofを実行することができます 'flock'?ロックはNFS上で動作しますが、正直なところ私はsambaについては考えていません。 – FatalError

+0

@FatalError s1がファイルをコピーしているときにs2がアクセスできないようにファイルをロックするflockを使用していると言っていますか? Samba関連のコマンドは、d1から実行しなければならないので、私はとにかく使えるとは思えません。 –

答えて

0

あなたのローカルマシンとリモートマシンとユーザーのauthorized_keysファイル内のユーザーの公開鍵を持っている場合は、ファイル名

ssh [email protected] lsof | grep filename 
if [ $? -eq 0 ] 
    then 
     docommand 
    else 
     dontdoit 
fi 
+0

これは可能な解決策ですが、一般的にセキュリティの観点からアクセスの種類を信頼したことのないものです。いつでも私はシステムに不安があるような気がします。しかし、その何かを私はもっと確かめることができます –

+0

特定の公開鍵を持つ特定のマシン上の特定のアカウントにアクセスでき、そのキーがターゲットマシンに登録されている場合にのみ動作します。基本的に、あなたのセキュリティはそのアカウントを保護することだけです。そのような観点からは、sudoほど安全ですが、rootアカウントを提供しません。 これをさらにロックするには、hosts-allowファイルを編集して、そのマシン(および必要に応じてユーザー)が接続できるようにします。 – TaoJoannes

関連する問題