Короткая статья о том, как можно сделать скрипт сеанса с telnet сервером в bash.
Для этого нам нужен telnet клиент, screen актуальной версии и облочка bash.
!Внимание! Скрипт ниже делался «на скорую руку». Использование данного скрипта только на свой страх и риск =)
Я не буду рассматривать базовые примеры, однако разберу свой скрипт
Работа с сервером teamspeak 3 через Query порт. Скрипт запускается с параметром, который определяет выводимые данные, что дает ему некую универсальность.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash # Telnet teamspeak remote slots count checker # Bash forever, bitch! cd /z/scripts/ screen -U -d -m -S ts$1 -L telnet 127.0.0.1 10011 # создание сеанса sleep 2s screen -S ts$1 -p 0 -X stuff "login user pass$(printf \\r)" #отправка первых данных screen -S ts$1 -p 0 -X stuff "hostinfo$(printf \\r)" #отправка вторых данных screen -S ts$1 -p 0 -X stuff "quit$(printf \\r)" #завершение сеанса cat /z/scripts/screenlog.0 | grep clients_online | cut -d " " -f $1 | cut -d = $ rm /z/scripts/screenlog. exit |
Здесь на выходе мы получаем число, которое может использовать например zabbix сервер.
Теперь подробнее об инструментах. Я использую screen в фоновом режиме, передавая ему команды как при обычной работе пользователя. Весь вывод пишется в screenlog.0 (благодаря параметру -L). Потом через cat, grep, cut я фильтрую до нужного значения и удаляю лишний файл. Как правило, выполнение такого скрипта занимает не более 3-х секунд. Задержка в 2 сек нужна для уверенности в том, что сервер ответит.
На основе данного скрипта можно создать множество сценариев.