いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.173 / 読者数:1460名

こんばんは、うすだです。

以前使っていた Thinkpad を、なんやかんやで子どもに譲りました。

ただ、諸般の事情により Linux のままで、 わたしもなにかと使う必要がありましたので、わたしの机に置いてもらっていました。

ですが、やはり使い勝手がよろしくないのでしょう。先日、 子ども部屋に置かせてほしいと言われまして、まあそれもよかろうと思い、 子ども部屋に置いてみました。

すると、いままで申し訳程度にしか使っていなかったのに、 PCを使う時間が急増してしまっておるようです。

といっても、エッチなサイトを閲覧したり、 法に触れるようなことをしているというわけではなく、 ただ単にポケモンやゲームなどのサイトを見ているだけなので、 今のところは静観しています。

ただ、使いすぎは目によくないので、 使用時間くらいは確認できるようにする必要があるかな、という気はしています。
そのために、 起動時とシャットダウン時にメールを送信するという細工を瞬時に思いついたのですが、 プライバシー的に問題かもしれないなという気がして、 導入に踏みきれないまま、現在に至っています。

煮えきらない話が終わりましたので、今回も、はりきってまいります!

今回のお題 - NetworkManager を活用する

最近のディストリビューションは非常にフレンドリーで、 ほとんどの設定はほぼ自動的に行ってくださいますし、 USBメモリなどを差すとどうするのか聞いてくださいますし、 至れり尽くせりな感じがします。

ネットワークに関しても、今どきは、あらかじめいくつかの設定を作っておくと、 その設定をGUIで選択するだけで切り替わってくださいます。
以前は、設定を切り替えるための自作のスクリプトを、 環境が変わるたびにその都度実行していました。
そんな面倒なことをしなくてもよいなんて、便利な世の中になったなあ、 と思います。

さて、そのネットワークの切り替えを簡単にしてくださっているひとが、 NetworkManager さんです。
(URLを見ていま気づいたのですが、GNOMEのプロジェクトなんですね…。)

NetworkManager - Linux Networking made Easy
http://projects.gnome.org/NetworkManager/

当初は、/etc/network/interfaces に直接設定を書いても有効にならないとか、 /etc/resolv.conf を書き換えられたりとかしましたので、 プチっと切れて network-manager パッケージを消してしまっていました。
(↑ちなみに、Debian系の場合の話です。)

ですが、持ち運んであちこちで使う場合には、マウスでぴっと選ぶだけでよいのは、 非常に便利です。ということに(いまさら過ぎますが)気づき、 NetworkManager をなるべく活用しようと思った次第です。

というわけで、前置きが長くなりましたが、今回は、 NetworkManager をそれなりに活用したいと思います。

なにはともあれ設定

そういうわけですので、みなさんは GNOME をご使用で、 NetWorkManager がすでにインストール済という前提で、話を進めさせていただきます。

さて、まずは設定が必要ですよね。恐れずにやってみましょう。

GNOMEデスクトップの右上に、「通知スペース」という名の、 アイコンがずらりと並んでいる箇所があります。その中に、 コンピュータかもしくはネットワークの絵のアイコンがあると思います。 それが「NetworkManagerアプレット」です。
このアイコンを右クリックしてメニューを出し、 「接続の編集(英語だと Edit Connections...)」を選びますと、設定が行えます。
(もしわからなければ、手当たり次第に右クリックしてください。)

あるいは、メニューから、「システム」→「設定」→ 「ネットワーク接続(Network Connections)」を選択しても同様です。

上のタブには、有線(Wired)や無線(Wireless)、 モバイルブロードバンド(Mobile Broadband)などが並んでいます。 それぞれの設定が可能ですが、今回は「有線」に絞ってみたいと思います。
(他は説明できない、という真の理由には触れないでくださいませ。)

では、有線(Wired)タブを選択している状態で、以下を行いましょう。

  1. 「追加」ボタンを押します。
  2. 接続名(Connection name)には、他とかち合わない名前をつけます。
  3. MACアドレス(MAC address)には、 対象となるインターフェースの MACアドレスを入力します。たとえば eth0 なら、 以下のように ifconfig コマンドを実行すればわかります。
      $ /sbin/ifconfig eth0
      eth0    Link encap:Ethernet  HWaddr 00:01:02:03:04:05
      ...後略...
    
    HWaddrの後の部分(上記だと 00:01:02:03:04:05)がMACアドレスです。
    (↑HWaddr は ハードウェアアドレス と表示されるかもしれません。)
  4. IPv4設定(IPv4 Settings)タブを選択します。
    メソッド(Method)で自動(DHCP)か手動(Manual)を選び、手動の場合は、 IPアドレスやネットマスク、ゲートウェイなどを入力します。
    (でたらめな設定を入力してもよいですし、 心配な貴兄は既存の設定とまったく同じ設定にしてもらってもよいです。)
  5. この設定をデフォルトにしたい(起動時に自動設定してほしい)なら、 「自動的に接続する(Connect automatically)」をチェックします。
    (…が、今はお試しなので、チェックしないほうがいいと思います。)
  6. 自分だけでなくみんなでこの設定を分かち合いたい場合は、 「全てのユーザで有効(Available to all users)」をチェックします。
  7. 右下の「適用(Apply...)」ボタンを押すと、設定が保存されます。

