Блог


24 Июнь 2013
Total Network Inventory, Описание функции, Релизы | 7 комментариев

TNI 2.2.2 (1483): Обновление, насыщенное действием

Сегодня мы выпускаем очередное обновление TNI 2, буквально насыщенное действием!

Точнее, действиями: теперь можно многое сделать с компьютерами в сети, не покидая комфортного окна TNI. Но всё по порядку. Сперва традиционный список изменений:

  • НОВИНКАСтандартные и пользовательские действия.
  • НовоеОбнаружение Linux-дистрибутивов CentOS и SliTaz: Иконки SliTaz и CentOS
  • ИсправленоЗависание процесса сканирования в ряде случаев.
  • ИсправленоРазрешение имен для устройств с динамическим IP.

 

Знакомство с действиями

Несколько Стандартных действий TNI умеет выполнять напрямую (Перезагрузка, Выключение и Wake-on-LAN); остальные же действия, известные как Пользовательские, позволяют с помощью несложного скриптования и системных или сторонних утилит добиться практически любого эффекта.

Продемонстрирую несколько примеров, начав с наиболее очевидного. Предположим, вы хотите использовать старый добрый ping.exe, чтобы пропинговать устройство. Для этого вы открываете cmd.exe и вводите в консоль ping.exe, добавляя IP нужного компьютера. Почему бы не упростить эту задачу:

Пропинговать устройство=cmd.exe /K ping.exe %IP%

Так описываются действия. Теперь вы просто щелкаете любой компьютер в дереве сети правой кнопкой и видите это:

Действие: пинг

Думаю, затея ясна. Теперь хочется разнообразия!

Условные директивы

Совсем не сложно описать что-то вроде этого:

Управление компьютером=mmc.exe compmgmt.msc /Computer=%IP%

Но это действие применимо только к Windows-машинам, так что нет никакого смысла делать его доступным для Mac’ов и Linux’ов, верно? Добавим к описанию условную директиву.

{$IF WIN}Управление компьютером=mmc.exe compmgmt.msc /Computer=%IP%

Так уже гораздо лучше. Разовьем тему. Вот еще одно полезное действие:

Открыть web-страницу=http://%HOST%/

Здесь тоже есть над чем поработать:

{$IF OPEN80}Открыть web-страницу=http://%HOST%/

Условия часто позволяют устранить путаницу и неоднозначность, используя информацию, которая известна программе о ваших компьютерах. Вот какими могут быть проверки:

  • OPENXX — открыт ли указанный порт.
  • OPENSSHPORT — здесь мы используем номер порта SSH, указанный в настройках Сканера.
  • ONLINE
  • WIN — работает ли компьютер под управлением Windows…
  • LIN — …Linux…
  • MAC — …или MacOS X.
  • SSH — был ли узел просканирован по SSH (это может оказаться Linux, Mac OS X или FreeBSD).
  • SNMP — был ли узел просканирован по SNMP.
  • LAN — находится ли это устройство в той же подсети, что и ваш ПК.

Разумеется, добавив перед любым условием “!”, вы получите его отрицание. То есть, !ONLINE означает “оффлайн”, !WIN значит “что угодно кроме Windows” и так далее. Кроме того, можно перечислить несколько условий в одном блоке IF через запятую, что будет расценено как логическое И. Например:

{$IF LAN,!ONLINE}Wake-on-LAN=wol.exe %MAC:%

Действия для нескольких устройств

Некоторые действия не должны выполняться для нескольких компьютеров одновременно, и по умолчанию считается, что цель — единственное устройство. Если же действие должно быть доступно, когда на мушке несколько компьютеров (или если выбрана группа), к его описанию нужно добавить директиву {$MULTI}.

{$MULTI}{$IF LAN,!ONLINE}Wake-on-LAN=wol.exe %MAC:%

