
|
[バックナンバーのトップへ] [Linux システム管理のトップへ] いますぐ実践! Linux システム管理 / Vol.082 / 読者数:947名こんばんは、うすだです。 わたしは、毎年、このくらいの時期から、静電気に悩まされます。
ドアとか金属なものはありがちだと思いますが、会社にいますと、金属に限らず、
硬いものに触ると、必ずと言っていいほどビリッときます。 静電気防止のわっかみたいなものを腕につけていても、 まったくと言っていいほど効果がありません。 魔よけがほんものの悪魔には効かないようなものでしょうか。 ですので、ものを触ろうとするたびに、スリッパを脱いで足を接地して、 万が一ビリッときても仕方ないという覚悟ができてから、触れます。
そういえば、ネバーエンディングストーリーで、ふりむいてはいけない、
ふりむくと固められてしまう、みたいな門がありましたよね。 …頭の中がやや混乱していますが、今年も、どきどきしながら、 冬の会社を満喫したいと思います。 静電気のことはとりあえず忘れて、今週も、はりきってまいります! 今週のお題 - USBポートを監視する
サーバはみんなのものですので、むちゃな使い方をすると、
みんなの迷惑になります。
しかしながら、リソースがあれば使いたくなる、データがあると中を見てみたくなる、
というのが、人間というものではないでしょうか。
…ああ、持っていきかたが強引ですが、なにはともあれ、システム管理者たるもの、
得られる情報は限りなく収集し、迅速に対処すべきです。 大風呂敷を広げきったところで、今週は、USBポートを監視する方法を、 ご紹介したいと思います。 最初に種明かしをしてしまいますと、実は、 USB機器の抜き差しを知らせてくれる仕組みが、Linux カーネルにはあります。
Linux カーネルは、USB機器を新たに見つけたり、USB機器が抜きとられたとき、
/proc/sys/kernel/hotplug に登録されたコマンドを実行してくれるようになっています。 % cat /proc/sys/kernel/hotplug /sbin/hotplug.murasaki ちなみに、sysctl コマンドでも確認できます。 % sysctl kernel.hotplug kernel.hotplug = /sbin/hotplug.murasaki さらにちなみに、手元の Fedora Core 5 では、以下のように、 何も登録されていませんでした。 % sysctl kernel.hotplug kernel.hotplug = ということで、USB機器の抜き差しを知るには、 登録されている hotplug になにかを仕込めば、実現できそうに思われます。
とはいえ、もともとの hotplug に細工をするのは気が引けます。
#!/bin/sh
ORG_HOTPLUG="/sbin/hotplug.murasaki"
if [ "z$1" = "zusb" ]; then
/usr/bin/printenv | /usr/bin/Mail -s "usb: $ACTION" root
fi
[ -x "$ORG_HOTPLUG" ] && $ORG_HOTPLUG $*
$ORG_HOTPLUG には、
/proc/sys/kernel/hotplug に登録されているパスを指定してください。
(つまり、上記の場合は、VineLinux 用です。)
これを、例えば /usr/local/sbin/hotplug.test というファイル名で保存し、
実行可能な状態にしておきます。 # sysctl -w kernel.hotplug=/usr/local/sbin/hotplug.test kernel.hotplug = /usr/local/sbin/hotplug.test 上記は sysctl コマンドで行っていますが、 下記のように proc_fs 経由でも登録できます。 # echo /usr/local/sbin/hotplug.test > /proc/sys/kernel/hotplug
登録したら、実際に USB機器を挿してみてください。 Subject: usb: add PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add INTERFACE=8/6/80 PRODUCT=781/5150/10 TYPE=0/0/0 ...後略... Linux カーネルが用意してくれた環境変数は、主に以下があります。
詳細は割愛しますが、挿抜は $ACTION で知ることができ、 USB機器の種類は $TYPE や $INTERFACE, $PRODUCT で判別できます。
ただ、Fedora Core 5 では、hotplug がなぜか2回呼ばれました。
#!/bin/sh
ORG_HOTPLUG="/sbin/hotplug.murasaki"
if [ "z$1" = "zusb" -a -n "$TYPE" ]; then
/usr/bin/printenv | /usr/bin/Mail -s "usb: $ACTION" root
fi
[ -x "$ORG_HOTPLUG" ] && $ORG_HOTPLUG $*
以上、USBポートを監視する方法について、ご紹介しました。
まとめますと、Linux カーネルは、USB機器の挿抜に気づいたら、
usb という文字列を引数に hotplug を実行します。 ということでしたが、やや中途半端感が漂っているように思いますので、 来週は、そのどんよりとした空気を払拭したいと思います。 あ、それから、上記を試したあとは、hotplug をもとに戻すことを、 忘れないようにしてくださいませ。(そのままでいいかたは、そのままで…。) 宿題の答え先週の宿題は、 DHCP サーバは、リレーエージェント経由でアドレスを割り当てるとき、 クライアントのいるサブネットの情報を、どこから得るのでしょうか? でした。 まずは、tcpdump でパケットをキャプチャしてみましょう。
以下のような環境を用意し、DHCPクライアントから、
DHCP でアドレスを要求させたときのパケットを、tcpdump で入手しました。
192.168.1.1 192.168.1.254 192.168.2.254
[DHCPサーバ] --------+---------- [リレーエージェント] --------+-
| |
192.168.1.0/24 192.168.2.0/24
リレーエージェントが中継した DHCPDISCOVER なパケットは、以下の通りです。 (MACアドレスとチェックサムなどは、xx で隠蔽しました。)
# tcpdump -n -x port bootps
...中略...
22:15:08.325219 IP 192.168.1.254.bootps > 192.168.1.1.bootps: \
BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length: 548
0x0000: 4500 0240 0000 4000 4011 xxxx c0a8 01fe
0x0010: c0a8 0101 0043 0043 xxxx xxxx 0101 0601
0x0020: 2344 b409 0000 0000 0000 0000 0000 0000
0x0030: 0000 0000 c0a8 02fe xxxx xxxx xxxx 0000
0x0040: ...以降 0 が続く...
tcpdump を -x オプションつきで実行していますので、0x0000: 以降に、 IPパケットの中身が16進数でダンプされています。
0x001c 以降が DHCP の部分で、さらにその後の 0x0034 にある c0a8 02fe の箇所が、
giaddr というフィールドです。ここには、
リレーエージェントのIPアドレスを格納する、という決まりがあります。
はいそうです、これは、リレーエージェントの、
DHCPクライアントのいる側のサブネットのアドレスですね。
念のため、dhcpd のソースコードを眺めてみました。
server/dhcp.c の dhcp() という関数で、受信したパケットの処理を行いますが、
その前にまず、locate_network() を用いて、
DHCPクライアントが属するサブネットを求めています。
というわけで、やはり、giaddr をもとにしているようですね。 今週の宿題今週の宿題は、 USB機器の挿抜を、ビジュアルに通知するようにしてください。 です。 xmessage という、指定したメッセージをウィンドウで出力するコマンドがあります。 これを使って、同様のメッセージを、ウィンドウで出力してみてください。 (他にもっといいものがあれば、それを使ってください。) ただ、サーバのディスプレイにウィンドウを出しても、 あまり意味がないように思います。 余力があるなら、普段みなさんがご使用のマシン上に、 ウィンドウが出るようにしてみてください。 あとがき仕事上、仕方なく Windows マシンを使っておりますが、 なるべくマウスに触らないようにするため、極力、 コマンド・プロンプト上で作業を行うようにしています。
そのコマンド・プロンプトですが、みなさんご存知の通り、
bash や tcsh などに慣れた身には、やや受け入れ難い使用感です。
しかし、そんな辛い日々とももうおさらばです(?)。
Windows Server 2003 Service Pack 1 および Windows XP Service Pack 2 用の Windows PowerShell 1.0 ローカライズ版インストール パッケージ
早速、試してみました。
PS C:\> Set-Location HKLM:
PS HKLM:\> cd SOFTWARE\Mozilla\Mozilla Firefox 2.0
PS HKLM:\SOFTWARE\Mozilla\Mozilla Firefox 2.0> dir
Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\
SOFTWARE\Mozilla\Mozilla Firefox 2.0
SKC VC Name Property
--- -- ---- --------
0 1 bin {PathToExe}
0 2 extensions {Components, Plugins}
PS HKLM:\SOFTWARE\Mozilla\Mozilla Firefox 2.0> Get-ItemProperty bin
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\
SOFTWARE\Mozilla\Mozilla Firefox 2.0\bin
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\
SOFTWARE\Mozilla\Mozilla Firefox 2.0
PSChildName : bin
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
PathToExe : C:\Program Files\Mozilla Firefox\firefox.exe
独特の雰囲気があって、慣れるまでにちょっと時間がかかりそうですが、
いじくっていると頭の体操になりそうで、いろいろと楽しめそうです。
今週も、ここまで読んでいただき、ありがとうございました。
「いますぐ実践! Linux システム管理」の解除は、以下からできます。
バックナンバーは、こちらにほぼ全部そろっています。
「栗日記」 |
▼ トップ ▼ プロフィール ▼ リンク
▼ 作ってみました
▼ せんでん
▼ 最近読んだ本 [X]
「センネン画報」 今日 マチ子「粟津潔 デザインする言葉」 粟津潔 「Binary Hacks」 高林 哲,鵜飼 文敏,佐藤 祐介,浜地 慎一郎,首藤 一幸 「Make: Volume01」 オライリー・ジャパン 「セーラが町にやってきた」 清野 由実 「手紙屋」 喜多川 泰 「Linuxカーネル2.6解読室」 高橋 浩和,小田 逸郎,山幡 為佐久 「人蕩し術」 無能 唱元 「子育てハッピーアドバイス2」 明橋 大二, 太田 知子 「ラッセル幸福論」 B. Russell 「それでも人生にイエスと言う」 Viktor Emil Frankl 「子育てハッピーアドバイス」 明橋 大二, 太田 知子 「考具」 加藤 昌治 「北欧デザイン<3>」 渡部 千春 「北斎の謎を解く」 諏訪 春雄 「体感美術館」 平野 暁臣 「チベット永遠の書」 Theodore Illion 「リナックスの革命」 Pekka Himanen 「人月の神話」 Frederick Phillips,Jr. Brooks 「ヤバい経済学」 Steven D. Levitt, Stephen J. Dubner 「小布施ッション<2001-2002>」 セーラ・マリ カミングス 「アンパンマン伝説」 やなせ たかし 「夢をかなえるゾウ」 水野 敬也 「ゲーム開発者のためのAI入門」 David M. Bourg, Glenn Seemann 「北欧デザイン<2>」 渡部 千春 「北欧デザイン<1>」 渡部 千春 「ヒューマン2.0」 渡辺 千賀 「中国・ロシア同盟がアメリカを滅ぼす日」 北野 幸伯 「超ロング・セラー 絶滅寸前商品」 湯浅 豊彦 「The BUG(ザ・バグ)」 すずき ひろのぶ,かとう みつあき 「デザインのデザイン」 原 研哉 「マキアヴェッリ語録」 塩野 七生 「ハンバーガーを待つ3分間の値段」 斎藤 由多加 「星の旅人-スペイン「奥の細道」-」 黛 まどか 「食品の裏側」 安部 司 「On Lisp」 Paul Graham 「ぼくが医者をやめた理由 つづき」 永井 明 「あなたならどうする?」 Jack Nikolaschka 「セキュアプログラミング−失敗から学ぶ設計・実装・運用・管理」 Mark G. Graff, Kenneth R. van Wyk 「「左利き」は天才?−利き手をめぐる脳と進化の謎」 David Wolman 「自分の中に毒を持て」 岡本 太郎 「アトピーの薬を減らす本」 田中 貴子 「岡本太郎「明日の神話」修復960日間の記録」 吉村 絵美留 「X51.ORG THE ODYSSEY」 佐藤 健寿 「アレルギーっ子の暮らし応援BOOK」 佐藤 のり子 「沖縄文化論」 岡本 太郎 「「伝説の社員」になれ!」 土井 英司 「コンピュータの構成と設計(上)」 Patterson & Hennessy 「カラスのジョンソン」 明川 哲也 「ドリルを売るには穴を売れ」 佐藤 義典 「頭がよくなる照明術」 結城 未来 「クロフォードのインタラクティブデザイン論」 Chris Crawford 「いじめの根を絶ち子どもを守るガイド」 Barbara Coloroso 「非常識のすすめ―逆発想の仏教論」 ひろさちや 「Linuxアドバンストネットワーク構築ガイド - HAサーバ構築編」 デージーネット 「イノベーションの達人!」 Tom Kelly, Jonathan Littman 「クリエーター50人が語る創造の原点」 小原 啓渡 「欺術 - 史上最強のハッカーが明かす禁断の技法」 Kevin Mitnick 「楽しい気象観察図鑑」 武田 康男 「入門 Ajax」 高橋 登史朗 「リリカルな自画像」 岡本 太郎 「やぎの目ゴールデンベスト」 林 雄司 「初めてのPython 第2版」 Mark Lutz,David Ascher 「鼻兎」 小林 賢太郎 「なぜ、これがアートなの?」 Amelia Arenas 「芸術起業論」 村上 隆 「まほう色の瞳」 Enrique Barrios 「ラーメンズつくるひとデコ」 ラーメンズ 「R25 つきぬけた男たち」 R25編集部 「美の呪力」 岡本 太郎 「しろのあお」 上大岡 トメ 「ザ・ゴール」 Eliyahu M. Goldratt 「ハッカーと画家」 Paul Graham 「岡本太郎に乾杯」 岡本 敏子 「Fedore Core Expert」 Software Design 「誰も知らない男」 ブルース・バートン 「子どもが育つ魔法の言葉」 ドロシー・ロー・ノルト 「国家の罠」 佐藤 優 「夜回り先生」 水谷 修 「やぎの目絵日記」 林 雄司 「7つの習慣」 スティーブン・R. コヴィー 「まろ、ん?−大掴源氏物語」 小泉 吉宏 「ザ・サーチ グーグルが世界を変えた」 ジョン・バッテル 「ポストモダン・マーケティング」 スティーブン ブラウン 「機動戦士ガンダムさん」 大和田 秀樹 「小エロのひみつ - Webやぎの目研究発表」 林 雄司 「これ、誰がデザインしたの?」 渡部千春 「60分間・企業ダントツ化プロジェクト」 神田 昌典 「ガルシアへの手紙」 エルバート ハバード 「人生は素晴らしいものだ」 オグ・マンディーノ 「ザ・マインドマップ」 トニー・ブザン,バリー・ブザン 「ワインバーグのシステム思考法」 G.M.ワインバーグ 「渋谷ではたらく社長の告白」 藤田 晋 「渋井真帆の日経新聞読みこなし隊」 渋井 真帆 「コラム息切れ」 小野 法師丸 「早朝起業」 松山 真之介 「変な人が書いた驚くほどツイてる話」 斎藤 一人 「35歳から仕事で大切にしたいこと」 村井 勉 「金融広告を読め」 吉本 佳生 「発想する会社!」 トム・ケリー,ジョナサン・リットマン 「エハイク」 吉田 戦車 「人生の旋律」 神田 昌典 「仕事の思想」 田坂 広志 「CPUの創りかた」 渡波 郁 「非常識な成功法則」 神田 昌典 …これ以前は記録してません…
▼ 気に入ってる本
| ||||||||||||||||||||||||||||||||||||||||||||||||||