MarkXIII, чтобы "пинать извне" - нужно иметь какой-то порт открытым наружу (и проброшенным на роутере вовнутрь).
Дальше на этот порт вешается (к примеру) веб-сервис с каким-нить небольшим файликом (пары байт в принципе достаточно).
Дальше с внешнего (по отношению ко всей конструкции) компа обычным
GNU Wget по шедулеру тягаешь тот самый файлик, отписываешь в лог-файл время и результат (удачно/неудачно), удаляешь файлик чтоб не мешал, при необходимости выполняешь какие-то ещё действия.
Как вариант - "какой-то сервис" может висеть и на роутере.
Как ещё один вариант - логи может вести и веб-сервер.
Как ещё один вариант - wget может работать изнутри (в т.ч. и на роутере), а файлик качать с внешнего сервиса (
www.microsoft.com:80/index.html весит
415 байт192кбайт).
Если изнутри на машине стоит XP (на других Win
не сработает) - можно вместо wget использовать встроенный netsh (netsh diag connect iphost
www.microsoft.com 80). В отличие от wget - для netsh не нужен никакой файлик, проверяется возможность соединения и только.
<Добавлено утром>
Собственно, вариант "комп с Win за роутером, сервер снаружи"
checker.cmd
Код:
set REMOTEURL=ftp://ftp.mozilla.org/index.html
set WORKFOLDER=c:\checker
set LOGFILE=%WORKFOLDER%\checker.log
set WGETPROG=%WORKFOLDER%\wget.exe
%WGETPROG% --output-document=%WORKFOLDER%\foo.html %REMOTEURL% && call :PASSED ||call :FAILED
goto :EOF
:PASSED
REM есть коннект
1>>%LOGFILE% echo Passed at %DATE% %TIME%
del /q %WORKFOLDER%\foo.html
goto :EOF
:FAILED
REM нет коннекта
REM сюда можно добавить команду переинициализации соединения
1>>%LOGFILE% echo Epic fail at %DATE% %TIME%
goto :EOF
В "Назначенные задания" добавлять командой (предполагая, что всё хозяйство лежит в папке c:\Checker)
Код:
schtasks /create /RU SYSTEM /SC MINUTE /MO 15 /ST 00:00:01 /TR "c:\checker\checker.cmd" /TN "IMHO.ws Connect Checker"
Проверено, работает.