Часто бывает нужно отслеживать некоторые показатели целевого сервера или контролировать ход работы какого-либо сервиса. Все это можно сделать командами, но постоянно вызывать их в консоли – занятие утомительное.
Но есть способ проще, создать специальную страничку в браузере и вывести на нее все необходимые показатели. Причем нам не потребуется устанавливать никакого софта, все можно сделать силами bash.
И в этом нам поможет команда netcat (nc), мы не будем подробно разбирать ее применение, а просто покажем примеры.
Например, мы хотим видеть свободную память:
while true;
do echo -e "HTTP/1.1 200 OK\n\n$(free)" \
| nc -l -k -p 8080 -q 1;
done
Здесь следует обратить внимание на опции -p – порт и q – время в секундах до закрытия соединения, если у вас там выполняется сложная команда, то возможно его придется увеличить.
Таким же образом можно просматривать логи:
while true;
do echo -e "HTTP/1.1 200 OK\n\n$(tail -n 15 logfile)" \
| nc -l -k -p 8080 -q 1;
done
Возьмем задачу немного сложнее, вывести сразу несколько показателей, ок, прямо не выходя из терминала выполним:
cmd1=$(free)
cmd2=$(ss -tpln)
body="$cmd1\n$cmd2"
while true;
do echo -e "HTTP/1.1 200 OK\n\n$body" \
| nc -l -k -p 8080 -q 1;
done
Но если всего этого недостаточно, то вы можете написать скрипт, который будет выводить нужную вам информацию и запускать его нашим однострочным веб-сервером:
while true; do { \
echo -ne "HTTP/1.1 200 OK\r\n"; sh my_script.sh; } \
| nc -l -k -p 8080 -q 1; \
doneПросто? Да. Удобно? Да. И только bash и никаких дополнительных инструментов!
