めざましじゃんけんの時間が変わるらしい
朝のめざましテレビ、見ていたら「めざましじゃんけん」の時間が変わるって アナウンス。ふと、学習リモコン送信機 Tira があるのを思い出し、 サーバ上でプログラム。
来週からは、6:58,7:30,7:58になるらしい。であれば、スクリプトをこれに合わせて起動しよう。
(( /etc/cron.d/tira-tv-meza )) 58 6 * * 1,2,3,4,5 user [ -x /path/tira-tv-meza.sh ] && /path/tira-tv-meza.sh 30 7 * * 1,2,3,4,5 user [ -x /path/tira-tv-meza.sh ] && /path/tira-tv-meza.sh 58 7 * * 1,2,3,4,5 user [ -x /path/tira-tv-meza.sh ] && /path/tira-tv-meza.sh
bashだと$RANDOMなんて便利な変数があるんだ….
(( /path/tira-tv-meza.sh )) #!/bin/bash TIRA2="/usr/local/bin/Tira-2.py" DEVICE="--remote=regza" SG="/usr/bin/sg" GROUP="dialout" if [ -x $TIRA2 ]; then $SG $GROUP -c "$TIRA2 $DEVICE --transmit=8,8" > /dev/null 2>&1 sleep 10 RAND=$(( RANDOM%3 )) case $RAND in 0 ) $SG $GROUP -c "$TIRA2 $DEVICE --transmit=blue,blue" > /dev/null 2>&1 ;; 1 ) $SG $GROUP -c "$TIRA2 $DEVICE --transmit=green,green" > /dev/null 2>&1 ;; 2 ) $SG $GROUP -c "$TIRA2 $DEVICE --transmit=red,red" > /dev/null 2>&1 ;; esac fi
Tira2で、レコーダ,チューナの電源OFF
muninで arp の出力を観測し、自宅内で動いているネットワーク機器の観測をしているけど、 よく電源をつけっぱなしにしてしまうレコーダ都チューナ。 ちょっとだけ節電させようと、Tira2を活用してみた。
以前Tira2を制御させていた時のソースが見つからないので、改めてTira2で検索したら、 Pythonで書かれた Tira-2.py を見つける。 設定のデフォルトを以下のように書き換え。
# リモコン学習情報の保存先 configs="/usr/local/etc/tira" # Tira2のデバイス名。実体は/dev/ttyUSB1だが他のUSBと誤認をしないように port="/dev/serial/by-id/usb-Home_Electronics_Tira-2_HE000001-if00-port0"
んで、ping の返答があるようなら、デバイスが生きているので、 "Tira-2.py –remote=デバイス –capture"で保存しておいた、電源ON/OFFのリモコン信号を送出。 仕上げで crontab を使い、夜中の2時に電源を切らせる。
#!/bin/bash TIRA2="/usr/local/bin/Tira-2.py" PING="/bin/ping" # AV機器の電源が入っていたら、電源を切る for device in vardia catvstb ; do if $PING -q -c 1 $device >/dev/null 2>&1 ; then $TIRA2 --remote=$device --transmit=power > /dev/null 2>&1 sleep 1 fi done
Xmingで ssh + X forward
XmingのXサーバをインストールしていたけど、接続がうまくいってなかった。
PuTTYのplink.exeをインストールして、以下のコマンドでようやく成功。
plink -X -C -ssh userid@hostname X-command
穴探しだそうな…
子供用に時間制限付きのhttp,httpsのコンテンツフィルタを動かしているが、子供なりにいろいろ制限の詰めの甘さを突いた使い方を模索している。
時間切れになってもwiiゲームをしていたが、httpベースのフィルタなので、ゲームログイン時のhttpさえ通れば、http以外のプロトコルを使うゲーム本体は遊べるらしい。だから、ゲームをログアウトさせずに立ち上げっぱなしがテクらしい。
まだ、proxyを外すという基本的な技の発見には至っていない。(^_^)
wifiルータのパケットフィルタをサーバからon/offする技を探すか…(^_^)
自宅内のIPアドレス割り付けの見直し
自宅のネットワークは、Debian なサーバでMACアドレスを 管理して、固定IPを割り当てている。 その反面、dhcpd.conf の fixed-address の管理と、 それに合わせて 自宅内のDNSサーバの設定など、 面倒な管理もしていた。
このおかげで、子どもの端末のネットワーク利用状況の モニタリングやフィルタリングが実現できていた。 一方で、煩雑な管理から、使わなくなった古いネットワーク 機器のIPアドレスやらが、設定ファイルに残っていた。
今回、GWの暇つぶしということで、対応表から テンプレート的に設定ファイルを生成させるスクリプトを 書いてみた。んで、これに合わせてアドレスを整理してみた。
でも、整理が終わっても、30台近くのネットワーク機器があるのって、 異常だよな…(^_^;
httpsがフィルタ通ってなかった
我が家のネットワークでは、 お兄ちゃんが今年受験生になるし、夜中にフィルタで接続を切っている…つもりだったが、23:00過ぎにアクセスがある。
squidでコンテンツフィルタの設定
squidから呼び出しているコンテンツフィルタじゃなく、 acl…time の設定で切ろうかと思いつつ squid.conf を見ていたら、SSL_port がフィルタを通っていない。
最近は、youtube や google は、https 使っているし、 筒抜けじゃん。
(( /etc/squid/squid.conf )) #url_rewrite_access deny SSL_ports (コメントアウト) url_rewrite_access deny localhost url_rewrite_access deny !proxy_filter url_rewrite_access allow all url_rewrite_program /var/www-support/filter/redirector.pl
4/25朝…
パパ:23:00~動画を見た気配あるんだけど、なぜかなぁ?
兄:息抜きで見始めたら思わず….
パパ:昨日・今日と、実力診断テストだよね…
redirector側のhttps対処
前述の設定で、https の問い合わせが、redirector側のプログラムに 渡されるようになった。しかし、httpsの場合には、redirectorに渡るデータの 書式は、以下のようになる。
ホスト名:ポート番号 端末IP IDENT CONNECT
このため、少しプログラムを修正。
4/26:この変更を加えたら、アクセス禁止時間帯でも、 https通信ばかりを使っていたゲームは動いていたのに、 動かなくなったた。おかげで、子どもがすねている。
EP-706Aへのプリンタ更新
自宅のプリンタ EP-801A が、「廃インク吸収パッドが限界に達した」との エラーがでて、前回はパッドの交換を行ったけど、2度目だし色々と 新しい便利な機種もでているし、プリンタの更新とした。
ホコリの混入が嫌なので、フロント給紙・廃紙タイプで、無線印刷機能付きの 安い機種ということで、同じEPSONのEP-706Aを購入。
まずは、Windowsパソコンで、ドライバインストールやネットワークの設定などで、基本機能が 使えることを確認し、せっかくの無線印刷機能ということで、iOSのAirPrintや、 Google クラウドプリントなどを設定。 たしかに便利ではあるけれど、携帯で撮影した写真をプリンタに送るのは(実は手ブレしてた…とかで)、 ちょっと躊躇すると思う。
最後に、Linux のサーバから印刷ができるのかと、調べると Linux用のドライバも公開されている…。 プリンタ名を指定して、amd64 の *.deb パッケージをダウンロードしてインストール。 後は、プリンタの設定でネットワークのIPP経由で設定したら、簡単に設定できた。 最近は、Linuxの印刷設定って、楽だなぁ…
replaced vertical whitespace in Subject header with space
自作のScriptを動かしていたら、
replaced vertical whitespace in Subject header with space; this will become fatal in a future version at XXXX.pl line XXX.
なんて警告メッセージが表示される。色々調べてみると原因は、 Email::MIME パッケージ。
メールは、古臭い時代の名残りもあって、メールヘッダ1行は、 「最悪でも1000文字程度(出展?)で、普通は 78 文字より長くは しないほうがいい」という規定。
使っているメールの文字は、40文字程度だけれども、Subject部は、 MIMEエンコードされるから、簡単に長くなる。
検証コードと結果
#!/usr/bin/perl use Email::MIME ; use Jcode ; print Email::MIME->create( header => [ From => 'foo@bar.com' , To => 'baz@bar.com' , Subject => Jcode->new( "...(たっぷり)...")->mime_encode , ] , attributes => { content_type => 'text/html' , charset => 'ISO-2022-JP' , encoding => '7bit' , } , body => "あいうえおabcde" )->as_string ;
これを動かすと、
replaced vertical whitespace in Subject header with space; this will become fatal in a future version at zz.pl line 5. From: foo@bar.com To: baz@bar.com Subject: =?ISO-2022-JP?B?...?= =?ISO-2022-JP?B?...?= Date: Sun, 2 Mar 2014 22:42:40 +0900 MIME-Version: 1.0 Content-Type: text/html; charset="ISO-2022-JP" Content-Transfer-Encoding: 7bit あ...de
といった結果となる。 本来なら、MIME-Encode された長い行は、vertical whitespace(\n)で 折り返される。しかし、space に置き換えられて、 きわめて長い1行となっている。
実際、Email::MIME には
改めて、Email::MIME には、以下のように書いてある。
Revision history for Perl extension Email::Simple 2.203 2014-02-14 21:56:14-05:00 America/New_York - translate vertical whitespace in headers into horizontal whitespace, with a warning
今まで警告メッセージが表示されていなかったのは、2/14更新だからか…
いいのか?
ということで、改行を空白に置き換えてもいいのかなぁ…メールは正しく送られてはいるんだけど…
postfix の場合は….
line_length_limit (デフォルト: 2048 bytes) …
header_size_limit (デフォルト: 102400 bytes) ….
たしかに、今時のMTAは、そんなの正しく処理するようには思うけど…
ちなみに、 line-feed を vertical whitespace と呼ぶこともあるということを、初めて知った…
保留2個って何?
うーむ、Debian のパッケージで、以前から保留2個って 出るんだけど、"dpkg –get-selections | grep hold" しても 特に何も出てこないし、full-upgrade しても何も出ないし… いったい何がひっかかってるんだろ…
# aptitude -s full-upgrade インストール・削除・更新されるパッケージがありません。 更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。 0 バイトのアーカイブを取得する必要があります。 展開後に 0 バイトのディスク領域 が新たに消費されます。
nagios3でDHCPのチェック
WZR-450HPのファームのバグ?で、止まっているはずのDHCPが動いていて、 予想外のIPアドレスが使われていて、侵入されたのかと心配したことから、 DHCPがlocalhostで動いていることと、他に動いていないことを確認するように nagios3を設定してみた。
ただし、dhcp動作確認のcheck_dhcpは、rootじゃないと動かないので、 sudoで動くようにしておき、動いていないのが正常なので、negate pluginで反転させる。
(( /etc/sudoers )) Cmd_Alias DHCPCHECK = /usr/lib/nagios/plugins/check_dhcp nagios ALL= NOPASSWD: DHCPCHECK (( /etc/nagios-plugins/config/local.cfg )) define command{ command_name check-no-dhcp command_line /usr/lib/nagios/plugins/negate /usr/bin/sudo -u root /usr/lib/nagios/plugins/check_dhcp -s 255.255.255.255 -t 1 } define command{ command_name check-local-dhcp command_line /usr/lib/nagios/plugins/check_procs -C 'dhcpd' -c 1: } (( /etc/nagios3/conf.d/localhost_nagios2.cfg )) define service{ use generic-service host_name localhost service_description DHCP-other check_command check-no-dhcp } define service{ use generic-service host_name localhost service_description DHCP-local check_command check-local-dhcp }