2015-04-12

動作中のMacの基礎的ホスト情報を表示するスクリプト

現在、「OS X Yosemite 10.10.2」のクリーン・インストールの準備で四苦八苦しています。特に、これまで「Lion --> Mavericks」までは上書きインストールしか経験がないので。
 
「Mavericks 10.9.5」と「Yosemite 10.10.2」とを交互に立ち上げて比較しています。何度かしていると、自分がどの環境にいるか、混乱します。

ふと、以前ネットワークの整備した時に、LANの設定を表示するスクリプトを書いていたのを思い出しました。それにホスト情報を加えた「zshスクリプト」を作りました。これが結構役にたつので、紹介します。

 ターミナルでの使用例をお示しします;




 スクリプトをお示しします;

#!/bin/zsh
#
# myHost: 
#
# Usage & outputs: 
#  % myHost⏎
#   •System Version: Mac OS X: 10.10.2(14C1514)
#   •Host Name: MmM11.local
#   •Boot Volume: sh3X10.2
#   •LAN Ports: (1) Ether:"*" 10.9.8.100  
#               (2) Wi-Fi:"*" 10.9.8.101  

getHostInfo() {
 sysName=$(sw_vers -productName)
 sysVersion=$(sw_vers -productVersion)
 sysBuild=$(sw_vers -buildVersion)
 
 hostName=$(hostname)
 etherIP=$(ipconfig getifaddr en0)
 wifiIP=$(ipconfig getifaddr en1)
 myd=$( ls -l /Volumes/ | grep " -> " |\
   sed -e "s%.* \([a-zA-Z0-9._-]*\) -> /$%\1%")
 echo " •System Version: $sysName $sysVersion($sysBuild)"
 echo "      •Host Name: $hostName"
 echo "    •Boot Volume: $myd"
 echo "      •LAN Ports: (1) $LAN_Name[1]:\"$LAN_State[1]\" $LAN_IP[1]"
 echo "                  (2) $LAN_Name[2]:\"$LAN_State[2]\" $LAN_IP[2]"
 return
}

getLANportsOrder(){
 set -a LAN_Name=()
 set -a LAN_IP=()
 set -a LAN_State=()
 
 local portOrder, wifiIP, wifiState, etherIP, etherState
 
 # 「(数字 )の行を切り出す。
 portOrder=$(networksetup -listnetworkserviceorder | grep "(\d) ")
  #echo "$portOrder"

 # Wi-Fi setting 
 Nwifi=$(( $(echo $portOrder | grep "Wi-Fi$" | cut -c2) ))
 LAN_Name=( Wi-Fi )
 wifiIP=$(ipconfig getifaddr en1)
 if [[ $wifiIP = "" ]]; then 
  wifiIP="not active: turned off"
  wifiState="_"
 else
  wifiState="*"
 fi 
 LAN_IP=( $wifiIP )
 LAN_State=( $wifiState ) 
  #echo "Nwifi=$Nwifi"

 # Ethernet setting
 Nether=$(( $(echo $portOrder | grep "Ethernet$" | cut -c2) ))
 etherIP=$(ipconfig getifaddr en0)
 if [[ $etherIP = "" ]]; then 
  etherIP="not active: turned off"
  etherState="_"
 else
  etherState="*"
 fi   
  

 if [[ $Nwifi -gt $Nether ]] ; then
  LAN_Name=( Ether $LAN_Name )
  LAN_IP=( $etherIP $LAN_IP )
  LAN_State=( $etherState $LAN_State )
 else
  LAN_Name=( $LAN_Name Ether )
  LAN_IP=( $LAN_IP $etherIP )
  LAN_State=( $LAN_State $etherState )
 fi
 
 #echo $LAN_Name
 #echo $LAN_IP  
 #echo $LAN_State  
 #
 #echo "    (1) $LAN_Name[1]:\"$LAN_State[1]\" $LAN_IP[1]  "
 #echo "    (2) $LAN_Name[2]:\"$LAN_State[2]\" $LAN_IP[2]  "
 
}

# 実行
getLANportsOrder
getHostInfo





 ____ このページの履歴
  1.  開始 2015-04-12(日) 22:47:56 
  2.  修正 2015-04-13(月) 13:42:55 スクリプト: 不要部分を削除。


0 件のコメント:

コメントを投稿

注目の投稿

Terminalでの、なんちゃってViモドキ

近頃、ようやくKarabiner-Elementsに慣れてきたので、 Terminalで動作する「擬似Vi-Mode」を作って見たので、ご紹介します。 『概要』 「擬似Vi-Mode」の所以は、方向キー「←↓↑→」を通常の「hjkl」ではなくて「jkil」としました。これ...