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

システム

最近の投稿

  • 主役は私
  • あづぃ…
    エアコンのない室内、max37℃…. 脳みそ、熔ける… […]
  • プリンタの更新 EP-716A
    EP-716Aに更新 以前から使っていたプリンタ EP-706A […]
  • Raspberry-Pi にヒートシンク
    自宅のエアコンのない室内温度を計るために動かしている Raspberry-Pi […]
  • 母の肩の脱臼
    このコンテンツはアクセスが制限されています。閲覧するには以下にパスワードを入力してください。 […]

アーカイブ

カテゴリー

あづぃ…

エアコンのない室内、max37℃….

脳みそ、熔ける…

muninの測定をnagios4で活用するには

switchbot の温湿度計を munin で読み取るための python スクリプトを活用していたけど、特定閾値を超えた際の処理は nagios4 の方が便利。munin の警告だと閾値を越えている間は何度も警告メールが飛んでくる。nagios であれば、こういった処理がうまい。

かといって、swichbot の python アプリを nagios の check_*** に書き換えてみたが、bluetooth のアクセス権限などの設定が煩雑だしうまくいかなかった。

でも、munin は、ネットワーク経由の監視の機能があるので、それを使うこととした。munin のリモート接続のポート番号4949に接続して、list で測定できるものの一覧が取れて、fetch すれば 値を読み取ってくれる。

((( telnet でプロトコルを確認 )))
$ telnet localhost 4949
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
# munin node at localhost
list
df load processes switchbotmeterbt
.
fetch switchbotmeterbt
xxxxxxxxxxxx_Temperature.value 27.6
xxxxxxxxxxxx_Humidity.value 54
xxxxxxxxxxxx_Battery.value 87
xxxxxxxxxxxx_Discomfort.value 75.68896000000001
xxxxxxxxxxxx_WBGT.value 24.176256000000006
.
QUIT
Connection closed by foreign host.

((( 単純なので nc を使って読ませる )))
$ echo -e "fetch switchbotmeterbt\nQUIT\n" | nc localhost 4949
# munin node at localhost
xxxxxxxxxxxx_Temperature.value 27.7
xxxxxxxxxxxx_Humidity.value 54
xxxxxxxxxxxx_Battery.value 87
xxxxxxxxxxxx_Discomfort.value 75.82342
xxxxxxxxxxxx_WBGT.value 24.268412
.

ということで、ちょっとだけ手抜きで nc とか使って perl を使って読み取らせる処理を書いてみた。

#!/usr/bin/perl

use strict ;
use warnings ;

my $SWBT_METER = "/usr/bin/echo -e 'fetch switchbotmeterbt\nQUIT\n' | /usr/bin/nc localhost 4949" ;
my %value = () ; 
open( my $FH , "$SWBT_METER 2>/dev/null |" ) or die( "Can't open $SWBT_METER" ) ;
while ( my $line = <$FH> ) {
    if ( $line =~ /^[0-9a-f]+_([^.]+)\.value\s+([\.0-9]+)\s*$/ ) {
        $value{$1} = $2 ;
        $flag = 1 ;
    }
}
close( $FH ) ;

サーバのX11をWSLgに接続

ssh の ForwardX11 を使うのが簡単

((( サーバ側 /etc/ssh/sshd_config )))
X11Forwarding yes

((( wsl 側 /etc/ssh/ssh_config )))
ForwardX11 yes
((( wsl 側から )))
$ ssh -X ユーザ@サーバ

Debian/trixie 更新が頻繁

自宅サーバは、Debian/testing(trixie) で動かしているけど、この10日ほどは apt upgrade をかけると、大量の更新がかかる。しかもコアなパッケージに関連するのか、”aptitude safe-upgrade” だと未適用が若干残る。lib* がこぞって更新される。まぁ、Debian/testing なんてこれが普通ともいえるけど。”aptitude full-upgrade” だと、色々と動かなくなるソフトもでるから面倒なんだよなぁ…

xz-utils のバックドア問題

XZ形式の圧縮ファイル生成/解凍の xz-utils にバックドアが仕掛けられるというトラブルが報告されている。オープンソースで開発されているソフトで、誰かがソースコード中に悪意のあるコードを仕込んだらしい。このため、ソースでビルドされたパッケージにも影響する。xz-utils の 5.6.0, 5.6.1 が該当し、Debian でも testing / trixie などでインストールされる。

xz-utilsの確認とダウングレード Debian/trixie

確認すると、しっかりインストールされていた。

$ dpkg -l | grep xz-utils
ii  xz-utils  5.6.1+really5.4.5-1  amd64
      XZ-format compression utilities

さすがに怖いので、安全なバージョンが出るまでダウングレードだな。

$ sudo apt install xz-utils/stable
$ sudo aptitude hold xz-utils

Ubuntu 2.2 LTSは大丈夫

 dpkg -l | grep xz-utils
ii  xz-utils  5.2.5-2ubuntu1  amd64
      XZ-format compression utilities
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
:

具体的な情報を探すと vulnerableなxzがインストールされている状態で xz –version を実行するとバックドアが開いてしまうので実行するなという話だそう。という情報があるし、インストールされているとはいえ自分自身で活用していないので “xz –version” は実行していない。というか、この記事を遡ると Debian の 5.6.1+really5.4.5-1 は、5.4.5 に戻されていて大丈夫みたいだな。ということで改めて、apt install xz-utils で、5.6.1+really5.4.5-1 が入った。5.6.1 の様に見えるけど、実は 5.4.5 。

saslauthd のトラブル

saslauthdが起動しない

メールの送信機能が動いていない。色々と調べたら、”systemctl start saslauthd” を実行しても起動しない。

