コマンドプロンプト等で、WIFIの"ネット接続"が有効かチェックする方法はありますでしょうか。

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

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

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

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

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

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2016/03/31 17:37:28
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154

ポイント250pt

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
他5件のコメントを見る
id:a-kuma3

質問では、ルーターと WiFi でつながっているけれど、ルータがプロバイダに接続していないとか、プロバイダには接続しているけれどサイトが応答してない、という状況だと思います。
コメントで書かれているのは、PC から直接ダイアルアップなのですね。

もう、ダイアルアップの環境が無いので試してませんが、ダイアルアップは接続開始から接続確立までかなり時間がかかります。
タイムアウトの時間もかなり長いと思います。
接続確立まで待っている状態なんじゃないかと思います。

2016/04/01 23:40:14
id:iori753

>質問では、ルーターと WiFi でつながっている
確かにそうでした、別のところに使うパーツと勘違いしておりましたm(__)m
お教えいただいたものでたしかにやりたいことが出来たのでした汗

本当にありがとうございます!!

2016/04/02 00:27:41

その他の回答1件)

id:freemann No.1

回答回数335ベストアンサー獲得回数55

ポイント50pt

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

ping www.google.co.jp
id:iori753

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

2016/03/31 17:37:05
id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

ポイント250pt

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
他5件のコメントを見る
id:a-kuma3

質問では、ルーターと WiFi でつながっているけれど、ルータがプロバイダに接続していないとか、プロバイダには接続しているけれどサイトが応答してない、という状況だと思います。
コメントで書かれているのは、PC から直接ダイアルアップなのですね。

もう、ダイアルアップの環境が無いので試してませんが、ダイアルアップは接続開始から接続確立までかなり時間がかかります。
タイムアウトの時間もかなり長いと思います。
接続確立まで待っている状態なんじゃないかと思います。

2016/04/01 23:40:14
id:iori753

>質問では、ルーターと WiFi でつながっている
確かにそうでした、別のところに使うパーツと勘違いしておりましたm(__)m
お教えいただいたものでたしかにやりたいことが出来たのでした汗

本当にありがとうございます!!

2016/04/02 00:27:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません