ものぐさ日記(仮)

特にテーマはありません。仕事のこと、趣味のこと、思いついたこと、だらだら綴っていきます。

【Mac】ネットワーク設定切替用シェル(改良版)

 以前作成したネットワーク設定切替用シェルを改良した。

 設定は別ファイルに保持し、メニューから設定を選択できるようにした。


設定ファイル(networkchange.conf)

 
Home|Ethernet|192.168.0.11|255.255.255.0|192.168.0.254|192.168.1.254|8.8.8.8
Office|Ethernet|192.168.10.50|255.255.255.0|192.168.10.254|192.168.10.254|8.8.8.8

ネットワーク設定切替用シェル(networkchange.sh)

#!/bin/bash

# Menu Print
chk=0
while [ $chk -eq 0 ]
do
        num=0
        chknum="$num"
        clear
        echo '### Network location ###'
        for line in `cat ./networkchange.conf`
        do
                num=`expr $num + 1`
                chknum="$chknum|$num"
                echo $line | awk -F\| '{printf("%d.%s(%s:%s)\n",'$num',$1,$2,$3)}'
        done
        echo "Enter the number [0(exit)-$num]"
        read inpnum
        chk=`echo $inpnum | egrep -c $chknum`
        if [ $inpnum -eq 0 ]
        then
                exit 1
        fi
done

# Get Parameters
line=`cat ./networkchange.conf | awk -F\| 'FNR=='$inpnum'{print $0}'`
env=`echo $line | awk -F\| '{print $2}'`
ip=`echo $line | awk -F\| '{print $3}'`
mask=`echo $line | awk -F\| '{print $4}'`
gw=`echo $line | awk -F\| '{print $5}'`
dns1=`echo $line | awk -F\| '{print $6}'`
dns2=`echo $line | awk -F\| '{print $7}'`

# Execute Command
networksetup -setmanual $env $ip $mask $gw
networksetup -setdnsservers $env $dns1 $dns2

# Print Result
networksetup -getinfo $env
networksetup -getdnsservers $env
# eof

まぁ、こんなもんで良かろう。