ホーム » コンピュータ
「コンピュータ」カテゴリーアーカイブ
inotify-tools ふむふむ
homebridge-people-pro で ping 相手の有無を検出できるが、これに合わせて通知をしたい。
shell script で実現しようと思うと、crontab で file-exist と思うけど、crontab の頻度と通知の遅れのトレードオフ。
でも、ファイルシステムイベント監視の inotify(7) を活用してくれる inotify-tools の中に、inotifywait / fsnotifywait というコマンドがあるのか。これなら、shell script で実現できそうだな。
sambaをWindowsのネットワークで表示
以前から、samba を運用しているけど、エクスプローラのネットワーク検索で、samba サーバが見えない。
なにげなく、Gemini に問い合わせをかけてみたら wsdd(Web Services on Devices (WSD) daemon) をインストールする方法を教えてくれた。あらためて、wsdd でググったら、wsdd2 ならインストールするだけとのことであった。ということで、”apt install wsdd2″ でインストール。今までなら、IPアドレス直打ちとかしていたけど、他の PC から簡単に見えるようになった。
switchbot API の排他処理とリトライ
自宅サーバを更新し、Switchbot の温度監視を munin でグラフ化、その結果を nagios4 で結果のモニタリングをしていたけど、新しいサーバで Unknown の状態が頻発している。旧サーバでの運用時より、発生回数が増えている。
排他処理とリトライの追加
Switchbot API での値の取得だけれど、muninでの値取得とnagios4での値取得の処理と重なるとデータ取得に失敗すると思われるので、flock コマンドで排他処理を追加。これである程度は Unknown が減ったが、それでも Unknown 発生する。
しかたがないので、Switchbot API で 成功ステータス100が取れなかった時は、1秒の間をあけて1度だけリトライするようにした。(当初は0.3秒 sleep にしたけど効果が薄かった) これにより Unknown はかなり減ったけど、まだ失敗することがある。しかしながら、Switchbot API の1日あたりの回数制限もあるし、何度もリトライさせるのはやめておこう。
#!/bin/bash . "/usr/local/etc/switchbot/token-v11.sh" function curl_status() { # flockで排他処理 /usr/bin/flock -x /tmp/switchbot-api.lock \ /usr/bin/curl -s --request GET \ -H "Content-Type: application/json" -H "Authorization: ${token}" \ -H "sign: ${sign}" -H "nonce: ${nonce}" -H "t: ${t}" \ "${url_list_v11_meter}" } function device_status() { url_list_v11_meter="${url_list_v11}/$1/status" JQ=/usr/bin/jq json=$(curl_status) state=$($JQ '.statusCode' <<< "$json" ) # 取得に失敗したら1度だけリトライ if [ "$state" != "100" ]; then # リトライ間隔(sleep 0.3 では効果が薄かった) sleep 1 json=$(curl_status) fi $JQ -r '. | (.statusCode|tostring) + " " + (.message|tostring)' <<< "$json" }
(追記) 0:00 頃に unknown
上記の改良後だけど、2日連続で 0:00 に unknown 状態になる。 Switchbot HUB 自身が、日替わり時に何らかの処理を実行しているんだろうなぁ…
homebridgeも新サーバに移行
今まで、raspberry-pi で動かしていた、homebridge を 新サーバに移行させた。
機能の中には、webとhomebridgeの連携で、機能の中継でムダな処理があったけど、一体化してすっきり。
ただ、cec-client による HDMI を使った TV,CATVSTB などのON/OFF/入力切替 については、パソコンではできないので、cec-client 処理は raspberry-pi に依存したまま。
Ubuntu に gcalcli の最新 4.5.1
自分の Google Calendar のデータを表示する Script を動かしていたが、Ubuntu ベースの新しいサーバで動かない。
“gcalcli –noauth_local_webserver” で初期化しようとするが、コマンドラインに表示された URL をブラウザで開いてもエラーがでてしまう。確認すると、Ubuntu Desktop 24 でインストールされていたパッケージが 4.3.0 で古いみたい。
しかたがないので、gcalcli の apt パッケージを削除して、pip でインストール。
$ sudo apt purge gcalcli $ pip install gcalcli
ただ、 .bashrc に “$HOME/.local/bin” の PATH が通っていない。PATH の追加と、自作 script の gcalcli 呼び出し部分の PATH を書き換え。
netplanの問題?ネットワークが切れる
新しいサーバに移行したけど、ネットワークが勝手に切れる。当初、Debian をインストールをしたときには、ネットワークインタフェース自体が消えていたので、ドライバーがうまく動いていないと思われたが、今回は Ubuntu に入れ直ししているし、ifconfig -a でみても、インタフェースは動いているものの、IPアドレス勝手にダウンしている。
netplan の設定トラブル
Gemini で質問したら、アドレス固定設定で登録した netplan の構文エラーとの指摘。でも警告を直しても相変わらず切れる。
netplan の設定ファイルは、Gemini の提案を手作業で登録したけど、netplan, Network-Manager との絡みの問題で、相互が設定をおかしくしている可能性がある。ということで gnome 設定 – ネットワークで固定アドレス設定で登録したら、安定した…の…かなぁ…
ssh多段ログイン
自宅のサーバ更新で、公開しているサーバの奥にある自宅内端末にログインする機会も多い。
あるんだろーなと調べるとやっぱりあるね、ssh 多段ログイン。”-X”オプション x11-forward も動くじゃん。
x11-forward で google-chrome 開くと、最初はフォントとかいろいろやりとりがあって立ち上がりは遅いけど、普通に動くな。
((( ssh多段ログイン ))) $ slogin user@踏み台サーバ -t slogin user@自宅内別端末 ((( ssh X11 フォワード ))) $ slogin -X user@踏み台サーバ -t slogin -X user@自宅内別端末 [自宅内端末]$ xeyes
新しいサーバ用にUSB-Cポートを
7年前のWindows機に Ubuntu を入れてメインの自宅サーバに更新しようと最終段階。今後の使い方も含め、USB-C ポートもつけておこうと安い PCI の USB-C ボードを購入。ロープロファイルのブラケット付きって書いてあるのに、ノーマルブラケットしか入っていない。
送り返すのも面倒だし、金属加工で逃げた。
ロープロファイル加工を終えて、サーバにくっつけたけど、USB-C × 2port は普通に使えるけど、縦配置の USB-A 3.0 × 2port は、パソコンのブラケットを支えるフレームの幅が狭く USB-A コネクタが刺すことができない。USB-Cポートが目的なのでひとまず妥協。
接続して起動するが、どうも sytemd-udevd の負荷が発生し、1CPU の loadavg が 100% に張り付いている。相性悪いのかな。2000円ムダにした…(T_T;
USB 切り替え機を導入
自宅サーバを更新しているけど、Ubuntu Desktop も安定して使えるので、Windows 端末と 新サーバを切り替えることも多い。キーボード・マウス・USBスピーカをまとめて切り替えたいので、USB 3.0切り替えスイッチを導入。Amazon さんから届いて早々につなぐけど、USB が INPUT/OUTPUT 両方が USB-A メスコネクタになってる。だから添付ケーブルがUSB-Aオス/オスのケーブル。USB-Aオス/Aメスとか、USB-A/USB-B の組み合わせじゃないから、差し間違えてひと悩み。
samba.service は AD 用だ!
新しい Ubuntu マシン用に設定を以降中だけど、samba で初歩的すぎることに気づかず悩む。
/etc/samba/smb.conf を移行&修正して systemctl restart samba を実行するけど、エラーが治らず悩む。エラー自体は 現行サーバの WORKGROUP と 新サーバで同じ名前を使ってたもんだから、名前を変更すれば治るはずだけど、エラーが回復しない。色々悩んだ末、Windows とのファイル共有は、smbd , nmbd の担当だし systemctl restart smbd / nmbd をするだけ。設定が反映されるのに気づかず、無駄に悩んでしまった。