Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Помогите создать батник для проверки пинга и удаленного подключения (http://forum.oszone.net/showthread.php?t=190602)

mankiz 08-11-2010 15:28 1537680

Помогите создать батник для проверки пинга и удаленного подключения
 
Задача такая:
Нужен батник, который бы проверял пинг удаленного компа, если пинг есть - то запуск подключения default.rdp если пинга нет - то повтор всей процедуры.
Пробовал сделать так:
:m1
ping айпишник /l 32 /n 3
if errorlevel 0 start notepad.exe (к примеру)
if errorlevel 1 goto m1
но не работает, блокнот запускается в любом случае, хоть есть пинг хоть нет.

Iska 08-11-2010 16:14 1537731

Примерно так:
Код:

@echo off
setlocal

set sAddress=%~1

if not defined sAddress exit /b 1

:Repeat
        ping.exe -n 1 -w 500 "%sAddress%" >nul && (start "" mstsc.exe "%UserProfile%\Мои документы\Default.rdp" & exit /b 0)
        goto :Repeat

P.S. Почему именно «Default.rdp», а не имя/адрес пингуемой машины+параметры «mstsc.exe»?

mankiz 08-11-2010 17:21 1537789

Э... Как-то даже в голову не пришло. А как это будет выглядеть в таком случае? Пароль сохранять не нужно, айпи и логин только.
Все оказалось гораздо сложнее чем я думал. Собственно где айпи-то прописывать?

Iska 08-11-2010 18:37 1537858

Документация:

Например, так:
Код:

ping.exe -n 1 -w 500 "%sAddress%" >nul && (start "" "%systemroot%\system32\mstsc.exe" /v:"%sAddress%" /fullscreen /console & exit /b 0)
и можно сразу после неё и перед «goto :Repeat» добавить:
Код:

<nul set /p sTemp=.
для визуализации.


С логином хуже; мне неизвестен способ задать имя пользователя через командную строку. Только *.rdp. Ну, или попробовать такую заглушку: Launch RDP from commandline | Remko Weijnen's Blog (Remko's Blog) (сам я не пробовал — без надобности).

читать дальше »
Поскольку мне не нужны разные имена в терминале, я просто прикрутил в Far Manager'е в User Menu, в подменю, среди прочих сетевых свистелок и перделок утилит такой пункт:
Код:

:  Remote Desktop on [!.!]
    "%systemroot%\system32\ping.exe" -n 1 -w 500 "!.!" >nul && "%systemroot%\system32\mstsc.exe" /v:!.! /fullscreen /console

и вызываю его, установив курсор на имени машины в плагине «Network».


Цитата:

Цитата mankiz
Собственно где айпи-то прописывать? »

В командной строке при вызове пакетного файла, например:
Код:

CallTerminal.cmd MyServer
или:
Код:

CallTerminal.cmd 192.168.100.100

mankiz 09-11-2010 07:28 1538186

Вот так все заработало:
@echo off
set sAddress=192.168.xx.xx
if not defined sAddress exit /b 1
:Repeat
ping.exe "%sAddress%" && (start "" mstsc.exe "%UserProfile%\Documents\Default.rdp" & exit /b 0)
goto :Repeat

Спасибо за помощь.

Iska 09-11-2010 11:02 1538305

mankiz, в случае непосредственного задания имени/адреса в пакетном файле — как это сделали Вы, строка:
Код:

if not defined sAddress exit /b 1
становится лишней. Её можно вообще удалить.

mankiz 10-11-2010 07:46 1539015

Благодарю за уточнение.

mankiz 12-11-2010 06:52 1540669

Поторопился отметить "Решено". В случае если пинг есть, все работает нормально. Если поменять адрес на несуществуюший в сети, то попытки пинга идут бесконечно (что и требовалось). Но если адрес правильный, а пинга все равно нет, то несмотря на это запускается подключение и естественно выдает ошибку.


Время: 16:42.

Время: 16:42.
© OSzone.net 2001-