Cgi-snmp.sh — отображение SNMP-статистики.
#!/bin/bash
# CGI script for SNMP statistic
echo Content-type: text/plain
echo ""
LOG_FILE=/var/www/stat/snmp.log
# Show NUM lines
if [ -n "$QUERY_STRING" ]; then
NUM=$QUERY_STRING
else
if [ -n "$1" ]; then
NUM=$1
else
NUM=10
fi
fi
echo "Current statistic:"
tail -n $NUM "$LOG_FILE" | sort -r
#------------------------------------------------------------
Скрипты предполагается размещать в каталогах внутри /var/www,
с использованием для скриптов получения данных каталога /var/www/bin, для веб-интерфейса — /var/www/html, для хранения журналов — /var/www/stat. Для хранения графиков используется каталог /var/www/html/png.
Для запуска скриптов как веб-программ следует разрешить это в настройках lighttpd (расположенных в каталоге /etc/lighttpd/):
– нужно подключить модуль mod_cgi веб-сервера, раскомментировав строку «include "conf.d/cgi.conf"» в файле modules.conf;
– задать секцию параметров вида в подключеном файле конфигурации модуля mod_cgi (conf.d/cgi.conf):
cgi.assign = ( ".pl" => "/usr/bin/perl",
".rrd" => "/usr/bin/rrdcgi",
".sh" => "/bin/bash" )
– и добавить расширения файлов скриптов в параметр
static-file.exclude-extensions в файле lighttpd.conf:
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".sh", ".rrd" )
Изменения настроек вступают в силу после перезапуска lighttpd.
Для обеспечения безопасности системы должны соблюдаться определённые правила выполнения скриптов.
Сбор статистики должен выполняться от имени непривилегированного пользователя. Обычно для подобных задач создаётся отдельный псевдо-пользователь с ограниченными по сравнению с обычными пользователями системы правами. Псевдопользователь не должен иметь возможности удалённого входа в систему и не должен иметь возможности изменения скриптов.
Отображающие информацию скрипты выполняются веб-сервером. Пользователь, под которым работает веб-сервер, не должен иметь возможности записи как в файлы скриптов, так и в файлы логов.
Временные файлы, создаваемые веб-сервером, не должны быть доступны для записи или удаления остальным пользователям системы.
Остальные пользователи системы не должны иметь возможности чтения и записи файлов логов.
Для удобного доступа к различных скриптам в /var/www/html предлагается разместить индексный файл с названием index.html вида:
<html>
<head>
<title>index</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<h1>Текущая статистика</h1>
<ul>
<li><a href="/cgi-local.sh">Простой скрипт статистики локальной системы</a></li>
<li><a href="/cgi-local-html.sh">HTML-скрипт статистики локальной системы</a></li>
<li><a href="/cgi-local.rrd">Выдача графиков статистики локальной системы</a></li>
<li><a href="/cgi-snmp.sh">Простой скрипт статистики интерфейса SNMP</a></li>
<li><a href="/cgi-snmp-html.sh">HTML-скрипт статистики интерфейса SNMP</a></li>
<li><a href="/cgi-snmp-html-table.sh">HTML-скрипт с выводом таблицей статистики интерфейса SNMP</a></li>
<li><a href="/cgi-snmp.rrd">Выдача графиков статистики интерфейса SNMP</a></li>
</ul>
</body>
</html>
Примеры скриптов с построением графиков можно посмотреть на сайте http://edu.cbias.ru