正確に言うなら、systemctl が終わらない。1,2分ほど待つとタイムアウトが発生して強制終了となっている。

# systemctl start saslauthd   # --- 1,2分で強制終了となる
# journalctl -xeu saslauthd   # journalctl で確認できるとのメッセージがあるので
The job identifier is 21448.
 3月 15 08:51:27 xxxx saslauthd[33874]:  : master pid is: 33874
 3月 15 08:51:27 xxxx saslauthd[33874]:  : listening on socket: /var/spool/postfix/var/run/saslauthd/mux
 3月 15 08:51:27 xxxx systemd[1]: saslauthd.service: Can't open PID file /run/saslauthd/saslauthd.pid (yet?) after start: No such file or directory
 3月 15 08:52:57 xxxx systemd[1]: saslauthd.service: start operation timed out. Terminating.
 3月 15 08:52:57 xxxx saslauthd[33874]:  : master exited: 33874
 3月 15 08:52:57 xxxx systemd[1]: saslauthd.service: Failed with result 'timeout'.
░░ Subject: Unit failed

postfix の smtp認証の設定の影響

色々調べると、こちらの記事を見つける。

postfix の中で、smtpd の起動はデフォルト(非chroot)では、/var/run/saslauthd の中にパイプなどを作る。しかし、postfix で SMTP認証を使えるように設定するための設定では、smtpd を chroot で起動するために、/etc/default/saslauthd の中の設定で、/var/spool/postfix/var/run/saslauthd を使うように指定しないといけない。

((( /etc/default/saslauthd )))
# See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information.
# See the saslauthd man page and the output of 'saslauthd -h' for general
# information about these options.
#
# Example for chroot Postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Example for non-chroot Postfix users: "-c -m /var/run/saslauthd"
#
# To know if your Postfix is running chroot, check /etc/postfix/master.cf.
# If it has the line "smtp inet n - y - - smtpd" or "smtp inet n - - - - smtpd"
# then your Postfix is running in a chroot.
# If it has the line "smtp inet n - n - - smtpd" then your Postfix is NOT
# running in a chroot.
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

しかし、何らかの更新の中で 非chroot の /var/run/saslauthd を参照する設定となり、この中にパイプなどを作っても反応がないために、起動に失敗している様子。

ということで、元記事に書いてあるように、/var/spool/postfix/var/run/saslauthd を使わせるために、シンボリックリンクを設置する。saslauthd パッケージの更新で chroot 起動の判定が不十分なのではないかな。

# rm -rf /var/run/saslauthd
# ln -sf /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
# systemctl start saslauthd

(追記) 次は Permission denied

無事に saslauthd は起動するようになったけど、次はパスワード認証が受け付けない。LOG を確認すると下記のエラーがでるようになった。

2024-03-15T11:59:10.543324+09:00 xxxxx postfix/smtpd[46317]: warning: xxxxxx[xxx.xxx.xx.xx]: SASL PLAIN authentication failed: generic failure, sasl_username=xxxx@xxxx.xxx
2024-03-15T11:59:10.560548+09:00 xxxxx postfix/smtpd[46317]: warning: SASL authentication failure: cannot connect to saslauthd server: Permission denied

これまた、調べてみたけど /var/spool/postfix/var/run/saslauthd 配下のファイルのパーミッションが原因っぽい。
配下のファイルに、下記の制限を設定して無事にメールが出せるようになった。

# chmod -R +x /var/spool/postfix/var/run/saslauthd/

muninで計測した値を参照する方法

muninで測定している値を、nagios でチェックするプラグインを作ったり、homebridge で参照する方法。

(( 最後の5分の LAST 値を参照 ))
$ rrdtool fetch 測定対象-g.rrd LAST -s -5min -e now
                            42

1707829800: 1.5195333333e+01
1707830100: -nan

職場からの接続をFWの拒否リストに入れてた…

職場のWordPressの多要素認証対策で、自宅サーバにワンタイムパスワードを送っているんだけど、職場で自宅サーバに imap 接続ができなくなっていた。

症状としては、Thunderbird で自宅サーバ宛のメールが読めなくなった。色々と確認する中で、”telnet-ssl -z ssl 自宅サーバ imaps” を試すと、接続ができない。自宅だと問題なし。色々と疑ってかかったら、結論は、自宅サーバの FireWall に、職場からのアクセス拒否のルールが加えられていた。

んで、このアクセス拒否ルールが加えられた原因は、職場からのメールで “Sender address rejected: Domain not found” の log が残るから。

自宅サーバでは、”Sender address rejected” の警告が続くとメール系の接続拒否リストに登録する処理が書いてある。

ということで、/etc/postfix/sender_restrictions で MX レコードの引けないメールサーバの受入れ設定を記述する。また、接続拒否リストの生成スクリプトで、職場のアドレスを登録しないように修正する。

番組表機能

eremoteを使ったWeb経由のリモコン操作機能を番組表と連動させた最終形。

番組タイトルをクリックすると、チャンネルを合わせることができるし、よく見るチャンネルなどを上位にしたり、だれも見ない中韓番組、スポーツ番組は表示させないようにしてある。

CCS811空気品質センサーに温湿度補正の実行

CCS811を使った空気品質センサーを使っているけど、夜になると次第に異常な値になっていく。

原因はよく掴めないままだけど、CCS811の機能の中に温湿度で補正をかける処理がある。補正といってもちょっとした程度かと思っているけど、時間経過とともに大きく変化していることから、1時間おきに温湿度補正をかけるようにプログラムを追加してみた。

色々と処理を触ってみるけど、時間が経つと大きな値が取れる状態になってしまう。倍率みたいな設定項目あるのかな…

Google 検索

My Google   Yahoo

Microsoft

ファンサイト