ホーム » コンピュータ » Linux (ページ 21)

Linux」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

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 は、ビデオ切り替えの番号

EdgeRouter-XでL2TP接続をメール通知

EdgeRouter-X が届く前は、linux サーバ側で VPN gateway への ping を チェックして、接続時に管理者にメールが届くようにしていたけど、 新しいルータでも同様のことをやりたい。

パスワードもそれなりに長い桁にしているし、L2TP の PSK 方式で、 事前共有キーとパスワードが合わせて漏れなければ、VPN に接続できないので、 十分安全….。 とはいえ、もし破られたら…のことを考え、L2TP の利用の際に自分宛の メールが来るようにしてあれば、見覚えのない接続=侵入された…で発見できる。

EdgeRouter-X でメールを出すって、かなりいじらないとダメかとおもったけど、 ssmtp というソフトが入っていたので、意外と簡単。

(( /etc/ssmtp/ssmtp.conf ))
root=postmaster
mailhub=自宅のメールサーバ
rewriteDomain=自宅のドメイン名
hostname=ルータのホスト名

まずは、メールサーバにメッセージを送れるように、ssmtp の設定。

(( /etc/ppp/ip-up.d/l2tpd ))
#!/bin/sh
# $1 Interface name  ppp0
# $2 The tty         ttyS1
# $3 The link speed  38400
# $4 Local IP number 12.34.56.78
# $5 Peer  IP number 12.34.56.99
# $6 Optional ``ipparam'' value  foo
SSMTP="/usr/sbin/ssmtp"
IFACE=$1
test -x $SSMTP || exit 0
case "$IFACE" in
l2tp* )
echo -e "From: root@tsaitoh.net\n
Subject: [ERX] interface $IFACE is UP.\n\n
IP address: $4 <=> $5\nOption: $6\n" \
| $SSMTP foo@example.com
;;
esac

最初、/etc/network/if-up.d/l2tp で処理を書いたけど、ダメでちょいと悩んだ。

check_dig が ADDITIONAL SECTION

自宅サーバを運用するなか、 自宅ドメインを外部でも使えるように、 mydns.jp で公開するが、 Dynamic DNS だからこそ、 自宅ドメインのアドレスが引けない時がある。

そこで、icinga を使って、外部で自宅ドメインのアドレスが引けるか 確認をしている。ただ、この中で、

DNS WARNING - 0.017 seconds response time
(Server not found in ANSWER SECTION)

のエラーが1日に1回程度不規則に発生する。 DNS の応答時間の問題 かと思っていたが、 エラーが出ている時の方が、応答時間が短い。 Webで、"Server not found in ANSWER SECTION"をググると、check_dig が、 "ANSWER SECTION"の文字列を、大文字小文字区別で比較して、小文字で情報が帰ってくると アドレスが取れないという記事が見つかった。 しかし、ある程度古い記事だし、対応はとられていそう。 しかしめったに発生しない状況の時に、dig 出力が確認できて、 ようやく原因が見えてきた。 check_dig が呼び出している dig の応答が、問題みたい。

 $ dig @dns1.ttn.ne.jp tsaitoh.net
:
;; ANSWER SECTION:
tsaitoh.NET.        278     IN      A       xxx.xxx.xxx.xxx

と表示されるのが普通だけど、時々、

 $ dig @dns1.ttn.ne.jp tsaitoh.net
:
;; ADDTIONAL SECTION:
tsaitoh.NET.        278     IN      A       xxx.xxx.xxx.xxx

といったように、ADDITIONAL SECTION でアドレスが帰ってくる。 この現象は、Google DNS (@8.8.8.8) では発生しない。

webrootの変更

自宅サーバのHTMLデータの置き場所は、/var/www を使ってきたけど、 CMSの入れ替えを検討する中で、 最近のシステムの流儀の /var/www/html に変更したいので、ファイルを移動。 設定ファイルや、 様々なプログラムで、/var/www を参照するように なっていたので、チョロチョロと変更する。

Webデータの管理用 script なども、/var/www-support に入れていた けど、これも /var/www/support に移動。 でもプログラムの修正が 面倒なので、シンボリックリンクを貼っておく。

vpnserver問題解決