あとは、NetworkManagerアプレットをクリックして、その設定を選択すると、 設定した内容が即座に反映されます。

 

ちなみに、設定された情報は、GConf を使って記録されるようです。
具体的には、 $HOME/.gconf/system/networking/connections/数字 以下に記録されますが、 直接見るよりも、gconftool-2 コマンドなどで確認するほうが、 正しいやり方だという気がします。

  $ gconftool-2 -R /system/networking/connections
   /system/networking/connections/1:
    /system/networking/connections/1/ipv4:
     addresses = [-754865984,24,-33445696]
     name = ipv4
     dns = [-33445696]
  ...中略...
    /system/networking/connections/2/connection:
     uuid = 4120f8da-2352-4592-a9d5-ddc4aff6d10a
     name = connection
     id = 接続名
     type = 802-3-ethernet
     autoconnect = false
  ...後略...

全てのユーザで有効(Available to all users)をチェックした場合には、 GConf ではなく、以下のファイルに記録されるようです。
(Ubuntu と Fedora 以外では確認していません。スミマセン。)

  • /etc/NetworkManager/system-connections/接続名 (Ubuntuの場合)
  • /etc/sysconfig/network-scripts/ifcfg-接続名 (Fedoraの場合)

設定を切り替えたときにアクション!

さて、設定を加える方法がわかりました。
でも、それだけではおもしろくありませんよね。
ですのでここでは、接続したり切断した時に、なにかを実行させてみたいと思います。

NetworkManager さんは、接続や切断などのアクションを起こした時に、 /etc/NetworkManager/dispatcher.d/ の下にあるスクリプトを順番に実行してくださいます。
スクリプトを実行する際には、2つの引数をつけてくれます。
第1引数はインターフェース名(eth0 などですね)、 第2引数は実行されるアクションです。アクションは、以下のいずれかになります。

  up       ... インターフェースを有効にした
  down     ...  インターフェースを無効にする
  hostname ... ホスト名を設定した

up は有効にした後、down は無効にする前に呼ばれます。
ですので、いずれの場合も、ネットワークが有効なときに実行される、 と思っておいてよいと思います。

 

概要がわかったところで、なにかスクリプトを置いて試してみましょう。
以下のような、実質なにもしないスクリプトを作成してみました。

  #!/bin/sh
  echo `date` : $* > /tmp/nm-log-$$
  /usr/bin/printenv >> /tmp/nm-log-$$

/tmp/nm-log-プロセスID というファイルを作成するだけのものです。
最初に、実行された日時と引数を出力します。
そして次に、printenv コマンドで環境変数を出力します。
…はい、それだけです。

このファイルを、たとえば /etc/NetworkManager/dispatcher.d/99nmtest というファイル名で保存して、rootだけが書ける実行ファイルにします。

  # chmod u+wx,go-w /etc/NetworkManager/dispatcher.d/99nmtest

そして、NetworkManagerアプレットをクリックして、別の設定を選択してみましょう。 すると /tmp/nm-log-* というファイルが2つ作成されます。

  $ ls -l /tmp/nm-log-*
  -rw-r--r-- 1 root root  46 2010-02-06 22:04 /tmp/nm-log-15822
  -rw-r--r-- 1 root root 209 2010-02-06 22:04 /tmp/nm-log-15935

1つ目は、切り替える前の設定を無効にするときに実行されたものです。
以下のように、第1引数が eth0、第2引数が down になっています。
また、環境変数には、PWD だけが設定されているようです。

  $ cat /tmp/nm-log-15822
  Sat Feb 6 22:04:10 JST 2010 : eth0 down
  PWD=/

