[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:34658] "mapping" in /etc/network/interfaces
- From: Taketoshi Sano <kgh12351@xxxxxxxxxxx>
- Subject: [debian-users:34658] "mapping" in /etc/network/interfaces
- Date: Thu, 26 Sep 2002 01:42:30 +0900
- List-help: <mailto:debian-users-ctl@debian.or.jp?body=help>
- List-id: debian-users.debian.or.jp
- List-owner: <mailto:debian-users-admin@debian.or.jp>
- List-post: <mailto:debian-users@debian.or.jp>
- List-software: fml [fml 4.0.3 release (20011202/4.0.3)]
- List-unsubscribe: <mailto:debian-users-ctl@debian.or.jp?body=unsubscribe>
- X-dispatcher: imput version 20000414(IM141)
- X-fingerprint: A1A0 F2D0 9C5D 7D61 DBA1 1507 D0B3 F3D0 AE31 C009
- X-ml-info: If you have a question, send e-mail with the body "help" (without quotes) to the address debian-users-ctl@debian.or.jp; help=<mailto:debian-users-ctl@debian.or.jp?body=help>
- X-ml-name: debian-users
- X-mlserver: fml [fml 4.0.3 release (20011202/4.0.3)]; post only (only members can post)
- X-spam-level: ******
- X-spam-status: No, hits=6.5 required=10.0 tests=ISO2022JP_CHARSET,FROM_ENDS_IN_NUMS,ISO2022JP_BODY, CASHCASHCASH,US_DOLLARS_2,DOUBLE_CAPSWORD,UPPERCASE_25_50, HTTP_CTRL_CHARS_HOST version=2.31
- Message-id: <20020926.002613.74755471.sano@@danyasun.standalone.local.test>
- X-mail-count: 34658
- X-mailer: Mew version 2.2 on Emacs 21.2 / Mule 5.0 (SAKAKI)
佐野@浜松です。
ノートPCを自宅と職場や学校などに持ち運んで使うような場合、
それぞれの環境に応じてIPアドレスなどの設定を変更して使う
ことがよくあると思います。
NIC が PCMCIA 接続の場合は /etc/pcmcia/network.opts に
複数の設定を記載しておいて、scheme を定義して切り換える
という方法を使っていましたが、NIC内蔵のノートPCの場合には
/etc/network/interfaces に設定を記載することになります。
man ifup すると
-i file, --interfaces file
Read interface definitions from a different file.
というオプションがあるので、使用する環境に応じて複数の設定
ファイルを用意しておき、その都度ファイルを指定して切り換える
という方法も使えますが、設定ファイルの数が増えるのは個人的に
おもしろくないし、ファイルのフルパス名を毎回指定するのも面倒
かなという気がします。
そこで man interfaces すると
mapping eth0
script /usr/local/sbin/map-scheme
map HOME eth0-home
map WORK eth0-work
iface eth0-home inet static
address 192.168.1.1
netmask 255.255.255.0
iface eth0-work inet dhcp
Stanzas beginning with the word "mapping" are used to
automatically translate a physical interface name into a
logical interface specified by an "iface" stanza. The
first line of a mapping stanza begins with the word "map-
ping" followed by the names of each physical interface
this mapping should apply to. Shell globs (* and ? wild-
cards) may be used when specifying interfaces. Each map-
ping must specify a script, which will be run when the
mapping is applied. In addition, a mapping may specify any
number of "map" parameters that will be passed to the
script.
と書いてあるので、interfaces ファイルに複数の設定を記載して
切り換えることもできそうだ、と試してみました。
上の文章には
「mapping」で始まる節は物理インターフェイス名を
「iface」節に指定された論理インターフェイス名へ
自動的に変換するために利用される。
「mapping」節の最初の行は「mapping」という単語で
始まり、そしてその変換が適用される各物理インター
フェイスの名前が続く。
インターフェイスを指定する際には、シェルのワイルド
カード(* と ?)を利用可能である。各「mapping」節には、
その変換が適用される際に実行されるスクリプトをひとつ、
必ず指定しなければならない。さらに、ひとつの mapping
節には「map」パラメータをいくつでも指定できる。
このパラメータは上記のスクリプトに渡される。
ということが書かれているわけですが、ここで指定する
スクリプトの例とか、「map」パラメータがどのように
渡されるのか、といったことは説明されていません。
で、いろいろ試行錯誤してみたわけですが、とりあえず
現状では
====================================
#!/bin/sh
#echo $1 >>/tmp/chk/verify-chk-eth0
#cat >>/tmp/chk/verify-chk-eth0
echo $1'-'$NET
exit
====================================
という簡単なスクリプトを /usr/local/sbin/select-eth0 と
して保存しておいて、
"NET=home ifup eth0" (eth0-home を使う場合)
"NET=work ifup eth0" (eth0-work を使う場合)
といった感じで起動しています。
上のスクリプトでコメントアウトしてあるのが
確認用に使った部分ですが、どうやら動作としては
ifup <interface> で指定された「物理インターフェイス名」が
スクリプトのコマンドパラメータ ($1) として渡され、
/etc/network/interfaces の中で指定された「map」パラメータは
スクリプトへの標準入力として渡されるようです。
そして「自動的に変換」させるためには、このスクリプトから
標準出力へ「変換後の論理インターフェイス名」を送るように
する必要があるようです。
上記の「とりあえずの方法」ではなんのチェックも無しに
環境変数経由で渡された名前を使って変換後の名前として
出力していますが、標準入力として渡された map パラメータを
使えば、シェルの環境変数を経由して渡された名前が有効か
どうかを確認することも可能でしょう。
以上、/etc/network/interfaces に複数の設定を記載して
mapping で切り換えて使う方法でした。
# 既に周知の内容だったらすみません。
--
# わたしのおうちは浜松市、アカウミガメもやってくる
<kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)