Более двух лет назад, работал на местном радио.
Директор поставил задачу транслировать эфир радио в интернет в формате AAC.
После долгих поисков бесплатного свободного сервера транслирующего поток в формате AAC, решено было самостоятельно написать сорс-клиент для IceCast2.
За основу был взят собственный сорс-клиент IceCast в части формата взаимодействия с сервером.
Поскольку на тот момент у меня небыло опыта компилирования Си-кода под линукс, а также опыта написания системных утилит, пришлось писать на Shell.
Итак, по просьбам некоторых коллег, представляю исходники моего "безобразия" по имени AACSource:
Срипт запуска
Конфигурационный файл
Собственно сам AACSource
Показаны сообщения с ярлыком shell. Показать все сообщения
Показаны сообщения с ярлыком shell. Показать все сообщения
25 авг. 2010 г.
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
Почтовый сервер на базе 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 дней, для чего используется как раз Скрипт удаления старых файлов и папок
Прошу смотреть и ругать ;)
Была поставлена задача записывать эфир собственного онлайн вещания. И хранить записи соответственно нужно часовыми кусками.
Для чего и изготовил этот скрипт.
Зависимости:
1. нужен собственно Shell;
2. для записи http-потока использован wget.
Протестирована работа с сервером IceCast, думаю будет работать и с другими серверами отдающими звук по http.
Формат вещания он ест любой - напрямую сохраняет часовые (или любой другой продолжительности) куски потока на жесткий диск.
На случай обрыва связи предусмотрена логика востановления соединения через пятисекундные интервалы.
Для записи эфира в режиме 24/7 достаточно прописать его запуск в crontab и добавить логику организации файлов в папки (если есть желание конечно ;) ).
У нас собственно складывается по дням, храним записи 40 дней, для чего используется как раз Скрипт удаления старых файлов и папок
Прошу смотреть и ругать ;)
22 апр. 2008 г.
Скрипт удаления старых файлов и папок.
Решил начать публикацию своих скриптов, которые наработал за последние пол года.
Первым выбрал самый маленький, но при этом не менее удобный скрипт для удаления старых файлов/директорий из указанной директории и лимитирования их колличества.
Получился такой своеобразный logrotate.
Удобно когда необходимо хранить определенное количество файлов или директорий и удалять старые чтобы не переполнить диск.
Вот сам скрипт: http://gleb.poljakov.googlepages.com/cleanup.sh
Первым выбрал самый маленький, но при этом не менее удобный скрипт для удаления старых файлов/директорий из указанной директории и лимитирования их колличества.
Получился такой своеобразный logrotate.
Удобно когда необходимо хранить определенное количество файлов или директорий и удалять старые чтобы не переполнить диск.
Вот сам скрипт: http://gleb.poljakov.googlepages.com/cleanup.sh
Подписаться на:
Сообщения (Atom)