SoftEtherのVPNサーバをインストールしたけど、 翌日にはうまく動かなくなり、原因を探っていたのだけど、 原因は、ケーブルテレビの光接続のルータだったみたい。 ALG設定で、IPsec,L2TP,PPTPの設定を外したら、動くようになった。

vpnserverの動作確認

vpnserverが動き出したのはいいけど、ちゃんと動いているのか、VPN接続があるのかを 把握したいので、icingaでモニタリングするようにしてみた。

(( check_vpnserver ))
#!/bin/bash
VPNCMD=/usr/local/vpnserver/vpncmd
PORT=127.0.0.1:xxxx  # VPNサーバに接続するポートを登録
HUB=VPN
NAME=VPN
# 0:OK, 1:Warning, 2:Critical, 3:Unknown
if [ -x $VPNCMD ]; then
# vpncmdで状態を読み込む
ANS=`$VPNCMD $PORT /server /hub:$HUB /cmd:StatusGet`
if [ "$?" -ne 0 ]; then
# VPNサーバが動いていない
echo "$NAME Critical - No server"
exit 2
else
ANS=`echo "$ANS" | /bin/grep "セッション数 (クライアント)" | /usr/bin/cut "-d|" -f 2`
if [ -z "$ANS" ]; then
# 接続無し
echo "$NAME OK - Server waiting connection"
exit 0
elif [ "$ANS" -gt 0 ]; then
# 接続あり
echo "$NAME Warning - $ANS clients"
exit 1
fi
fi
else
# vpncmd がインストールされていない
echo "$NAME Unknown - No vpncmd"
exit 3
fi

SoftEther VPNを導入

iOS10,macOS Sierraを導入すると、PPTP-VPNが使えなくなるようで、 Buffalo のVPN機能が使えなくなる。 ということで、Mac環境に macOS Sierra の導入ができなかった。

そこで、strongswan VPN サーバを導入しようと、色々試していたけど、失敗。 であればということで、SoftEther VPN(オープンソース版)を入れてみた。 色々試行錯誤のなか、ようやく動くようになった。

さあ、今から macOS Sierraをインストールするぞ。
職場のメインマシンには、ScanSnap のスキャナがあるけど、 macOS Sierraでトラブル報告があるので、 まずは、MacBook Air で試してみよう。

icingaのmap出力を派手に

nagiosからicingaに乗り換えた際に、map出力の アイコンが?だらけになっていたので、 設定を加えて、派手にしてみた。

1610042227_634x556.png

ルータのWeb設定だけハングアップ

自宅サーバの警告でてたけど、 ルータのWeb設定のlogin画面が機能していない。 そのくせ、パケットは流れてる。

ルータ故障の前兆かもしれないので、メモ。

うーむ、Webハングアップが多発するな。

2016-10/02,23:13
2016-10/02,17:31
2016-10/02,06:44

症状の出始めからすると、IPv6パススルーに関係するのかな。 ということで、IPv6パススルーを切ってみる。

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

PS4の動作状況をicingaで表示

HomeKit互換のhomebridgeを使っていて、PS4 の動作確認で ps4-waker というソフト が便利なことがわかったので、ちょいと別応用。

サーバ監視ソフトの icinga で使えるように、nagios 用の check_ps4 を作ってみた。 "ps4-waker search" の出力の statusLine が 200(起動中)/620(スタンバイ) で動作確認ができるけど、 running-app-name も出力に入れれば、なんのゲームが動いているかも出力できる。

#!/bin/bash
PS4WAKER="/usr/local/bin/ps4-waker"
if [ -x $PS4WAKER ]; then
ans=`$PS4WAKER search -t 50 2>/dev/null \
| /bin/sed -n "s/^  \(statusLine\|'running-app-name'\): '\(.*\)'.*$/\2/p" \
| /usr/bin/paste - -`
case "$ans" in
200* ) # Powered ON
echo "$ans"
exit 0
;;
620* ) # Standby
echo "$ans"
exit 0
;;
"" ) # No response
echo "0 Powerd off"
exit 2
;;
* ) # Another status
echo "$ans"
exit 2
;;
esac
else
exit 1
fi

Google 検索

My Google   Yahoo

Microsoft

ファンサイト