web-dev-qa-db-ja.com

データが古くなったらナットドライバーを再起動し、USBデバイスが変化し続ける

PowerWalker VI 850 LCD upsをUSB経由でRaspberryPiモデルB +に接続しています。NUTを使用して監視しようとしていますが、多くの問題があります。まず、プロトコルのようです。検出が正しく機能していなかったため、protocol = mustekを指定してから、部分的に安定しているようです。ナットドライバーサービスを開始するたびに、実際に接続されます。

ただし、別の癖は、何らかの理由でUSBデバイスが警告や明らかな原因なしに(たとえば、起動時の/dev/bus/usb/001/005から006または007に)変化し続けることです。 udevルールにSYMLINKパラメーターを追加して、これを回避しようとしました。

ACTION=="add", \
SUBSYSTEM=="usb", \
ATTR{idVendor}=="0665", ATTR{idProduct}=="5161", \
SYMLINK+="powerwalkerups" \
MODE="0660", GROUP="nut"

これにより、/dev/powerwalkerupsが常に正しいバスデバイスを指すようになります。しかし、少なくとも、USBデバイスが魔法のように変化するたびに、ナットドライバーが接続を失い、すばらしい「データが古くなった」というメッセージが表示されます。ちょうど今、私がそれを再起動するときはいつでも、それは実際に良いプロトコルで正しく接続して動作します。しかし、私は手動でsystemctl restart nut-driverする必要があります。

データが古くなった場合にNUTにドライバーの再起動を試行させる自動方法はありますか?または、誰かが私のためにこれを行うウォッチドッグタイプのプロセスを推奨できますか?サービスは実際には停止しないため、systemdはサービスが失敗したとは見なしません。サービスを少なくとも1回再起動して、接続が解決するかどうかを確認するにはどうすればよいですか?

(または、そもそも切断を防ぐ方法はありますか?)

更新

NUTホストの稼働時間は5日で、USBデバイスは005から012までずっと揺れています。そこで、別のホストでIcinga2を実行しており、サービスを再起動するように検討します。 。ただし、IcingaホストからNUTホストへのSSHアクセスが必要です:-P。より良いアイデア?

2
S'pht'Kr

私の問題はUSBデバイスの変更に関連していて、すでに上記のudevルールがあったので、次のようにRUNステートメントを追加しました。

ACTION=="add", \                                                                                       
SUBSYSTEM=="usb", \                                                                                    
ATTR{idVendor}=="0665", ATTR{idProduct}=="5161", \                                                     
SYMLINK+="powerwalkerups", \                                                                           
MODE="0660", GROUP="nut", \                                                                            
RUN+="/bin/systemctl restart nut-driver"

これにより、データが古くなったときではなく、USBデバイスが再接続されたとき(または、それが実行していることと呼んでいるもの)にナットドライバーが再起動します。これで問題は解決したようです。

0
S'pht'Kr