dポイントプレゼントキャンペーン実施中!

sh スクリプト check.sh で
引数がIPアドレス/サブネットマスクかどうかをチェックするスクリプトを作成したいのですが、
どのようにすればよいかご教授お願い致します。

期待値としては、check.sh 192.168.5.5/24 のように
引数が正しい(IPアドレス形式)/(サブネットマスク1~32)であれば
実行すれば0(OK)を出力し
check.sh 192.168.5.555/24のようにあやまった形式であれば
1(NG)を出力するようにしたいと思っています。

よろしくお願い致します。

A 回答 (4件)

シェルスクリプトではありませんが、PHPが使えるのでしたら、以下のようなモノがありましたよ。



http://oshiete.goo.ne.jp/qa/1186520.html
    • good
    • 0

ipcalcの実行結果で判断するのではだめですかね



参考URL:http://d.hatena.ne.jp/ktat/20090521/1242835927
    • good
    • 1

A=`expr "$1" : '\([0-9]\+\)\.[0-9]\+\.[0-9]\+\.[0-9]\+/[0-9]\+'`


B=`expr "$1" : '[0-9]\+\.\([0-9]\+\)\.[0-9]\+\.[0-9]\+/[0-9]\+'`
C=`expr "$1" : '[0-9]\+\.[0-9]\+\.\([0-9]\+\)\.[0-9]\+/[0-9]\+'`
D=`expr "$1" : '[0-9]\+\.[0-9]\+\.[0-9]\+\.\([0-9]\+\)/[0-9]\+'`
E=`expr "$1" : '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/\([0-9]\+\)'`

if test "$A" -a "$B" -a "$C" -a "$D" -a "$E" &&
test "$A" -ge 1 -a "$A" -le 255 -a \
"$B" -ge 1 -a "$B" -le 255 -a \
"$C" -ge 1 -a "$C" -le 255 -a \
"$D" -ge 1 -a "$D" -le 255 -a \
"$E" -ge 1 -a "$E" -le 32
then echo 0
else echo 1
fi
    • good
    • 0

努力と根性で正規表現で書いて grep とか.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!