アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。
シェルスクリプトを教えてください。

質問
・nslookupで指定したipアドレスの
 接続結果が成功なら0を表示 失敗なら1を表示
 するというのがつくれません。お願いします
 なにかコマンドはコマンド結果に対して
 バックで表示されないcodeがあるらしいのですが。

ちなみにsolarisで #!/bin/sh で宜しくお願いします

A 回答 (2件)

参照URLは、SolarisのMANページのオンライン版です。



基本的にnslookupの返り値は、0か1しかありません。
意味としては、コマンドが正常終了したかどうかです。

つまり、処理の結果を表す返り値ではないため、質問者さんが思うような判別には使えないことになります。

どうしてもシェルスクリプトで、そのような処理を行う場合は、nslookupコマンドの出力する文字列を取り込むなり、ファイルに落とすなりして、解析するような処理が必要だと思います。

参考URL:http://docs.sun.com/app/docs/doc/816-0211/6m6nc6 …
    • good
    • 0

バックで表示されないcodeがあるとはyou-mさんもおっしゃっているとおりで、返り値とか戻り値と呼ばれます。

今回はそれが使えませんので標準出力を使います。
nslookupで検索した場合、見つからなかった場合には標準出力に
** server can't find 1.0.0.10.in-addr.arpa: NXDOMAIN
のように表示されます。
これを利用すれば以下のようなスクリプトで解決できると思います。
$ cat ipcheck.sh
#!/bin/sh
if nslookup $1 2>&- | grep "server can't find" > /dev/null ; then
echo 1
else
echo 0
fi
$ ./ipcheck.sh 210.150.25.37
0
$ ./ipcheck.sh 10.0.0.1
1

echoの部分をexitに変えれば戻り値として利用できます。前のコマンドの戻り値を確認するにはコマンドを実行した後にecho $?としてみてください。
手元にLinuxしかないため確認はできてませんが、Solarisのmanページを参照したので多分動くと思います。
    • good
    • 1

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