2012-03-25

簡単なbashスクリプト

自分のネットワーク環境を整備する為に、幾つかのスクリプトを作りました。忘れる前にメモしておきます。
  1. myDate: 自分のタイムスタンプ
  2. myHost: 自分のマシンのホスト名、localhostのIPアドレス
  3. myNet: 自分のマシンが属するネットワーク情報
  4. myScanIP: PINGを連続的にスキャンする。
  5. myDiskutil_list: 「diskutil list」のまんま
  6. myMount_disk1: 外付けhdd, disk1のマウント
  7. myUnmount_disk1: 外付けhdd, disk1のアンマウント
この内、1〜4は便利なので、公開しておきます。

1 myDate
#!/bin/bash
date +'%Y-%m-%d(%a)%H:%M:%S'

2 myHost
#!/bin/bash
#
# myHost: 動作例=>「HOST: name=(div-mm.local); ip=(10.0.1.2)」 
#
# 参考: UNIXシェルスクリプト 逆引き大全 333極意
#        p112, #84 文字列を指定した区切り文字で分割する。


getHostIP() {
 hostName=`hostname`
 localIP=`netstat -r -f inet |grep "localhost" | grep "UHS"`

 _IFS="$IFS"    # save $IFS
 IFS=' '
 set -- $localIP
 IFS="$_IFS"

 # 分割結果:
 # $1: host's IP address
 # $2: localhost
 # $3: UHS
 
 echo "HOST: name=($hostName); ip=(${1})"
              
 return
}

# 実行
getHostIP

3. myNet
#!/bin/bash

echo '"netstat -r -f inet"'
echo " at `myDate`"
netstat -r -f inetdiv

4. myScanIP
#!/bin/bash
#
# myScanIP [ipSpace ipStart ipWidth ] 
#

#localIP=`netstat -r -f inet |grep localhost | grep UHS`
localIP=`myHost`
echo $localIP

declare -i j k ipStart ipStop ipWidth noa

j=1 #start
k=5 #width


# Default values
ipSpace="192.168.1"
ipStart=j
ipWidth=k
noa=$#

#echo "  Number of Arguments = $noa"
#echo "    ipSpace=${ipSpace}"
#echo "    ipStart=${ipStart}"
#echo "    ipWidth=${ipWidth}"

if [ $noa -eq 0 ]; then
    damy=1
elif [ $noa -eq 1 ]; then
    ipSpace=$1
elif [ $noa -eq 2 ]; then
    ipSpace=$1
    ipStart=$2
elif [ $noa -eq 3 ]; then
    ipSpace=$1
    ipStart=$2
    ipWidth=$3
fi

ipStop=$ipStart+$ipWidth-1


if [ $ipStop -gt 256 ]; then
    ipStop=255
    ipWidth=ipStop-ipStart+1
fi


file="ipScan_${ipSpace}.${ipStart}~${ipStop}.txt"
echo "======= myScanIP for ${ipSpace}.${ipStart}~${ipStop}" > $file
echo "===== ping from ${localIP}" >> $file
echo "  Number of Arguments = $noa" >> $file
echo "    ipSpace=${ipSpace}" >> $file
echo "    ipStart=${ipStart}" >> $file
echo "    ipStop=${ipStop}" >> $file
echo "    ipWidth=${ipWidth}" >> $file
echo "=== save file:'${file}'" >> $file

timeStamp=`date +'%Y-%m-%d(%a)%H%M%S'` 

echo "* Scan start:_${timeStamp} " >> $file

echo "======= scanIP for ${ipSpace}.${ipStart}~${ipStop} =============="

echo "===== ping from ${localIP}"

echo "  Number of Arguments = $noa"
echo "    ipSpace=${ipSpace}"
echo "    ipStart=${ipStart}"
echo "    ipStop=${ipStop}"
echo "    ipWidth=${ipWidth}"

echo "=== save file:'${file}' "
echo "* Scan start:_${timeStamp} "

j=ipStart

while [ $j -le $ipStop ];
do
    result=`ping -c 2  "${ipSpace}.$j"`
    yes_response=""
    yes_response=`echo "$result" |grep 'round-trip min/avg/max/stddev'`
    if [ "$yes_response" != "" ]; then
        echo "#ip=${j}: ${yes_response}"  >>$file
        echo "#ip=${j}: ${yes_response}"
    else
        echo  "_ip=${j}:non___" 
    fi
    j=j+1

done

timeStamp=`date +'%Y-%m-%d(%a)%H%M%S'` 
echo "* Scan stopped:_${timeStamp} " >> $file
echo "* Scan stopped:_${timeStamp} "

echo "========= myScanIP finished =============="

上記のスクリプトの28行目の「dummy=1」と言う無意味は命令は、本来コメント「#」でしたが、そうすると次の「elif」がエラーとなるので挿入しました。この経験から、現在zshへ乗り換えをしようとしています。

【関連記事】

  1.  
  2. 簡単なbashスクリプト: 簡易ストップウォッチ 

ーーーー このポストの履歴
  1. 開始 2012-03-25 (日) 13:59

0 件のコメント:

コメントを投稿

注目の投稿

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

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