Показаны сообщения с ярлыком shell. Показать все сообщения
Показаны сообщения с ярлыком shell. Показать все сообщения

25 авг. 2010 г.

AACSource - сорс клиент для IceCast2

Более двух лет назад, работал на местном радио.
Директор поставил задачу транслировать эфир радио в интернет в формате AAC.

После долгих поисков бесплатного свободного сервера транслирующего поток в формате AAC, решено было самостоятельно написать сорс-клиент для IceCast2.

За основу был взят собственный сорс-клиент IceCast в части формата взаимодействия с сервером.
Поскольку на тот момент у меня небыло опыта компилирования Си-кода под линукс, а также опыта написания системных утилит, пришлось писать на Shell.

Итак, по просьбам некоторых коллег, представляю исходники моего "безобразия" по имени AACSource:
Срипт запуска
Конфигурационный файл
Собственно сам AACSource

9 апр. 2009 г.

Vnstat - смотрим статистику через веб

Итак, vnstat настроен и собирает статистику.

Не всегда удобно заходить на консоль сервера только для того чтобы посмотреть статистику. Иногда нужно предоставить доступ третьим лицам, а консольный доступ давать не хотелось бы.

Проблема решается написанием небольшого скрипта для вывода статистики в веб.

Исходим из того что веб-сервер у нас уже установлен и настроен, дело за малым - написать скрипт!

Сервер линуксовый и чтобы не тянуть лишних зависимостей за скриптом, пишем на Shell:


#!/bin/sh

INTERFACES="LAN:eth0 WAN:eth1 DMZ:eth2"

echo "Content-Type: text/html; charset=utf8 \n\n";
echo '<HTML><head><link rel="stylesheet" href="/style.css" type="text/css" /></head>';
echo "<BODY>";

# evalute variables
for int in `echo ${INTERFACES} \
| sed -e 's/ /\n/g'`;
do
int_name=`echo ${int} | cut --delimiter=: --fields=1`
intf=`echo ${int} | cut --delimiter=: --fields=2-2`

echo "<p><h2>${int_name} interface (${intf})</h2>"
echo '<pre class="tab1">'
vnstat -q -d -i ${intf}
echo "</pre></p>"

done;


Переменная INTERFACES определяет пары "Название интерфейса"-интерфейс по которым необходимо выводить статистику.

Размещаем этот скрипт на сервере, где снимаем статистику с интерфейсов, и настраиваем веб-сервер.



7 апр. 2009 г.

Считаем трафик на интерфейсах сервера

Дано:
Почтовый сервер на базе Ubuntu 8.10
Четыре сетевых интерфейса

Необходимо:
Считать трафик на каждом интерфейсе, вести статистику.

Решение:
vnstat - маленький консольный пакет, который считает трафик на указанных интерфейсах и не загружает систему. Статистика считается отдельно для каждого интерфейса, трафик по ip-адресам и портам не делится. Статистика выводится по запросу с детализацией по часам, дням, неделям и тд.

Хранится статистика в файлах в каталоге /var/lib/vnstat.
Занимает места мало - у меня за три дня работы 4кб для каждого интерфейса, итого 12кб для трех наблюдаемых интерфейсов.

Устанавливаем vnstat:
#apt-get install vnstat

Инициализируем базу данных для каждого необходимого интерфейса:
#vnstat -u -i eth0
#vnstat -u -i eth1
#vnstat -u -i eth2

Далее необходимо сказать vnstat запустить мониторинг интерфейса.
Это можно сделать путем ifdown/ifup для каждого интерфейса,
либо, если нет желания разрывать соединения выполнить для каждого:
#IFACE=eth${i}
#export IFACE
#/bin/sh -x /etc/network/if-up.d/vnstat

где ${i} порядковый номер интерфейса.

Все, мониторинг готов, теперь по прошествии нескольких минут можно смотреть статистику
#vnstat -q

23 апр. 2008 г.

Скрипт записи эфира онлайн радио (для использования на радиостанциях)

Продолжаю публикацию своих скриптов.

Была поставлена задача записывать эфир собственного онлайн вещания. И хранить записи соответственно нужно часовыми кусками.

Для чего и изготовил этот скрипт.

Зависимости:
1. нужен собственно Shell;
2. для записи http-потока использован wget.

Протестирована работа с сервером IceCast, думаю будет работать и с другими серверами отдающими звук по http.

Формат вещания он ест любой - напрямую сохраняет часовые (или любой другой продолжительности) куски потока на жесткий диск.

На случай обрыва связи предусмотрена логика востановления соединения через пятисекундные интервалы.

Для записи эфира в режиме 24/7 достаточно прописать его запуск в crontab и добавить логику организации файлов в папки (если есть желание конечно ;) ).

У нас собственно складывается по дням, храним записи 40 дней, для чего используется как раз Скрипт удаления старых файлов и папок

Прошу смотреть и ругать ;)

22 апр. 2008 г.

Скрипт удаления старых файлов и папок.

Решил начать публикацию своих скриптов, которые наработал за последние пол года.

Первым выбрал самый маленький, но при этом не менее удобный скрипт для удаления старых файлов/директорий из указанной директории и лимитирования их колличества.

Получился такой своеобразный logrotate.

Удобно когда необходимо хранить определенное количество файлов или директорий и удалять старые чтобы не переполнить диск.

Вот сам скрипт: http://gleb.poljakov.googlepages.com/cleanup.sh