以前作成したネットワーク設定切替用シェルを改良した。
設定は別ファイルに保持し、メニューから設定を選択できるようにした。
設定ファイル(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
まぁ、こんなもんで良かろう。