ノートパソコンを使用していて,ネットに繋ぐ形態が,研究室では固定IPアドレス,自宅ではルータを使ってDHCPの動的割り当て,というものだったとします.こんなとき,毎回々々LANの設定をし直していたのではちょっと大変です.僕は以前こういう状況でしたので,簡単なスクリプトをつくって対処していました.
早速ですがスクリプト本体です.mynetという当たり障りのない名前にしています.多分動くと思いますが,使用する場合は自己責任でお願いします.
まず,同梱の設定ファイルに設定を書き込んでください.各ファイルに簡単な説明を書いていますので,それを参照してください.つぎに,mynetディレクトリごと/usr/localに置きます. mynetディレクトリにあるmynetというスクリプト(実行ファイル)は /usr/local/binなどにシンボリックリンクを張ります.実行にはroot権限が必要です.研究室(固定IP)用にネットワークを設定するには
# mynet lab
とし,家(DHCP)用にネットワークを設定するには
# mynet home
とします.ネットワークの再起動もスクリプトの方で行うようにしています.
スクリプト本体の説明です.難しいことはしていません.
#!/bin/sh test -z "$1" && echo "Usage: mynet <'lab' or 'home'>" && exit # 設定ファイルの置き場所 DIR=/usr/local/mynet if [ $1 = "home" ]; then cp $DIR/network-home /etc/sysconfig/network cp $DIR/ifcfg-eth0-home /etc/sysconfig/network-scripts/ifcfg-eth0 echo "Set network for home (dhcp)" elif [ $1 = "lab" ]; then cp $DIR/resolv.conf-lab /etc/resolv.conf cp $DIR/network-lab /etc/sysconfig/network cp $DIR/ifcfg-eth0-lab /etc/sysconfig/network-scripts/ifcfg-eth0 echo "Set network for laboratory" else echo "Unknown parameter '$1', exit" exit fi /etc/rc.d/init.d/network restart /sbin/ifup eth0
test -z で第1引数をチェックしています.第1引数がlabかhome以外ならばエラーメッセージを吐いて終了します.シェル変数DIRには設定ファイルを置いている場所をセットしています. mynetディレクトリを/usr/local以外の場所に置く場合はここを書き換えてください.
if文では引数がlabかhomeかに応じて,それ用の設定ファイルを本来の設定ファイルにコピーしています. NICのエイリアスがeth0でない場合は,環境にあわせて該当部分を書き換えてください. DHCPの場合は/etc/resolv.confが自動的に書き換えられるので,あらかじめファイルを準備しておく必要はありません.
設定ファイルをコピーしたあと,ネットワークを再起動し(/etc/rc.d/init.d/network restart), NICを有効にしています(/sbin/ifup eth0).