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