dap: (Default)

Намедни взялся за дело, которое уже висело в 2do больше года: написал утилиту для сбора статистики использованного трафика от своего Интернет-провайдера (Vesso-Bel). Статистика отдаётся безо всяких авторизаций, но только для ip, принадлежащих провайдеру.

Спасибо, thephilosoft, BrainFuckerlennier-Raiden и все-все-все! =)

Сначала планировал сделать демона на python, но на волне быдлокодинга на баше решил использовать его и не заморачиваться с демонами. Мой сумрачный гений сначала упёрся в wget и написал скрипт с его использованием, но потом я стал искать опции для запиливания его в conky и внезапно открыл для себя cURL — свободную служебную программу командной строки для копирования файлов по различным протоколам с синтаксисом URL. В итоге была написана новая версия без велосипедов с загаживанием /tmp.

Обе версии принимают в качестве аргумента логин и/или параметр --help. В зависимости от исходных данных отдаётся справочная информация, сообщение о неверном логине или статистика в формате Использовано(МБайт) / Осталось (МБайт) | Всего (ГБайт). Если вдруг кто-нибудь захочет его использовать и/или внести пожелания,— милости просим.

Пробежимся по тексту и рассмотрим нюансы. Текстовую строку можно нужно разбивать слешем и началом новой строки (нажатием энтера). Вместо выравнивания пробелами, можно использовать табуляцию . При сравнении аргументы желательно оборачивать в двойные кавычки "". После [ и перед ] пробелы обязательны. При выводе и присваивании значения переменной тоже желательно оборачивать её или содержимое в двойные кавычки. grep -o отображает только то (а не строку, содержащую это), что подпадает под аргумент (например, равно аргументу или удовлетворяет шаблону). $@ соответствует списку параметров запуска скрипта, разделённых пробелами. Из-за политики zsh в отношении разделителей в зет-шелле по умолчанию этот скрипт работать не будет. Нужно разрешить пробелы в качестве разделителя или убрать справку.

Осталось запилить это дело в conky. Поскольку забирать статистику каждые две секунды (такая у меня частота обновления информации) я считаю как минимум странным, стал вопрос в поиске возможности другого интервала обновления для отдельных команд. Таких оказалось целых три: execi, texeci и execpi. Насколько я понял, третья проделывается каждый стандартный интервал обновления, но новый результат отображается только по прошествии заданного промежутка; вторая является вариантом первой, команда обрабатывается в отдельном потоке (для тяжёлых скриптов); а первая является именно тем, что мне нужно. На том и порешил:

Date: 2012-03-11 10:10 pm (UTC)From: [identity profile] dap-darkness.livejournal.com
Трей на простом баше не напишешь. Самый простой вариант: крон + нотифай.

Date: 2012-03-11 10:11 pm (UTC)From: [identity profile] dap-darkness.livejournal.com
В принципе при чём тут конки? Его можно запихнуть хоть в приглашение шелла, хоть куда. Можно повесить нотифай+скрипт на плазмоид типа переключатель-он/оф...

Date: 2012-03-11 10:13 pm (UTC)From: [identity profile] inga nesterovitch (from livejournal.com)
Знаю. Поэтому хотеть не вредно.

January 2016

S M T W T F S
     12
34567 89
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 09:30 pm
Powered by Dreamwidth Studios