При этом возникает еще одна тонкость. Приведенное выше описание делает действие применимым к группе устройств, если любое из них не в сети и любое из них в вашей подсети. С первым условием все в порядке (активные устройства тоже получат WOL-пакеты, не беда), а вот рассылать WOL’ы за пределы локальной сети — затея бесплодная. Так что переформулируем второе условие как каждое из них в вашей подсети, добавив “!” после него. С восклицательным знаком строже: LAN! — обязательно для всех!

{$MULTI}{$IF LAN!,!ONLINE}Wake-on-LAN=wol.exe %MAC:%

Вот теперь можно считать это действие хорошо продуманным.

Защита от несчастных случаев

Скорее всего, большинство действий будут носить мирный характер, но некоторые представители этой породы могут быть опасны, если вызвать их случайно. К таким приписывайте директиву {$?}. Тогда при каждом вызове вам будет показано дополнительное окно подтверждения. Например, используем Sysinternals PSTools чтобы выключить удаленный компьютер. Вот что я назвал опасностью.

{$?}Выключить=C:\PSTools\psshutdown.exe -k \\%HOST%

Симуляция нажатия клавиш

Пойдем еще дальше: вот действие для запуска удаленного рабочего стола.

Remote Desktop=mstsc.exe /v:%IP%

Проще некуда. Но вызов этого действия лишь покажет нам окно авторизации, где нам придется вручную вводить пароль. Можно сделать лучше. Давайте отправим этому окну пароль автоматически с помощью виртуальных нажатий клавиш!

Remote Desktop, автологин=mstsc.exe /v:%IP% /sendkeys:%PASSWORD%{ENTER}

После команды /sendkeys могут идти, в любом количестве и порядке, следующие блоки:

  • Любая строка текста — она будет отправлена как есть;
  • Шаблоны;
  • {$WAIT X} — эта директива приостановит выполнение на X миллисекунд. Если ее опустить, TNI по умолчанию подождет одну секунду прежде чем отправлять любые нажатия клавиш;
  • {клавиша} — нажатие одной из специальных клавиш: F1..F10, LEFT, RIGHT, UP, DOWN, ENTER, BACKSPACE, PGUP, PGDN, HOME, END, TAB.

Итак, в последнем примере мы автоматически вводим пароль и нажимаем Enter. Шаблон %PASSWORD% будет автоматически заменен на пароль, привязанный к конкретному компьютеру в вашем хранилище.

И кстати о шаблонах.

Шаблоны

Вот эти шаблоны будут заменены на данные о конкретном компьютере при выполнении действия:

  • %HOST% — FQDN, hostname или IP, в зависимости от флага Статический IP
  • %HOSTNAME%
  • %IP%
  • %MAC-%, %MAC:%, %MAC% — MAC-адрес, разделенный дефисами, двоеточиями или без разделителей, соответственно
  • %SSHPORT% — номер порта SSH, берется из настроек Сканера
  • %USERNAME% — имя пользователе из прикрепленного логина
  • %PASSWORD% — пароль из прикрепленного логина

Установив обновление, вы обнаружите большинство действий, которые служили примерами к этой записи. Вы всегда можете изменить их так, как вам удобнее, либо вовсе удалить ненужные. Смело экспериментируйте с пользовательскими действиями, ведь с помощью нашего несложного скрипта и сторонних утилит можно добиться чего угодно.

Ах да, редактирование действий. Кликните правой кнопкой мыши по любому устройству, и найдете кнопку Редактировать действия в соответствующем подменю. Или же можно сразу открыть Опции » Действия. Там будет удобная шпаргалка по синтаксису описания действий (щелчок по ключевому слову скопирует его!) и большая кнопка, которая открывает список действий в Блокноте — самом лучшем текстовом редакторе планеты. Ну, почти. :)

И последнее. Если мы что-нибудь упустили (полезное условие, директиву или шаблон, скажем), пожалуйста, дайте нам знать. Исправимся.

Обновить TNI 2.