25 октября 2013 г.

Полезные внешние команды для Friendly Pinger

внешние команды Friendly Pinger
В этой заметке хотелось бы рассмотреть примеры внешних команд для программы Friendly Pinger, о которой я уже писал прежде. Возможно, некоторые решения покажутся несколько неудачными и не универсальными. Так же возможно, что именно такими они и являются. Однако, кому-то приведенные здесь заготовки могут оказаться полезными и упростить жизнь.

Добавить внешние команды в Friendly Pinger  можно так: Файл > Настройки... (F9) > Команды
Окно редактирования команды выглядит следующим образом:



Поле Комментарий содержит название команды, которое будет отображаться в списке внешних команд. 
В поле Приложение можно указать имя (с полным путем) исполняемого файла, который будет запускаться при активации редактируемой команды. Не следует писать в это поле параметры.
В поле Параметры можно указать какие параметры передавать запускаемому приложению. Кроме явно заданных параметров, можно использовать переменные %Address, %IP и %Name, значение которых определяется тем, какой объект на карте выделен в момент запуска команды. Именно благодаря этому действие может быть применено по отношению к конкретному устройству. Разумеется, так же в это поле можно вносить ключи, поддерживаемые указанным приложением.
Далее вместо скриншотов я буду приводить содержание указанных полей.
Редактируемая команда будет доступна для тех устройств, которые отмечены галочкой в расположенном ниже списке Назначить устройствам.

Примечание: имеется глюк (или фича:) - если в этом списке отмечены не все устройства, то в момент вызова команда выполняется не по отношению к выделенным устройствам, а ко всем, которые имеют отмеченный галочкой тип. Потому может быть удобнее оставлять все галочки установленными. Возможно, у вас подобного поведения наблюдаться не будет, нужно пробовать.

Если необходимо выполнить более сложное действие, чем просто запуск одной программы с параметром, логичным решением будет запускать скрипт, передавая ему имя или IP устройства. (Рекомендую сразу завести каталог со скриптами для Friendly Pinger).
Например:

Комментарий: Пример команды
Приложение: "(полный путь к файлу)\primer.bat"
Параметры: %Address

primer.bat
set computer=%1 echo %computer% pause
Таким образом по команде выполняется батник, адрес компьютера передается батнику в виде параметра в виде параметра, после чего можно выполнять произвольный набор команд.

Ping

Что бы быстро проверить пинг узла пригодится приведенная ниже команда. Параметр -t нужен для того, что бы пинг выполнялся до прерывания пользователем, поскольку по умолчанию отправляется 4 пакета, после чего консоль закрывается без возможности посмотреть результат выполнения команды.

Комментарий: ping
Приложение: ping.exe
Параметры: %Address -t

Так же в для проверки отсутствия потерь можно воспользоваться пингом с большим размером пакета

Комментарий: ping
Приложение: ping.exe
Параметры: %Address -t -l 10000

Перезагрузка или выключение

Так же может быть очень полезной команда, позволяющая перезагрузить или выключить нужный компьютер. Очевидно, что для этой цели можно воспользоваться встроенной утилитой shutdown.exe, которой можно выключить как текущий, так и удаленный компьютер. Однако, если friendly pinger работает не под учетной записью, которая входит в группу администраторов удаленной машины, возникает проблема аутентификации на удаленном компьютере, которую можно решать различными способами.
Прежде всего можно воспользоваться встроенной утилитой runas, позволяющей запускать программы с правами другого пользователя. Например, следующая команда перезагрузит удаленный компьютер после ввода пароля.

Комментарий: reboot runas
Приложение: runas.exe
Параметры: /user:(здесь имя учетной записи) shutdown.exe  /m \\%Address /r /t 00 /f

Замена ключа /r  на /s приведет к выключению компьютера.

Избавиться от необходимости вводить пароль можно, если воспользоваться утилитой PsExec.exe из пакета PsTools, которая умеет принимать пароль в качестве параметра. Только стоит помнить, что хранить пароли в явном виде небезопасно, так что пользуйтесь на свой страх и риск. (Далее приведены еще несколько заготовок с использованием этой утилиты).

Комментарий: reboot без пароля
Приложение: (путь к программе)\PsExec.exe
Параметры: -d -u (имя учетной записи) -p (пароль)  "(путь к файлу)\reboot.bat"  %Address

reboot.bat
shutdown.exe  /m \\%1 /r /t 00 /f
ping /t %1

Оснастка Управление компьютером

Многие пользуются оснасткой Управление компьютером - compmgmt.msc . Но не все знают, что ее можно использовать для управления удаленным компьютером. И тем более, не все знают, что такую операцию можно вызвать из командной строки командой
mmc.exe compmgmt.msc /computer=\\%targethost%
Следовательно можно автоматизировать это действие, создав соответствующую команду для friendly pinger

Комментарий:Управление компьютером
Приложение: (путь к файлу)\compmgmt.bat
Параметры: %Address

compmgmt.bat
@echo off set targethost=%1 (путь к файлу)\PsExec.exe -d -u (имя пользователя) -p (пароль) mmc.exe compmgmt.msc /computer=\\%targethost%

 

Обзор файловой системы удаленного компьютера в Total Commander

Что бы быстро получить доступ к файловой системе удаленного компьютера с правами администратора, можно воспользоваться приведенной ниже заготовкой. Так же будет нелишним добавить в wincmd.ini в секцию [Configuration] параметр AdminShares=1, что позволит сразу увидеть на панели скрытые по умолчанию административные ресурсы.

Комментарий: Открыть в Total Commander
Приложение: (путь к программе)\PsExec.exe
Параметры: -d -u (логин админа) -p (пароль) "(путь)\TOTALCMD.EXE"  /n /L=\\%Address

