Оригинальная статья: pipitas. Перевод: seas.
Вот набор задач, ежедневно встающих перед многими из нас…. Устанавливаешь Laserjet драйвер для новенького принтера Lexmark, который прикупил твой босс, но не знаешь, пришел-ли он с установленным PostScript модулем или поддерживает только PCL? Вдруг нужно узнать, что светится на LCD дисплее на принтере в том конце холла, но слишком занят или лень сходить и посмотреть. Тебе опять звонит кто-то и надоедает: “Мой HP опять заклинило; я вытащил бумагу, но эта красная лампочка все равно постоянно мигает!”?
Содержание |
scli – это инструмент для запуска “командного интерфейса SNMP”. Я очень часто использую эту малоизвестную консольную утилиту для самых разнообразных задач.
scli подсоединяется к любому, поддерживющему SNMP, сетевому узлу и позволяет интерактивно “просматривать” параметры, сохраненные в базе данных устройства (так называемом, ”MIB”, База Данных Управления устройством). Я, главным образом, использую эту утилиту для управления принтерами (поэтому и выбрал такие примеры), но scli может работать и со многими другими устройствами: мостами, маршрутизаторами, шлюзами, свичами, серверами и много еще чем. (Так-же имеется неинтерактивный режим для поддержки скриптов).
scli не только предоставляет вам более дружественный интерфейс для запуска SNMP команд, чем тот-же snmpwalk, он так-же форматирует возвращаемый результат в более удобочитаемый вид. Вы можете запускать scli в интерактивном режими (после чего вам откроется его собственный интерпретатор и приглашение для ввода команд) или для запуска одной единственной команды, при этом возвращая результат в стандартный командный интерпретатор (что делает этот режим удобным для написания скриптов).
По умолчанию, scli возвращает обычное текстовое ASCII сообщение. Для получения результата в XML виде вы можете указать “–xml” ключ. (XML может быть полезен если вывод дальше будет обрабатываться другой программой, а не читаться человеком).
Предположим, сетевой узел, который вас интересует доступен по ip-адресу 192.168.23.45. Запускаем программу вводя
scli 192.168.23.45
поддерживающие SNMP-протокол, устройства, обычно по умолчанию поддерживают “public” в качестве их “community name”, и если scli не видит community name в командной строке – пытается использовать “public”.
Вы спросите, что значит это community name? По сути – это очень слабый метод авторизации; в общем – пароль, общий для всех пользователей, но сами пользователи даже не различаются по имени. Более того, SNMP версии 1 даже не шифрует community name при передаче по сети! Да, это очень плохой метод защиты для большинства устройств, но это то, как сейчас, в реальной жизни, устроен SNMP мир вокруг нас. (SNMP v2 и v4 уже лучше, но еще не так распространены в выпускаемых устройствах).
Если все-же ваше устройство не такое открытое и вам посчастливилось узнать кодовое слово (community name), используйте его как еще один аргумент в командной строке:
scli 192.168.23.45 "community-name"
При удачном подключении, scli покажет вам приглашение его внутреннего интерпретатора:
scli >
Он сейчас в интерактивном режиме. Наберите help, чтобы увидеть доступные команды. Или show system info для того, чтобы узнать кто производитель устройства, и как называется модель. Я уверен, вы быстро найдете и более интересные для себя запросы.
У scli имеется очень хороший встроеный командный auto-completion (используя клавишу [TAB]). Наберите show system [TAB] [TAB] чтобы получить список доступных подкоманд, отличных от “info” что мы уже использовали. Увидите возможные варианты: devices info mounts processes storage. Это значит show system storage – еще один возможный вариант команды. Попробуйте!
Конечно, вы можете использоват show system и так [не вводя ни одной из подкоманд]. Это заставит scli запустить все эти подкоманды разом и вернуть сумму всех результатов.
То-же работает и show [TAB] [TAB] или show. Запустите и увидите полную SNMP информацию для устройства с которым вы сейчас работаете.
Несколько подсказок, которые помогут вам освоиться с scli:
scli доступен в Debian (stable, testing и unstable все содержат версию 0.2.12-2, тогда как experimental - 0.3.0-0.1). Если вы вдруг используете версию 0.3.0, не упустите возможность просканировать всю вашу сеть на наличие SNMP устройств. В интерактивном режиме (scli >), введите
run scli scan
Или запустите scli в командном режиме из shell, и введите:
scli -c ‘run scli scan ’
(адресом может быть что-то вроде 192.168.0.0/24 или 10.162.4.0/22). Эта команда сканирования одна из новых, появившихся в 0.3; она выведет список всех SNMP узлов, которые откликаются на кодовое слово (community name) “public”. Возможно, вы захотите закрыть эту дыру в безопасности…
scli написан профессором Juergen Schoenwaelder, одним из тех кто придумал SNMP протокол и написал RFC, описывающий его.
P.S.: Если вы все-же действительно хотите знать ответы на вопросы в начале – Ok, вот они:
Поддерживает-ли мой новый принтер PostScript?
kurt:~> scli 192.168.23.45 -c "show printer interpreters" | grep Description Description: Lexmark PCL Description: Lexmark PostScript Description: Lexmark XL Description: Lexmark PJL Description: Lexmark Automatic Language Switching Description: Lexmark NPAP
Таким образом, если видим “NPAP” — тогда и PostScript поддерживается. Будет просто напечатать на нем из CUPS…
Что сейчас светится на LCD дисплее на удаленном принтере?
kurt:~> scli 192.168.23.45 -c "show printer display" PRINTER LINE TEXT 1 1 No Paper: Tray 4
Уууу, и вы еще спрашиваете почему эта штуковина не пашет с 2 часов…
Почему эта красная мигалка не прекращает мигать на том принтере?
kurt:~> scli 192.168.23.45 -c "show printer covers" Printer: 1 Cover: 1 Description: Rear Door Status: coverOpen Printer: 1 Cover: 2 Description: Top Door Status: coverClosed
Ну, это просто. Просто скажите тому чуваку “Закрой крышку сзади у принтера и будет тебе счастье.”