Блог


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.


30 Апрель 2013
Total Network Inventory, Релизы | Комментировать

TNI 2.2.1 (1448): Асинхронный движок обзора сети

Приветствую! Тема сегодняшнего обновления:

Новое слово в обзоре сети!

…согласен, можно было сформулировать и поскромнее. Ну да ладно, взгляните лучше на список изменений:

  • НовоеНовый быстрый движок обзора сети — Асинхронный движок. Обнаруживает устройства в подсети /24 (254 адреса) всего за одну секунду.
  • НовоеВозможность выбирать из трех сетевых движков (асинхронный, Nmap и классический) для определения онлайн-статуса и обзора сети, и двух сетевых движков (Nmap и классический) для сканирования портов.
  • НовоеВозможность проводить TCP-пинг (пропускать ICMP и ARP пинг и сразу сканировать порты) для обнаружения устройств, не отвечающих на пинг.
  • НовоеВозможность использовать последний известный IP-адрес для устройств с динамическими IP-адресами и неразрешаемыми сетевыми именами (окружение Samba и др.).
  • НовоеВозможность указания нестандартного порта SSH.
  • НовоеНепросканированные устройства, которые определяются как онлайн или существующие в сети (т.е. можеть быть разрешено имя или IP) добавляются в базу даже если MAC-адрес неизвестен.
  • НовоеРазрешение имен через DNS в доменном окружении.
  • УлучшеноНастройки сканера были пересмотрены и сделаны более интуитивными и гибкими.
  • УлучшеноУпрощенное сканирование устройств по SNMP: программа проверяет наиболее часто используемые SNMP-комьюнити помимо «public», и проводит успешное сканирование устройства, если используется одна из них.
  • УлучшеноМетод сканирования Windows-компьютеров по протоколу RPC по умолчанию отключен для новых инсталляций; рекомендуется отключить его также и для существующих инсталляций.
  • УлучшеноОбновлены все агенты для не-Windows систем. Улучшена стабильность и совместимость.
  • ИсправленоПроблемы с использованием процессора при определении онлайн-статуса с помощью движка Nmap.
  • + незначительные исправления и улучшения

 

Новый асинхронный движок

Как и Nmap, асинхронный движок умеет обнаруживать в локальной подсети хосты, которые, будучи онлайн, не отзываются на ICMP-пинг (виной тому настройки брандмауэра Windows: так уж он ведет себя по умолчанию). Классический движок тоже это умеет, но из-за неторопливости ARP-пинга в новейших версиях Windows задача выполняется слишком долго.

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

Новое в настройках сканера

Эта странца настроек становилась черезчур запутанной, так что мы ее немного расчистили: убрали профили сканера и сделали всё остальное приветливее и проще. Кое-что и добавили, например вот это:

Настройки движка обзора сети

Ссылка на загрузку всё та же, без неожиданностей.

И это всё на сегодня. До связи!


27 Март 2013
Total Network Inventory, Описание функции, Релизы | Комментировать

TNI 2.2.0 (1438): Планировщик сканирования

На этот раз список изменений коротковат, но зато каков!

  • НОВИНКАПланировщик сканирования

 

С этого места расскажу подробнее.

 

Создание и планирование списка задач

 

Всё верно, Планировщик работает с сохраненными списками задач.

Чтобы создать их, вы добавляете задачи в сканер, настраиваете их (обнаруживаете узлы в диапазонах, прописываете пароли и т.п.) и нажимаете на боковой панели Сохранить текущие задачи.

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

Но запустить их можно было только вручную.
На сцену выходит Планировщик сканирования!

 

Наведите курсор на список, и появится кнопка Запланировать эту задачу; нажмите ее.

Запланировать эту задачу

Откроется страница Планировщик сканирования. Сюда же можно попасть в любое время, просто открыв окно настроек.

Страница планировщика

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

    • Однажды. Просто укажите когда.
      once
    • По дням. Ежедневно в определенное время, или же раз в N дней.
      daily
    • По неделям. В заданные дни каждую N-ную неделю.
      weekly
    • По месяцам. Это гибкий режим. Вот, например, мы настроили запуск задачи в первый день, последний день и во вторую пятницу каждого второго месяца.
      monthly
      Более правдоподобные сценарии вроде «первый понедельник каждого месяца» тоже сработают, разумеется.

Независимо от выбранного режима нужно дополнительно указать дату начала и время. Каждое изменение задачи обновляет поле «следующий запуск» внизу.

 

Работа планировщика

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

  1. TNI будет запущен.
  2. сканер не будет использоваться.

Таковы на данный момент ограничения. Мы работаем над тем, чтобы их не стало.

Если что-нибудь помешает Планировщику вовремя выполнить задачу, вы узнаете об этом из журнала запусков. Отдельный журнал создается для каждой запланированной задачи, и в нем есть всё: сколько узлов просканировано, сколько было ошибок, был ли пропущен запуск и если да, то почему. Кроме того, для каждого успешного запуска сохраняется полный журнал сканирования.

Описывать удобство и полезность нового Планировщика можно бесконечно, но вы можете сами всё это увидеть, загрузив обновление.

На последок упомяну, что мы перевели сайт еще на два языка: tr турецкий и pl польский.

Увидимся в следующем посте!