We rise up for the things we believe in over and over again

Логи, мониторинг... Мониторинг, логи... Этих самых мониторящих и логирующих утилит на рабочем месте уже воз и маленькая тележка. А самым информативным остается самый обычный, чтоб его, ping. Отрабатывает намного быстрее, чем монструозный SCOM и к нему примазывающиеся.
На текущий момент у нас используется выдранный откуда-то из сети коллегами уже готовый PSH-скрипт, который и занимается весьма простым делом - обходом всех узлов, заданных в банальном текстовике. Пропинговался узел - вывести его имя в консоли зелененьким. Свалился - красным. После чего спим 20 секунд, очищаем окно консоли, и снова все по кругу. Добавили еще пищалку, да и все.
Проблема в том, что держать на экране это окошко - не есть хорошо, окон на рабочем столе и так полно. Пришла в голову идея сделать так, чтобы скрипт при обнаружении свалившегося хоста выдавал в системном трее уведомление, мол, такой-то хост того, сгнил. А если на это уведомление щелкнуть - выведется полный список хостов, на текущий момент лежащих в пыли. Вот что получилось на сегодняшний день.

Как работает.
В папке, где скрипт лежит, создаем папочку config, в нее в виде txt-файлов накидываем информацию о хостах, которые будем мониторить, в следующем виде:
ipaddress,comment
Например:
192.168.1.1,router
127.0.0.1,localhost
192.168.1.3,my computer
128.0.0.1,test host
Можно все хосты в один файл утрамбовать, можно разнести по нескольким файлам, например, серверы отдельно, сетевые железки отдельно...
Внутри этих текстовиков отдельные узлы можно комментировать, поставив перед адресом знак #. К примеру, знаем, что один из серверов сейчас на обслуживании, так чтоб пингер не верещал почем зря - комментируем эту строку в файле.
Если нужно что-то добавить (либо в какой-то файл, либо просто новый файл подключить) - просто добавляем и сохраняем. Перезапускать скрипт не требуется.

Из нерешенных пока проблем.
1. Скрипт этот запускать нужно через ярлык в -sta режиме консоли. По дефолту оная консоль запускается в -mta, в этом случае обработка кликов работать не будет.
2. Инертность. В тот момент, когда скрипт нарывается на свалившийся хост, пока не завершится попытка пинга - скрипт фактически ничего делать не будет. И опять же не будет обрабатывать клики. То же самое справедливо для паузы в скрипте - особенно заметно, когда скрипт добирается до команды start-sleep -seconds $timeout и выполняет ее.

@музыка: Nicolas Jeandot - Fiery Horse

@настроение: надо думать дальше...

@темы: PowerShell, Scripting