あれ、Dropbox 使ってないじゃん
今まで、LaTeX 仕事だと、Linux 環境じゃないと今一つ不便 だった。 このため、Windows,Mac で作業をするときは、 Windows,Mac,Linux で Dropbox を起動して共有させて、 terminal 経由で実際は Linux 上で作業をしていた。
LaTeX 仕事なら、emacs anthy anthy-el texlive-lang-cjk texlive-binaries tgif があれば、 ひとまず問題なし。
でも、Windows で、Windows 10 Creaters Update の Bash on Windows でも terminal がまともに使えるから、emacs も自然に動く。 実質 debian だし、aptitude install texlive-lang-cjk で、 LaTeX 環境も悩まずに入る。
同じく、Mac でも、MacPorts で LaTeX 環境が動くので、 Linux で作業する必要がほぼ無くなってきた。
でということで、Dropbox をほぼ使わなくなっているので、 「Dropbox、今までありがとうございました」
perl 5.24 で CPAN 更新たっぷり
自宅サーバなどで動かしている Perl のプログラムが エラーを吐き始めた。
どうも、日々の更新で Perl のバージョンアップで、 CPAN を使ってインストールしていた perl モジュールの 整合性が問題みたい。
ということで、インストール済み perl モジュールの更新。
(( 更新対象を表示 )) $ sudo perl -MCPAN -e "CPAN::Shell->r" (( 更新 )) $ sudo perl -MCPAN -e "CPAN::Shell->install(CPAN::Shell->r)"
色々と使っている自宅サーバ、Raspberry-Piサーバは、 100件を越える更新で、すごく時間がかかった。
古い Raspberry-Pi は、メモリ不足で CPAN更新ができねぇし…
iptables hashlimit
imaps などを経由してブルートフォースアタックされるのも怖いので、 hashlimit を用いた制限
((/etc/ferm/ferm.conf)) domain ip { table filter { chain HASHCHECK { mod hashlimit hashlimit-name HASHCHECK_TABLE hashlimit 1/m hashlimit-burst 30 hashlimit-mode srcip hashlimit-htable-expire 120000 ACCEPT ; mod limit limit 1/s LOG log-prefix '[iptables hash drop]: ' ; DROP ; } chain INPUT { : proto tcp dport imaps jump HASHCHECK ; : } } : }
WiFiのアクセスポイント監視
出先での無線LAN利用のために、mineo をキャリアとして WiFiルーターを使っているけど、出先でルータを切り忘れてしまい、 自宅でそのWiFiルータに接続してしまうことがある。 そうなると、パケット代の浪費になるし、自宅でWiFiルータが 入っているか確認したくなる。
そこで、自宅のサーバにWiFiのUSBドングルつけて、 WiFiルータのアクセスポイントのESSIDを見つけたら、 icinga で警告メールを投げることを試してみた。
ELECOM WDC-150SU2M
((ドライバのインストール)) $ git clone https://github.com/lwfinger/rtl8188eu $ cd rtl8188eu $ make all $ sudo make install
アクセスポイントの一覧
$ iwlist wlan0 scan ESSID:"<アクセスポイント名>" :
これで、WiFiルータのESSID名を見つけたら、exit(2) するような Perl スクリプトを書いて icinga に渡せばいい。
NetworkManager の負荷
これで OK と思っていたけど、munin を見てみたら、USB WiFi ドングルを付けたころから、異常負荷がでている。 top で観察すると、NetworkManager が何度もプロセスを起動している。
しかたがないので、NetworkManager が WiFi の設定をしないように
(( /etc/NetworkManager/NetworkManager.conf )) : [keyfile] unmanaged-devices=interface-name:wlan0 :
を設定してみたが、今度はデバイスが初期化されていないから、 "iwlist wlan0 scan" をしても、アクセスポイントを見つけない。
うーむ、どうしたらいいんだろ。
ftp.jp.debian.org が遅くね?
サーバ(debian)の更新をかけてたけど、今日はやたらと遅い。 サーバ側のトラブルかな。
サーバを ftp.jp.debian.org から、ftp.jaist.ac.jp に 変更したら、サクサクとダウンロードされるじゃん。
letsencrypt.sh から dehydrated に移行
以前に導入していた、自宅サーバを SSL で公開するユーザ向けの SSL 証明書を作ってくれる、letsencrypt.sh だけど、パッケージ名が dehydrated に名前が変更となったみたい。
これに応じて、ディレクトリの名前などが変更になったので 設定ファイルを若干変更。apt-listchanges からのメールをみて、 以下のような設定ファイルの移動を行う。
(( インストールと設定ファイルの移行 )) # aptitude install dehydrated # mv -v /etc/letsencrypt.sh/domains.txt /etc/dehydrated/ # mv -v /etc/letsencrypt.sh/conf.d/* /etc/dehydrated/conf.d/ # mv -v /var/lib/letsencrypt.sh/accounts /var/lib/dehydrated/ # mv -v /var/lib/letsencrypt.sh/certs /var/lib/dehydrated/
ただし、/etc/dehydrated/conf.d/ の設定ファイルの中に、 変数 BASEDIR が含まれていたものがあったが、動かないようだったので、 絶対 PATH に書き換えた。
(( 動作確認 )) # /usr/bin/dehydrated -c --force
apcupsdの設定
灯油切れでエアコンを付けたら、電源の容量オーバーでブレーカーが 落ちたのはいいけど、いつもならサーバの UPS がピーピー鳴るのに 今日は無音。さすがに2〜3年の寿命だったはずのものを、7年目じゃ しかたがない。
早々に UPS を入れ替えたけど、前回が安物でサーバとの連動が できなかったので、実績のある APC 社の ES-550 を購入。 電源連動も、apcupsd を入れれば一発。
apcupsd のインストール
以下は、単なる作業メモ。Web の情報そのまんま。
(( apcupsd のインストール )) $ sudo aptitude install apcupsd
(( /etc/apcupsd/apcupsd.conf )) UPSCABLE usb UPSTYPE usb DEVICE /dev/usb/hiddev1
(( /etc/default/apcupsd )) ISCONFIGURED=yes
munin で監視
apcaccess を使うと、電源やバッテリーの電圧、充電状態がとれる。 であれば、munin で監視させてみよう。
(( /etc/munin/my-plugins/apcupsd.awk )) /^LINEV/ { print "linev.value",$3 } /^LOADPCT/ { print "loadpct.value",$3 } /^BCHARGE/ { print "bcharge.value",$3 } /^TIMELEFT/ { print "timeleft.value",$3 } /^BATTV/ { print "battv.value",$3 }
(( /etc/munin/my-plugins/apcupsd.sh )) #!/bin/bash #%# family=auto #%# capabilities=autoconf available="yes" APCACCESS="/sbin/apcaccess" test -x $APCACCESS || exit 1 case $1 in config) echo "graph_title APC UPS monitor" echo "graph_category system" echo "graph_vlabel filter volt." echo "graph_args -l 0 --base 1000" echo "loadpct.label Load[%]" echo "loadpct.draw LINE2" echo "bcharge.label Battery Charge[%]" echo "bcharge.draw LINE2" echo "timeleft.label Time Left[min]" echo "timeleft.draw LINE2" echo "linev.label Line[V]" echo "linev.draw LINE2" echo "battv.label Battery[V]" echo "battv.draw LINE2" exit 0 ;; esac $APCACCESS | /usr/bin/awk -f /etc/munin/my-plugins/apcupsd.awk
監視を始めて、半日ほどだけど、家の電源電圧って思ったより変動しているんだなぁ… 95[V]~100[V] で変化している。家の問題というより、パソコン回りのタコ足配線のせいかもしれんけど。
icinga が Service check did not exit properly
Debianのパッケージを更新していたら、 icingaが、”(Service check did not exit properly)” といった、 エラーを表示して、うまく動いていない。
原因としては、icinga(nagios)では、Perl によるモジュールを 実行するときに、専用の組込み perl interpreter を 使っているけど、nagios のモジュール(今回は check_mailq) が、これに 適合していないために、ダメらしい。
探した資料では、「Perl script の先頭 10 行までの所に、 “# nagios: -epn” というのを入れておくと、組込み Perl を使わない。」ということで、以下のように script の先頭付近に1行を加えた。
(( /usr/lib/nagios/plugins/check_mailq )) #!/usr/bin/perl -w + # nagios: -epn # check_mailq - check to see....
(2021/01/12追記) ichinga の mailq のエラーが再び発生していて、”Service check…”でググったら、自分のこの記事が Hit して問題解決。単なる自己満足の BLOG ではあるが、それなりに役に立ってる。
Homebridgeでチャンネル切替
HomeBridge が便利で TV などの電源制御ができて面白い。 Siri に "テレビをつけて" で電源が入るのは、 とても便利。
だけど、TVを見ていたら、チャンネルを切り替えられたら便利だけど、 "○○放送にチャンネルを変えて"を使うには、 "homebridge-samsungtv-control"みたいな モジュールじゃないと難しそう。 ソースを読んで…とも思ったけど、断念。
でも、よく考えたら、"日本テレビにチャンネルを変えて"ではなくて、 "日本テレビをつけて"と Siri に 話しかけるのはそれなりに自然だし、 これなら、"homebridge-cmdswitch2" の on_cmd で充分じゃん。
ということで、以前に設定していた電源制御の設定のところに、 以下のように各チャンネルの変更機能だけのデバイスを書き並べる。
{ "name": "NHK", "on_cmd": "/usr/local/bin/Tira-2.py --remote=regza --transmit=1" }
CATVだと、主要チャンネル全部を書き並べるのは大変だし、 地デジとCATVのよく見るチャンネルのみ。
Siri向けに設定できないチャンネル
改めてチャンネルを登録してみたけど、ケーブルテレビの「ムービープラス」を登録して、 Siri に「ムービープラスをつけて」と言うと、映画館検索が動いて「プラスという映画はありません」っておっしゃる。 同じく「スーパードラマTV」を登録したら、 スーパーに反応しているのか、スーパー戦隊モノのリンクを表示して、チャンネル切り替えられず。(^_^; 「キッズステーション」もステーションに反応してマップの乗り換え検索を起動しようとするようでダメ。
Linux kernel 4.8.11-1 に更新したらトラブル
Linux のカーネルのバージョンを 4.8.11-1(module では 4.8.0-2-amd64) にあげたら、自宅で動かしていた赤外線リモコン制御システムやら、 予定を eabadge に表示するシステムやら、munin の cpufreq やらが 動かなくなっていた。
シリアルポートの制御のエラーメッセージが出ていたので Perl の serialport が 動かなくなったのかと調べていたけど、シリアルポートデバイスが 見つからない。んで、udev の rules ファイルのトラブルを 疑ったけどこれまた外れ。
最終的に、usbserial のカーネルモジュールが認識されていないので、 "modprobe usbserial" を実行したら、カーネルモジュールが 見つからないとか訳の分からない状態。
しかたがないので、"depmod -a"を実行したら、ようやく認識してくれた。
たぶん、linux-image-4.8.0-2 を入れるタイミングで、depmod も更新 がかかったけど、依存関係のミスで depmod に失敗していた…. といった原因かな。