NFSおよびCIFS共有フォルダを管理するためのWebフロントエンドを実装しています。 1つのセクションには、すべてのIPアドレスで利用可能な共有ポイント(エクスポート)が表示されます。
バックエンドはSMB / CIFS共有を照会するために使用され、NFS共有を照会するsmbclient -L <ip> -U <user>
ために使用されます。showmount -e <ip>
ただし、showmount
ターゲットサーバーがすべての種類のファイアウォール(Windows、Mac、またはLinux)を実行している場合は停止します。 (このSE / SU投稿はここそしてここNFSにファイアウォールの問題があると言われています)
既存のシステムと存在しないシステムでデモインストールをテストしました。次の組み合わせをテストしますshowmount -e <ip>
。
Machine NFSD Firewall Result
Exists Stopped Off clnt_create: RPC: Unable to receive
Exists Stopped On HANGS
Exists Running On HANGS
Exists Running Off returns list of exports
None n/a n/a clnt_create: RPC: Unable to receive
静止状態では(-9)でのみ死亡showmount
できます。SIGKILL
私たちは使用しようとしていますtimeout
しばらくするとあきらめますが、やはり止まります。
他の端末で実行するとstrace
停止したことがわかります。connect
$ strace -p 63552
strace: Process 63552 attached
connect(4, {sa_family=AF_INET, sin_port=htons(111), sin_addr=inet_addr("192.168.2.10")}, 16
質問showmount
このシナリオでは、どのようにぶら下げずに使用できますか?
1つのアイデアは、まずNFS IP:ポートへの接続を開こうとし、次に成功すると実行されるプログラムを作成することですshowmount
。しかし、他の方法はありますか?
バックエンドはCentos 8で動作します。
答え1
timeout
この信号を使用するようにコマンドに指示できます(SIGKILL
参照man timeout
)。これはshowmount
、次の場合に非常に効果的に機能します。
timeout --signal KILL 3s showmount -e remoteNFSServer