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 に失敗していた…. といった原因かな。
cec-clientをhomebridgeから制御
今までは、iOS の HOME 機能を、linux環境で動くフリー実装の homebridge を使って、赤外線リモコンを制御していた。 しかし、AV機器のON/OFFでは、電源ボタンでON⇒OFFなのかOFF⇒ON なのか分からない。このため、ネットワーク対応の機器だし、 ping の結果に応じて 電源ボタン信号を出していた。
ただ、TVなどは、電源OFFの状態でも、EPG情報取得などのために OS が動いているため、OFF 状態の判定に失敗する。
そこで、先日見つけた HDMI 経由から制御信号を送る cec-client を試してみた。cec-client では、機器のON/OFF を判定しているので、 確実に ON/OFF できるはず。cec-client は、サーバ機では使えなかったので、 Raspberry-Pi を使ってみた。
$ echo "on 1" | cec-client -d 1 -s # 1番機器をON $ echo "standby 2" | cec-client -d 1 -s # 2番機器をOFF $ echo "scan" | cec-client -d 1 -s # 機器一覧をスキャン
device #0: TV ← REGZA address: 0.0.0.0 vendor: Toshiba osd string: TV power status: on device #1: Recorder 1 ← VARDIA address: 2.0.0.0← HDMI入力ソース番号 vendor: Toshiba osd string: RD-S502 power status: standby ← 電源状態 device #2: Recorder 2 ← Raspberry-Pi address: 1.0.0.0 vendor: Toshiba osd string: CECTester power status: o device #3: Tuner 1 ← CATV-STB address: 1.0.0.0 vendor: Panasonic osd string: Tuner 1 power status: on device #4: Playback 1 ← PS4 address: 3.0.0.0 vendor: Sony osd string: PlayStation 4 power status: standby
AVソースの切り替え
今までは、赤外線リモコン信号で、ON/OFF を制御していたので、 HDMI 連動設定をしているおかげで、ケーブルTVのチューナーON で、テレビの電源も ON となり、さらにビデオ入力も対象機器に 切り替わる。
ただ、cec-client に切り替えたら、機器の制御信号をだすのが、 別機器なので、TV電源連動や、ビデオ入力切替連動とならない。
しかたがないので、TVのビデオ入力切替信号も出してみる。
echo "tx 2f:82:10:00" | cec-client -d 1 -s # 2番のHDMIデバイス(raspberry-pi)から、 # 全デバイス宛て(f番)の信号で、 # 82 映像切替コマンドを送る。(TOSHIBA REGZAの場合) # 10:00 は、ビデオ切り替えの番号
SoftEther VPNを導入
iOS10,macOS Sierraを導入すると、PPTP-VPNが使えなくなるようで、 Buffalo のVPN機能が使えなくなる。 ということで、Mac環境に macOS Sierra の導入ができなかった。
そこで、strongswan VPN サーバを導入しようと、色々試していたけど、失敗。 であればということで、SoftEther VPN(オープンソース版)を入れてみた。 色々試行錯誤のなか、ようやく動くようになった。

さあ、今から macOS Sierraをインストールするぞ。
職場のメインマシンには、ScanSnap のスキャナがあるけど、 macOS Sierraでトラブル報告があるので、 まずは、MacBook Air で試してみよう。
systemd.networkの設定
職場から自宅サーバを触っていて、reboot が必要そうなので、 再起動をかけたら、サーバが復帰せずびびった。 Debian が systemd に移行したけど、相変わらず /etc/init.d を使って作業をしていたけど、 ネットワークの設定の方法が変わったのね。 /etc/network/interfaces のファイルだけでメンテナンスしてたけど、 /etc/systemd/network/*.network で設定するのね。
これらの設定を移行してなかったので、ネットワークが設定されず、 DHCPが動かない(自宅内のネットワーク機器全滅)。 同じく Web , mail , ….総崩れ。(x_x;;
systemdのネットワーク設定
(( /etc/systemd/network/eth0.network )) [Match] Name=eth0 [Network] Address=192.168.XX.XX/24 Gateway=192.168.XX.YY
設定の有効化
# systemctl enable systemd-networkd
systemsのresolve設定
systemdの設定ファイルを修正
(( /etc/systemd/resolved.conf )) [Resolve] DNS=192.168.XX.YY Domains=example.jp
設定を有効にする。
# mkdir /run/systemd/resolv # cp /etc/resolv.conf /run/systemd/resolv/resolv.conf # ln -sf /run/systemd/resolv/resolv.conf /etc/resolv.conf # systemctl enable systemd-resolved.service # systemctl restart systemd-resolved.service
homebridgeで温湿度も取れる
homebridgeが面白い。plugin 揃ってるので、 部屋の温度湿度をとれるようにしてみた。 データは、サーバに接続している温湿度センサーの usbrh 。
usbrh のデータを、プラグイン homebridge-httptemperaturehumidity で 読み取れるようにしてみた。
<?php header( "Content-Type: application/json; charset=utf-8" ) ; $data = shell_exec( "/usr/local/bin/usbrh" ) ; if ( preg_match( "/^([\d\.]+)\s([\d\.]+)$/" , $data , $match ) ) { print "{\n\"temperature\": ".$match[1].",\n\"humidity\": ".$match[2]."\n}\n" ; } ?>