テザリングでノートPCをつなぎ、コマンドプロンプトにて
netsh wlan show interfaces にて、特定文字の有無でWIFI自体のオンオフはチェック出来ましたが、そうではなく親機とはWIFIで通信環境にあっても、親機自体がネットに繋がっていなければインターネットは出来ないので、その接続中のWIFI自体がインターネットにつながっているものなのかどうなのかをチェックする方法は御座いますでしょうか。
ブラウザで特定サイトを開いて、というのも可能ではあるのですが、PING送信というのでしょうか、あまり詳しくはないのですが、ササッと通信してみて確認する軽い早い処理がありましたら教えて下さい。
なければブラウザ起動で行こうと思います。
コマンドプロンプトと指定は無いのですが、UWSCというWin用のマクロ言語で使いたく、その言語ではコマンドプロンプトを扱えるため、そう記述させて頂きました。
何卒よろしくお願い致します。
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
次のコマンドでどうでしょうか。
ping www.google.co.jp
ありがとうございます!
これも使えそうで、テキストファイルに出力&UWSCでファイルオープンで行けそうだったのですが、他の方の回答がそのままコピペで使えてとても便利でしたので、そちらをBAにさせて頂きますが、ありがとうございましたm(__)m
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
質問では、ルーターと WiFi でつながっているけれど、ルータがプロバイダに接続していないとか、プロバイダには接続しているけれどサイトが応答してない、という状況だと思います。
コメントで書かれているのは、PC から直接ダイアルアップなのですね。
もう、ダイアルアップの環境が無いので試してませんが、ダイアルアップは接続開始から接続確立までかなり時間がかかります。
タイムアウトの時間もかなり長いと思います。
接続確立まで待っている状態なんじゃないかと思います。
>質問では、ルーターと WiFi でつながっている
確かにそうでした、別のところに使うパーツと勘違いしておりましたm(__)m
お教えいただいたものでたしかにやりたいことが出来たのでした汗
本当にありがとうございます!!
質問では、ルーターと WiFi でつながっているけれど、ルータがプロバイダに接続していないとか、プロバイダには接続しているけれどサイトが応答してない、という状況だと思います。
2016/04/01 23:40:14コメントで書かれているのは、PC から直接ダイアルアップなのですね。
もう、ダイアルアップの環境が無いので試してませんが、ダイアルアップは接続開始から接続確立までかなり時間がかかります。
タイムアウトの時間もかなり長いと思います。
接続確立まで待っている状態なんじゃないかと思います。
>質問では、ルーターと WiFi でつながっている
2016/04/02 00:27:41確かにそうでした、別のところに使うパーツと勘違いしておりましたm(__)m
お教えいただいたものでたしかにやりたいことが出来たのでした汗
本当にありがとうございます!!