人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

コマンドプロンプト等で、WIFIの"ネット接続"が有効かチェックする方法はありますでしょうか。
テザリングでノートPCをつなぎ、コマンドプロンプトにて
netsh wlan show interfaces にて、特定文字の有無でWIFI自体のオンオフはチェック出来ましたが、そうではなく親機とはWIFIで通信環境にあっても、親機自体がネットに繋がっていなければインターネットは出来ないので、その接続中のWIFI自体がインターネットにつながっているものなのかどうなのかをチェックする方法は御座いますでしょうか。

ブラウザで特定サイトを開いて、というのも可能ではあるのですが、PING送信というのでしょうか、あまり詳しくはないのですが、ササッと通信してみて確認する軽い早い処理がありましたら教えて下さい。

なければブラウザ起動で行こうと思います。

コマンドプロンプトと指定は無いのですが、UWSCというWin用のマクロ言語で使いたく、その言語ではコマンドプロンプトを扱えるため、そう記述させて頂きました。

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

●質問者: maintour15
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● freemann
●50ポイント

次のコマンドでどうでしょうか。

ping www.google.co.jp

maintour15さんのコメント
ありがとうございます! これも使えそうで、テキストファイルに出力&UWSCでファイルオープンで行けそうだったのですが、他の方の回答がそのままコピペで使えてとても便利でしたので、そちらをBAにさせて頂きますが、ありがとうございましたm(__)m

2 ● a-kuma3
●250ポイント ベストアンサー

Webページの巡回の前に接続確認ってことですよね。
WSH で VBScript を使うのではどうでしょう。

こんな感じのスクリプトを、例えば check_http.vbs とかに書いておいて、

url = "http://www.yahoo.co.jp/"

Set xhr = CreateObject("MSXML2.ServerXMLHTTP")
xhr.Open "HEAD", url, False
xhr.Send
If xhr.Status < 400 Then
 WScript.Echo "OK"
Else
 WScript.Echo "NG"
End If

コマンドは、こうです。

cscript //nologo check_http.vbs

相手と応答が取れると、標準出力に "OK" と出します(ダメなら "NG")。

HEAD というコマンドは、HTTP のヘッダだけを返すだけで HTML の内容を返しません。
ブラウザ起動するよりは、かなり軽いです。

url は Yahoo! のトップページにしてますが、巡回目的ならそこのページの方が適切かもしれません。

もし、バッチの ERRORLEVEL でのやり取りのイメージならこんなスクリプトになります。

url = "http://www.yahoo.co.jp/"

Set xhr = CreateObject("MSXML2.ServerXMLHTTP")
xhr.Open "HEAD", url, False
xhr.Send
If xhr.Status < 400 Then
 WScript.Quit(0)
Else
 WScript.Quit(1)
End If

成功すると 0 、失敗だと 1 を返します。
変えているのは最後だけです。

判定は UWSC 側でやるなら xhr.Status そのものをやり取りしても良いかもしれません。


あ、でも UWSC って OLE 使えるんでしたよね。

このサンプルが一番近いです。
http://www.uwsc.info/sample.html#N43

GET ではなく HEAD を使って、responseXML ではなく Status で判定するようにしたら、
HTTP 接続ができるかどうかの関数になると思います。

Function CheckHttp(url)
 oHttp = CreateOLEObj("MSXML2.XMLHTTP")
 oHttp.Open("HEAD", url, 0)
 oHttp.Send
 Ifb oHttp.Status < 400 Then
 Result = True
 Else
 Result = False
 EndIf
Fend

maintour15さんのコメント
これすごいですね!!ブラウザ起動&特定サイト表示の1/100くらいの時間で出来ました、ありがとうございます!!

a-kuma3さんのコメント
インターネットにサイトを公開しているようなところは、普通は ping を遮断している(セキュリティ対策)ので、ping コマンドでは到達性の確認に使えません。 ポートを指定して TCP や UDP で ping みたいなことをやるツールもあるのですけれど、インストールするプログラムは少ないに越したことはないですし。 回答のコードを試しているときに、たまたまMSXML でプロクシを指定する方法が分かったので、ぼくも収穫ありでした <nobr><tt>:-)</tt></nobr>

maintour15さんのコメント
ありがとうございます。 しかし別のPC(win7)では、どうも反応しなかったのですが、これはエクセルやそのた何かのインストールが必要になりますでしょうか。

a-kuma3さんのコメント
>> しかし別のPC(win7)では、どうも反応しなかったのですが、 << どちらでやりました? MSXML というのを使ってるのですが、特に何かをインストールしなくても初めから使えます。 VBScript なら、UWSC から使わなくてもコマンドプロンプトから使えるので、「オブジェクトがない」という類のやつだとエラーメッセージが出るかもしれません。 ふと思ったのですが、別のPCからも素直にインターネットにつないでるでしょうか。 プロクシを通すようなつなぎ方だと、ちょっと修正が必要です。

maintour15さんのコメント
GET ではなく HEAD を使って、responseXML ではなく Status で判定する、一番最後に書いていただいたコードなのですが、WIn7やWIn10等で、rasdial [ネットワーク名] connectコマンドを、UWSCからDOSCMDで接続しているのですが、繋がったりつながらなかったりする状態なので、ブラウザを立ち上げ、表示できませんという文字が出るかどうかで判別していました。 しかし教えていただいたコードでも、テザリングなどでは問題なくtrue falseと出るのですが、rasdialコマンドでつないでいるPC(3個)では、何も出力されませんでした(**)

a-kuma3さんのコメント
質問では、ルーターと WiFi でつながっているけれど、ルータがプロバイダに接続していないとか、プロバイダには接続しているけれどサイトが応答してない、という状況だと思います。 コメントで書かれているのは、PC から直接ダイアルアップなのですね。 もう、ダイアルアップの環境が無いので試してませんが、ダイアルアップは接続開始から接続確立までかなり時間がかかります。 タイムアウトの時間もかなり長いと思います。 接続確立まで待っている状態なんじゃないかと思います。

maintour15さんのコメント
>質問では、ルーターと WiFi でつながっている 確かにそうでした、別のところに使うパーツと勘違いしておりましたm(__)m お教えいただいたものでたしかにやりたいことが出来たのでした汗 本当にありがとうございます!!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