Доступ к рабочему столу удаленного компьютера

Так же вполне можно организовать подключение к удаленному рабочему столу из Friendly Pinger. Правда конкретные настройки здесь привести я не могу, поскольку решение будет во многом обусловлено тем, какой программой для удаленного администрирования вы пользуетесь. В качестве примера приведу подключение по RDP к выбранному компьютеру. К сожалению, утилите mstsc.exe нельзя передать адрес удаленного компьютеру в качестве параметра. Однако, в некотором смысле решением могут быть заготовленные файлы вида %hostname%.rdp, в каждом из которых прописано подключение к соответствующему компьютеру (для большого числа компьютеров это затруднительно). Файлы можно заготовить самой же утилитой mstsc.exe с помощью кнопки Сохранить как...

Комментарий: Открыть RDP
Приложение: mstsc.exe
Параметры: (папка с заготовленными файлами)\%Address.rdp

Вывод информационного сообщения на удаленном компьютере

Возможно, приведенное решение несколько кривое и является гибридом колеса, костыля и велосипеда, но у меня оно работает и уже потому устраивает. Важно, что оно не требует запущенной службы  windows messenger на удаленной машине. Принцип работы прост: команда запускает скрипт, который запрашивает в вас текст сообщения, создает в указанной расшаренной папке скрипт vbs, выводящий информационное окно с указанным текстом. Далее утилита PsExec.exe подключается к указанной машине и запускает на ней только что созданный скрипт. Разумеется, для работы необходима общая папка на вашем компьютере, в которую будет генерироваться скрипт. О том, что пользователь прочитал сообщение можно судить по успешному завершению работы psExec.exe.

Комментарий: Отправить сообщение
Приложение: (Папка с батником)\MsgBox.bat
Параметры: %Address

MsgBox.bat
@echo off set targethost=%1 set user=(лонин администратора) set pass=(пароль администратора) set vbsfile=msg.vbs chcp 1251 > nul set /p message=message: set titlewindow=(Заголовок окна) echo MsgBox "%message%", 4096, "%titlewindow%" > (Расшаренная папка)\%vbsfile% (Путь к программе)\PsExec.exe \\%targethost% -u %user% -p %pass% -i Wscript.exe \\(расшаренная папка)\%vbsfile% pause

 

Просмотр информации об удаленном компьютере

В качестве примера приведу использование утилиты psInfo.exe из того же комплекта утилит, что и psExec.exe.

Комментарий: Отправить сообщение
Приложение: (путь)\psInfo.bat
Параметры: %Address

psInfo.bat
(путь)\PsInfo.exe \\%1 -u (логин) -p (пароль) -d pause
 

 

Обзор и завершение процессов на удаленной машине

Еще одна заготовка - батник для просмотра запущенных процессов на удаленном компьютере и принудительного завершения выбранного процесса при необходимости. Возможно логика продумана не оптимально - можно доработать, если есть желание и необходимость. 

Комментарий: Обзор и завершение процессов
Приложение: (Папка с батником)\tasklistl.bat
Параметры: %Address

tasklistl.bat
@echo off setlocal enabledelayedexpansion set computer=%1 set user=(логин) set pass=(пароль) echo list of task on %computer% : tasklist /s %computer% /u %user% /p %pass% :begin echo. echo choose a method: echo 1: PID of task echo 2: IM of task set /p metod=metod= if "%metod%"=="1" ( set /p pid=PID= taskkill /s %computer% /u %user% /p %pass% /PID !pid! /T /F ) if "%metod%"=="2" ( set /p im=IM= taskkill /s %computer% /u %user% /p %pass% /IM !im! /T /F ) echo. echo list of task on %computer% : tasklist /s %computer% /u %user% /p %pass% echo. set /p repeat=press 1 for repeat: if "%repeat%"=="1" ( goto begin )


Буду рад, если вы поделитесь своими идеями, наработками и замечаниями в комментариях.

6 комментариев:

Анонимный комментирует...

Friendly Pinger устарел, его заменил Algorius Net Viewer, разработчик тот же.
Версия за 290 рублей позволяет добавлять сколько угодно устройств и мониторить до 15 хостов.
Внешние команды там много лучше, их можно группировать, назначать горячие клавиши. Чтобы Ping.exe не закрывался - предусмотрена галочка "Удерживать консоль".
Перезагрузка и выключение встроено. Управление компьютером - тоже. Доступ к рабочему столу - сразу в нескольких вариантах. Wake On Lan есть, MAC можно подставлять.
Еще устройствам можно задавать свои атрибуты и подставлять их через макросы, это сильно упрощает многие моменты.

Анонимный комментирует...

А еще нет вьювер стоит целых 290 рублей, а френдли пингер бесплатен. И вопрос тут даже не в непомерной стоимости, а в позиционировании программы. Скачал и пользуешься и скачал, поимел геморой с оплатой, поимел геморой с лицензией, поимел геморой с перемещением на другой комп - две большие разницы.

Unknown комментирует...

mstsc.exe /v %address и никаких файлов-заготовок

susl-ik комментирует...

Спасибо. Не знал, что можно передать в mstsc адрес в качестве параметра.

andy_1c комментирует...

Приветствую!
Можно попросить совета по программе?

Анонимный комментирует...

Спасибо за примеры, но пока разбирался столкнулся с ошибкой пока только в разделе Перезагрузка или выключение
Комментарий: reboot runas
Приложение: runas.exe
а вот параметры чуть изменить
Параметры: /user:(здесь имя учетной записи) "shutdown.exe /m \\%Address /r /t 00 /f"

Отправить комментарий