В данном разделе находится общая информация.
В данном разделе находятся примеры различных Linux shell скриптов.
В данном разделе находятся примеры различных скриптов на WSH.
В данном разделе находятся материалы по разным темам.

Правильный CSS!

Для корректного отображения страницы, рекомендуется использовать браузер поддерживающий JavaScript.

Для навигации пользуйтесь боковым меню и кнопками "Описание" и "Подробно".

Linux cкрипт vnstat-report.sh для создания отчетов vnstat (расход траффика) в формате html

Cкрипт vnstat-report.sh разработан для автоматизации процесса генерации отчетов vnstat.

Основные возможности:

  • Создание заданных отчетов в html формате;
  • Создание index.html со списком созданных отчетов;
  • Запуск скрипта может осуществляется как в ручном режиме, так и в планировщике заданий.

Пример cкрипта vnstat-report.sh для создания отчетов vnstat (расход траффика) в формате html

(Скачать файл можно будет здесь. ЗЫ Не тыкать! Жать правой кнопкой: сохранить ссылку как...)

Условия:

  • Установлен пакет vnstat версии 1.7 или выше и заданы настройки в /etc/vnstat.conf;
  • Создан каталог для отчетов и указан в скрипте, например SaveDir="/srv/www/htdocs/vnstat";
  • Указаны требуемые отчеты в скрипте, например Query="days weeks months null"
  • Указан требуемый вид отчета в скрипте, например Vid="png"

Текст:

#!/bin/sh
#
# vnstat-report.sh
# Report generate script for vnstat
# Version: 1.1
# Require: vnstat >= 1.7
# Author: Konstantin Nadezhdin nk_rec@mail.ru
#
# По умолчанию отчет выводится на экран, поэтому укажем перенаправление
SaveDir="/srv/www/htdocs/vnstat"

# Расширение файла отчета
Ext="html"

# Вид отчета (html png)
Vid="png"

# Отчетов доступно: hours days months weeks top10 short
Query="days weeks months null"

# Исполняемые файлы
VNSTAT=/usr/bin/vnstat
VNSTATI=/usr/bin/vnstati

# Все остальные параметры будут считаны по умолчанию из конфига /etc/vnstat.conf

# Проверка каталога
if [ ! -d $SaveDir ]; then
        echo "Report error! Check SaveDir=\"$SaveDir\" in $0"
        exit
fi

# Проверка исполняемых файлов
if [ ! -x $VNSTAT ]; then
        echo -e "Report error! Not found $VNSTAT\nCheck VNSTAT in $0"
        exit
fi
if [ ! -x $VNSTATI -a "$Vid" = "png" ]; then
  echo -e "Report error! Not found $VNSTATI\nCheck VNSTATI in $0"
  exit
fi

# Ключи доступных отчетов (html и png):
#   -h,  --hours    show hours
#   -d,  --days     show days
#   -m,  --months   show months
#   -w,  --weeks    show weeks (только для html)
#   -t,  --top10    show top10
#   -s,  --short    use short output (только для html)
#   -s,  --summary  output summary (только для png)

# Неиспользуемые параметры (html и png):
#   -q,  --query    query database (только для html)
#   -u,  --update   update database (только для html)
#   -i,  --iface    select interface (default: eth1)
#   -?,  --help     short help
#   -v,  --version  show version
#   -tr, --traffic  calculate traffic (только для html)
#   -l,  --live     show transfer rate in real time (только для html)
#   -hs, --hsummary    output horizontal summary with hours (только для png)
#   -vs, --vsummary    output vertical summary with hours (только для png)
#   -nh, --noheader    remove header from output (только для png)
#   -ne, --noedge   remove edge from output (только для png)
#   -r,  --rate     show hours with rate (только для png)
#   -o,  --output   select output filename (только для png)
#   -c,  --cache    update output only when too old (только для png)
#   -D,  --debug    show some additional debug information (только для png)
#   --config     select used config file (только для png)
HeaderIn="<html>\n<head>\n<META http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n</head>\n<body>\n"
HeaderOut="</body>\n</html>\n"

# Создаю index
echo -e "$HeaderIn" > $SaveDir/index.$Ext
echo -e "<h1>Доступны отчеты:</h1>\n" >> $SaveDir/index.$Ext

for i in $Query; do
  case $i in
     days)
    Q="-d"
    H1="по дням"
    ;;
     weeks)
                Q="-w"
                H1="по неделям"
                ;;
           months)
                Q="-m"
                H1="по месяцам"
                ;;
           hours)
                Q="-h"
                H1="по часам"
                ;;
           top10)
                Q="-t"
                H1="TOP10"
                ;;
           short)
                Q="-s"
                H1="сокращенный"
                ;;
           null)
                Q=""
                H1="общий"
                ;;
           *)
                echo "Report error! Check Query=\"$Query\" in $@." >> $SaveDir/index.$Ext
                # Закрываю index аварийно
                echo -e "$HeaderOut" >> $SaveDir/index.$Ext
                exit
                ;;
        esac
        echo -e "$HeaderIn" > $SaveDir/$i.$Ext
        echo -e "<h1>Отчет $H1</h1>\n<a href=\"/vnstat\">Вернуться к списку отчетов</a><br>" >> $SaveDir/$i.$Ext
        if [ "$Q" != "-w" ]; then VidR=$Vid; else VidR="html"; fi
        case $VidR in
           html)
                StringVid="Отчет $H1 (текстовый)"
                echo -e "<pre>" >> $SaveDir/$i.$Ext
                $VNSTAT $Q >> $SaveDir/$i.$Ext
                echo -e "</pre>" >> $SaveDir/$i.$Ext
                ;;
           png)
                if [ "$Q" = "" ]; then Q="-s"; fi
                StringVid="Отчет $H1 (графический)"
                $VNSTATI $Q -o $SaveDir/$i.png
                echo -e "<img src=\"$i.png\" alt=\"Отчет $H1\">" >> $SaveDir/$i.$Ext
                ;;
        esac
        echo -e "$HeaderOut" >> $SaveDir/$i.$Ext

        # Добавляю ссылки в index
        echo -e "<a href=\"$i.$Ext\">$StringVid</a><br>\n" >> $SaveDir/index.$Ext
done

# Закрываю index
echo -e "$HeaderOut" >> $SaveDir/index.$Ext


	

Rambler's Top100

Yandex.Metrika

Page modification: Птн Сен 10 16:48:12 MSD 2010
Используется Quanta+ 3.5.10 Under the GPL v2 license.