2つ目は、切り替えて有効にした後に実行されたものです。
こちらは、第1引数が eth0、第2引数が up になっています。
そして、環境変数には、いろいろなものが設定されています。

  $ cat /tmp/nm-log-15935
  Sat Feb 6 22:04:10 JST 2010 : eth0 up
  CONNECTION_UUID=4120f8da-2352-4592-a9d5-ddc4aff6d10a
  IP4_NAMESERVERS=192.168.1.254
  IP4_NUM_ADDRESSES=1
  IP4_ROUTE_0=10.0.0.0/16 192.168.1.1
  IP4_ROUTE_1=10.1.0.0/16 192.168.1.2
  IP4_NUM_ROUTES=2
  IP4_ADDRESS_0=192.168.1.3/24 192.168.1.254
  PWD=/

IP4_NUM_ADDRESSES には、設定されたIPアドレスの個数が設定されます。
通常は1個だと思いますので、1 が設定されています。
IP4_ADDRESS_数値 には、IPアドレスおよび(/ の後に)プレフィックス長と、 ゲートウェイのIPアドレスが設定されます。
IP4_NAMESERVERS には、ネームサーバのIPアドレスが設定されます。
また、デフォルトゲートウェイ以外にスタティックな経路を設定した場合は、 IP4_NUM_ROUTES に設定した個数、IP4_ROUTE_数値 にそれぞれの経路が設定されます。

これらの情報を使えば、 なにか意味のある処理をさせることができそうな気がしますよね。
…ですが、具体的な使用例は、次回にご紹介したいと思います。

おわりに

以上、NetworkManager の設定方法と、 なにかアクションを起こしたときに実行されるスクリプトの概要を、ご紹介しました。

次回では、具体的な使用例などをご紹介しようと思いますので、 それまでに上記を試して動作を確認していただけますと幸いです。

あ、ちなみに、試した後は、スクリプトを消しておいてください。
でないと、/tmp にいっぱいファイルができてしまいますので…。

宿題の答え

前回の宿題は、

  root などのシステムアカウント宛のメールを転送してください。

でした。

答えは、ssmtp.conf に Root の項目を追加するだけ、でございます。

たとえば、admin@usupi.org に転送したい場合は、以下の1行を追加してください。

  Root=admin@usupi.org

送信する相手がユーザ名だけで、そのユーザの UID が 1000 より小さい場合に、 Root で指定したアドレスへ送信されます。

試しに、Mail コマンドでなにか送ってみましょう。

  $ Mail -s test root
  test.
  .
  EOT   (ここで EOT ではなく Cc: と出たらリターンキーを押します)

すると、admin@usupi.org 宛に、以下のメールが送られてきました。

  From: usu@usupi.org
  To: root
  Subject: test
  Date: Tue, 21 Jan 2010 01:27:59 +0900

  test.

UID < 1000 という条件の根拠がよくわかりませんが、 root 宛のメールの処理に困ることが多いですので、 深く気にせず設定しておいたほうがよいのではないかと思います。

今回の宿題

今回の宿題は、

  ネットワークを有功にしたときに、その旨をメールで通知しましょう。

です。

…ああ、またかよっていう宿題ですが…。

実は、冒頭で申し上げましたように、 子どもがどのくらい PC を利用しているか調べるときに、 使えるのではないかと思っております。

というわけですので、意外に実用的ではないかということで、 試してみていただけますと幸いです。
(SNMPトラップを吐かせるという方法もあると思いますが、 自宅にはSNMPマネージャさんがいませんので…。)

あとがき

結婚してからいまのマンションに定住するまでは、 3年くらい毎に引越しをしていました。

引っ越すたびに、いらないものを処分していました…いえ、 厳密には処分せざるをえませんでしたので、 これ以上ものは増やせられないという臨界点に達することなく、 転々とすることができました。

ですが、いまのところに引っ越してから7年経ち、 押入れなどからものが溢れるようになってきますと、 そろそろ能動的に減らさないとまずい、ということにイヤでも気づかされます。

ただ、やっぱり捨てるのはハードルが高いんですよね。
…と思っていましたら、以下の記事を発見しました。

モノが捨てられない人必見!「捨てる」を後押しする名言集
http://jp.blogs.com/2009/12/post-169.html

捨てる決断を後押ししてくれる名言もあれば、 無駄なものを買わないように促してくれる名言もあります。

今あるガラクタは処分して、今後は必要なものだけを購入するよう心がけたいと思います。

…というのを年末に思ったのですが、インフルエンザのおかげで、 なにもしないで年を越し、新年明けてからは忙しくて手をつけられていない、 という状況に陥っております。…ああああ…。

 

今回も、ここまで読んでいただき、誠にありがとうございました。
次回は、2月21日(日) の未明にお会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」- Firefox の Personas の絵を描きたいのですが、時間が…。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本