Скачиваем с Rapidshare в консоли и автоматически сбрасываем PPP сессию

Всем привет!

Сегодня я решил выложить свои скрипты для скачивания файлов с Рапиды с помощью wget и с сбросом PPP сессии.

Применение:
Для примера возьмём моего провайдера.
Для выхода в интернет я использую ADSL модем с безлимитным тарифным планом.
При сбросе сессии мне даётся случайный внешний IP адрес.

Идея:
Сделать скачивание с Рапиды через консоль и после каждого скачивания сбрасывать PPP сессию для получения нового IP адреса и не ждать 15 минут.

Оборудование:
Модем у меня StarNet который я успешно перешил в Acorp Lan 120.
Для работы нам потребуется открытый доступ к модему через telnet.
Программа expect, для автоматизации сброса сессии.


Скрипты:

При обрыве соединения ppp0 происходит автоматическое переподключение.
Все скрипты сложить в одну папку.

p1 - Узнаёт PID демона PPPD

Листинг:
Copy Source | Copy HTML

  1. #!/usr/bin/expect -f

  2. log_user 0

  3. spawn telnet 192.168.1.1

  4. expect "BusyBox on router login:" {send "root\r"}

  5. expect "Password:" {send "Admin\r"}

  6. expect "#" {send "ps ax |grep pppd\r"}

  7. log_user 1

  8. send "exit\r"

  9. expect eof



p2 - Убивает PPPD по PID
И модем СРАЗУ автоматически поднимает заново.

Листинг:
Copy Source | Copy HTML

  1. #!/usr/bin/expect -f

  2. set pid [lindex $argv 0]

  3. log_user 0

  4. spawn telnet 192.168.1.1

  5. expect "BusyBox on router login:" {send "root\r"}

  6. expect "Password:" {send "Admin\r"}

  7. expect "#" {send "kill $pid"}

  8. send "exit\r"

  9. expect eof



Поправьте IP модема на свой.

Ещё нам потребуется скрипт DownloadFromRS
Он как раз предназначен для скачивания файлов с Рапиды через консоль, использую wget.

Теперь нам нужно отредактировать скрипт DownloadFromRS
таким образом, что-бы после окончания скачивания он выполнял скрип для сброса PPP сессии.

Листинг модифицированного скрипта:
Copy SourceCopy HTML

  1. #!/bin/bash

  2. ################################################

  3. #Purpose: Automate the downloading of files from rapidshare using the free account

  4. #using simple unix tools.

  5. #Date: 14-7-2008

  6. #Authors: Slith, Tune

  7. #Improvements: Please email them to jwhatson@gmail.com

  8. #Post Feedback and comments to http://emkay.unpointless.com/Blog/?p=63

  9. #Notes: To use curl instead of wget use 'curl -s' and 'curl -s -d'

  10. #Version: 1.2 - Rapidshare has added a wait time in between file downloads. On top of your download

  11. #to start. This has been fixed.

  12. #Added a 'kill time' feature. Specify killTime as an hour of the day and if the time is greater than this.

  13. #the script will end. Useful for using cron to start script at offpeak time and killing it when off speak ends.

  14. ################################################

  15. mirror=dt.rapidshare.com;

  16. ## possible mirrors

  17. # cg.rapidshare.com

  18. # l34.rapidshare.com

  19. # tg.rapidshare.com

  20. # gc2.rapidshare.com

  21. # dt.rapidshare.com

  22. # tl2.rapidshare.com

  23. # l32.rapidshare.com

  24. # l3.rapidshare.com

  25. # gc.rapidshare.com

  26. # l33.rapidshare.com

  27. # tl.rapidshare.com

  28. # cg2.rapidshare.com

  29. killTimeEnable=0

  30. killTime=9

  31. function getOutputFromFreeUserSubmit(){

  32. URL=$(wget -q -O - $line | grep "<form id=\"ff\" action=\"" | grep -o 'http://[^"]*');

  33. output=$(wget -q -O - --post-data "dl.start=Free" "$URL");

  34. }

  35. while read line

  36. do

  37. if [[ $killTimeEnable -eq 1 && $(date +%H) -gt $killTime ]]; then exit; fi;

  38. getOutputFromFreeUserSubmit output; #call getOutputFromFreeUserSubmit, result is stored in $output

  39. posibleWaitTime=$(echo "$output" | grep "try again in about" | grep -o "[0-9]\{1,3\}");

  40. if [ -z "$posibleWaitTime" ]; then #check for zero lenght string

  41. echo "No wait time, likely to be the first file you have downloaded in a while";

  42. else

  43. echo "Waiting $[ $posibleWaitTime+1] minutes (in between file download wait)";

  44. sleep $[ $posibleWaitTime+1]m;

  45. getOutputFromFreeUserSubmit output; #Now we have waited we will try again...

  46. fi

  47. time=$(echo "$output" | grep "var c=[0-9]*;" | grep -o "[0-9]\{1,3\}");

  48. ourfile=$(echo "$output" | grep "document.dlf.action=" | grep -o "http://[^\"]*$mirror[^\\]*");

  49. echo "Waiting $time secs for download of $ourfile";

  50. sleep $time;

  51. wget $ourfile;

  52. ./p1 | grep pppd | grep -v grep | awk '{print $1;}' | xargs ./p2;

  53. sleep 5;

  54. done < input.txt



Осталось сделать файл исполняемым, закинуть нужные ссылки в файл input.txt и запустить скачивание.
Все скрипты должны лежать в одной папке.
Всё очень просто и эффективно.

PS.  Так-же можно сделать обрыв VPN соединения и т.д
Динамический IP - это круто!

Источник:
Статья про скачивание с Рапиды.

Прошивка и обновления GPS навигаторов на базе платформы OS82C (в качестве примера)

Всем привет!

Решил написать у себя в блоге всю информацию о своём навигаторе, которую мне удалось найти и узнать.

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

Подробнее о нём Вы можете почитать в моём предыдущим посте. Там же есть ссылка на магазин, где он продаётся.

Я покажу Вам как перепрошить, обновить и восстановить Ваш GPS навигатор, приступим:

Внимание: Любое неосторожное действие может убить Ваш GPS
Хотя восстановить устройство в большинстве случаев можно прямо дома банальной перепрошивкой.
Все файлы и инструкции смотрите ниже.

Начнём с прошивки:

Оригинальная заводская прошивка лежит ТУТ
Нужно файл OSxxx.img переименовать в OS82C.img и положить на карту памяти, после чего перезагрузить аппарат.
Оригинальная оболочка лежит ТУТ

На данный момент существует несколько версий прошивки для данного аппарата.
Последняя на текущий момент с английским интерфейсом лежит ТУТ Версия 7DA82C.YF.F.2.26

После скачивания распаковать архиватором и поместить файлы в корень Вашей карты памяти, размером не более 2-х Гигабайт

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

Из известных глюков в этой прошивке:

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

Ещё есть последняя прошивка.
Скачать можно ТУТ

Версия 7DA82C.YF.F.3.12 (7DB82C.YF.F.3.12)

Из минусов - всё меню становится на китайском языке, но клавиатура на английском.
Лично мне - не критично, всё и так понятно.

Из плюсов :
Опять починили установку своих клавиатур, которую они поломали в 7DA82C.YF.F.2.26
Русская клавиатура устанавливается, проверил.
Остальное не смотрел, наверное ещё чего добавили.
Прошивка стала толще на 10 метров.

При прошивке забэкапте содержимое ResidentFlash2

Файлы в архиве:
* GPS.pak
* os82c.img
* Updater.exe
* updater.ini
* YFAutoRun.inf
* YFGo2CE.bld

Из нового:

Появилась система Early warning radar system
Гугл сказал что это система обнаружения радаров, которыми ДПС'ники сканируют скорость машины.
К сожалению проверить я это не могу, машины нету.
Но картинки в проге со всякими ментами, светофорами.
Возможно и вправду китайцы что-то там подкрутили.

Она находитcя в папке ResidentFlash2 и называется Alarm
Интерфейс весь на китайском.
Запускается при старте системы и имеет 98 уровень запуска.
На рабочем столе появляется стрелочка, через неё прога и запускается.

Я её забэкапил на карту памяти и запуск удалил из реестра.

После прошивки выполните Hardware Test
Затем подцепить к ПК с установленным MS ActiveSync

Скачать Registry Workshop

И с помощью него изменить параметр:
HKEY_LOCAL_MACHINE\init => Launch50=YFLoader.exe
Меняем значение YFLoader.exe на explorer.exe

Файл os82c.img удаляем, что-бы аппарат не перепрошивался постоянно.

Перезагружаем устройство, восстанавливаем содержимое ResidentFlash2.

Затем нужно сбросить реестр:

Сам реестр храниться в разделе \regfat
1) Переходим в панель управления => Storage Manager
2) Ищем самый маленький раздел на DSK1
У меня это оказался раздел Part03 (0x11)
Отмонтируем его, форматируем и монтируем обратно.
3) Перезагружаем устройство.

После перезагрузки вылезло какое-то китайское окно с одной кнопкой, после нажатия на неё там что-то ещё обновилось.

Все файлы можно после удалить, если хотите пользоваться разлоченным навигатором, то оставьте файл YFGo2CE.bld

Эта прошивка стоит на текущий момент на моём навигаторе, мне нравиться.

Обновляем системную оболочку:

Последняя на текущий момент версия 4.0.11.24
Качаем последнюю версию ТУТ

Я залил полный комплект, но в нём прошивка старая - 7DA82C.YF.F.2.25 (Последняя - 7DA82C.YF.F.3.12)

В этой оболочке отсутствует поддержка Bluetooth.
Данная проблема решается наложение патча.
После обновления файлы мз архива нужно закинуть в папку /residentflash2/YFAP30/skins/BlackGold_NavReady_CMMB

В новой оболочке очень много изменений:
ALARM (обнаружение радаров)
DTV (Цифровое телевидение)
WinCE (Выход в Windows CE, т.е разлочка)
Office (Word, Excel, PowerPoint, PDFView, ImageViewer)
NES (Эмулятор Денди)
И ещё много чего интересного.

Из минусов:
Нет Русского языка, только Китайский и Английский

Для тех кто решил прошить:

1) В корень карты памяти кидаем файл YFAPP.wzp
Так-же нам потребуется папка ResidentFlash2 из скаченного комплекта.

2) Перезапускаем аппарат и начнётся процесс обновления оболочки (нужно нажать левую кнопку в окне подтверждения)
Если у Вас разлоченный аппарат то Вам нужно запустить оболочку в ручную, она предложит обновиться.

3) После обновления жмём меню WinCE и попадаем в систему, копируем файлы из папки ResidentFlash2 с карты памяти в раздел ResidentFlash2 на устройстве.

4) Удаляем из карты памяти файл YFAPP.wzp и папку ResidentFlash2 и перезапускаем устройство.

Идём дальше:

Сменим заставку на устройстве:

1) Нужно подготовить картинку размером 480x272 pixels.
2) Сохранить её в BMP формате и 24-bit цветом.
Имя задать такое: "Logo82c.bmp".
3) Скопировать картинку в корень карты памяти и перезапустить аппарат, картинка прошьётся в устройство
4) Удалить картинку с карты памяти.

Сброс реестра и форматирование аппарата:

1) Создайте файл Yformat.fmt
2) В текстовом редакторе запишите туда следующий код: 666F726D6174
3) Скопируйте файл в корень карты памяти
4) Перезапустите аппарат
5) Дождитесь окончания форматирования
6) Вы увидите такое сообщение "No OS on SD found" или что-то похожее
7) Выключите аппарат
5) Удалите файл Yformat.fmt из картоки
6) Скопируйте прошивку на карту памяти и прошейте аппарат

Удачных экспериментов.

Источники:
Как всегда, форум 4pda на котором я опубликовал все эти инструкции.
По всем вопросам восстановления и прочим навигаторам писать туда.

Автоответчик и приём факсов в ОС Linux с помощью старого Voice модема

Всем привет!

Завалилось у меня тут несколько Voice модемов.
Два Zyxel Omni 56k com-port и один Acorp Sprinter 56k USB (софт модем)

Я уже про них давно забыл, со времён когда ещё сидел в интернете по Dial UP
Но на этой недели их спокойная и безмятежная жизнь на полке закончилась.

Мне пришла в голову очередная идея:
Сделать автоответчик для дома.

Первое, с чего я решил начать, так это подключение самого модема к серверу.
Для начала решил попробывать завести Soft modem Acorp sprinter 56k USB
Пересобрал ядро, и принялся искать драйвера.
Для начала заглянул на страничку www.linmodems.org и скачал там скрипт scanModem
Он сам определить Ваш модем и предложит скачать подходящий драйвер.
Мне же он предложил подгрузить модуль ядра и попробывать снова.
Пересобирать ядро и возиться с драйверами мне было неохота и я решил поставить Zyxel Omni 56k с COM-port'ом

После подсоединения модема к серверу у меня возник вопрос:
Как же проверить его работоспособность?

Погуглив я наткнулся на программу minicom
Она позволяет Вам общаться с устройствами через COM port
Но почему-то она так и не смогла увидеть мой модем.
Тогда я решил послать AT команды напрямую через COM port
Делается это так:

Для начала ознакомимся с таблицей нумерации COM портов





































Serial PortDOSLinuxI/O PortIRQ
FirstCOM1/dev/ttyS003F84
SecondCOM2/dev/ttyS102F83
ThirdCOM3/dev/ttyS203E84
FourthCOM4/dev/ttyS302E83

По скольку мой модем подключён к первому COM порту я послал на него следущую команду:
echo atdt3333333 > /dev/ttyS0

Эта команда говорит модему сделать звонок на номер 3333333

Услышав щелчок модема я успокоился и понял что модем работает и воспринимает команды.
Но что-то он ни как не хотел работать.

После 2-х часов ковыряний выяснилось что IRQ 4 (прерывание) на котором он работает был занят.
Пришлось подключать сервер к монитору и в BIOS выключить LPT порт.
Как альтернативное решение:  можно было просто сменить IRQ в BIOS.

После этого я установил программы wvdial и с помощью неё окончательно убедился в работоспособности модема.

Следующим шагом был шаг:  Выбор ПО

Поскольку это была лишь идея, и я да же не знал, есть-ли такая программа вообще, то я решил спросить у народа.

К сожалению в моём Twitter'e такую программу мне никто не подсказал и пришлось искать её самому.
Немного погуглив я сначала наткнулся на программу vgetty и на её потомка mgetty
Быстренько нашёл её в своём репозитории и запустил процесс установки:
USE="fax" emerge mgetty

Спустя некоторое время всё скомпилировалось и я перешёл непосредственно к настройке программы.
Правим /etc/mgetty/voice.conf

port ttyS0 -- Последовательный порт
rings 3 -- Три звонка и поднимается трубка
answer_mode voice:fax:data -- Порядок ответа голос:факс:данные
rec_max_len 30 -- Задаем максимальную длину сообщения у меня 30 секунд.
rec_min_len 2 -- Минимальная длинна сообщения.
port_speed 115200 -- Устанавливаем скорость порта.
backup_message standard.rmd -- Файл приветственного сообщения.
phone_owner root -- Владелец файлов сообщений (root).
phone_group voice -- Группа файлов сообщений (voice).
phone_mode 0660 - Права для файлов сообщений (-rw--rw---).

В /etc/inittab пишим

# starting vgetty
S1:2345:respawn:/usr/sbin/vgetty ttyS0

В принципе уже всё готово.

Осталось записать файл приветствия для автоответчика.
Это можно сделать двумя способами:

1) Записать с помощью микрофона

Подключаем микрофон, даём команду и говорим:
sudo /usr/bin/vm record -m -l ttyS0 -v standard.rmd

Результат можно прослушать так:
rmdtopvf -b standard.rmd | pvftowav > temp.wav && play temp.wav

2) Скачать запись автоответчика в интернете и сконвертировать в формат rmd для своего модема.
Я пошёл именно таким путём

a) Конвертация wav или mp3 файла для последующей обработки

Для этого нам потребуется дополнительная программа - sox

Допустим мы скачали сообщение для автоответчика - message.wav
Тогда конвертация будет выглядеть так:
sox message.wav -r 9600 -c 1 message_new.wav

Если Вы используете mp3 файл, то добавьте ключ -t mp3
sox -t mp3 message.mp3 -r 9600 -c 1 message_new.wav

б) Конвертация wav файла в pvf файл
wavtopvf message_new.wav message_new.pvf

в) Конвертация pvf файла в rmd файл для Вашего типа модема

Для этого нам потребуется утилита pvftormd

Даём следующую команду pvftormd -L и выбираем свой или похожий модем из списка.

Затем выполняем конвертацию.
Конкретно для моего модема команда выглядит так:
pvftormd ZyXEL_Omni56K 4 message_new.pvf standard.rmd

г) Файл standard.rmd помещаем в папку с сообщениями.
По умолчанию она находится тут:
/var/spool/voice/messages/

После этого Вы уже можете звонить себе и проверять результат.

Остался только один интересный вопрос:
Как забирать оставленные сообщения?

Существует несколько способов:

1) Сделать сетевую папку
2) Заходить на сервер и слушать их от туда через скрипт
3) Установить Flash плеер на сервер и через браузер прослушивать сообщения (Придумал сам)

Скрипты для конвертации сообщений в WAV или MP3 я выложу походу описания.

Рассмотрим каждый из них:

1) Тут всё просто, ставите Samba или NFS сервер и открываете доступ в сеть

2) Скрипты, я их честно не проверял, а просто скопировал.

Прослушивание сообщений:
Copy SourceCopy HTML

  1. #!/bin/bash

  2. #--------------------------------

  3. MINC=/var/spool/voice/incoming/

  4. MDIR=/home/$USER/msg

  5. #--------------------------------

  6. clear

  7. case "$1" in

  8. -h|--h|--he|--hel|--help)

  9. echo "
    Copyringts (c) Andrey G-v 2007

    Options:
    -h, --help     Показать справку и выйти
    -v, --version  Показать информацию о версии

    "

  10. exit 1

  11. ;;

  12. -v|--v|--ve|--ver|--vers|--versi|--versio|--version)

  13. echo "ubdate 0.1 "

  14. exit 1

  15. ;;

  16. -*)

  17. echo 1>&2 "$0: Unknown \`$1' option"

  18. echo 1>&2 "Try \`$0 --help' for more information"

  19. exit 1

  20. ;;

  21. esac

  22. clear

  23. echo -en "       \33[33m
    ==============================
    1) Новые сообщения:
    2) Слушать старьё:
    3) Выход:
    ==============================
    Выберите действие :# \33[0m"

  24. read num

  25. case $num in

  26. 1)

  27. if !( [ -d $MDIR ] ); then

  28. mkdir $MDIR ;

  29. fi

  30. cd $MINC

  31. for i in `ls -x1 *.[Rr][Mm][Dd] 2> /dev/null`; do

  32. MSDATE=$(date -r $i +Msg-%d%m%y-%H%M%S.wav)

  33. rmdtopvf -b $i | pvftowav > $MDIR/$MSDATE

  34. done

  35. cd $MDIR

  36. for i in `ls -x1 *.[Ww][Aa][Vv] 2> /dev/null`; do

  37. echo "Играю "$i"..."

  38. play $i

  39. done

  40. rm -f $MINC/*.[Rr][Mm][Dd]

  41. ;;

  42. 2)

  43. clear

  44. cd $MDIR

  45. LSDIR=$(ls -x1 *.[Ww][Aa][Vv] 2> /dev/null)

  46. echo -en "       \33[33m
    ==============================
    $LSDIR
    ==============================
    Имя фаила :# \33[0m"

  47. read PLFILE

  48. #ls -x1 *.[Ww][Aa][Vv]

  49. echo "Играю "$PLFILE"..."

  50. play $PLFILE

  51. ;;

  52. 3)

  53. clear

  54. echo "Не туда попал? :)"

  55. sleep 3

  56. ;;

  57. *)

  58. clear

  59. echo "ОШИБКА! НЕ ВЕРНЫЙ АРГУМЕНТ! :("

  60. exit 1

  61. ;;

  62. esac



Скрипт для уведомления о новых сообщениях на Ваш e-mail :
Copy SourceCopy HTML

  1. #!/bin/bash

  2. MESDIR=`ls /var/spool/voice/incoming/*.[Rr][Mm][Dd] 2> /dev/null | wc -l`

  3. if [ $MESDIR != "0" ]; then

  4. echo Для Вас есть $MESDIR сообщение\(ний\). | mail -s "Есть сообщения на автоответчике" $USER # Имя пользователя

  5. fi



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

3) Прослушиваем сообщения через Flash плеер прямо в браузере

Для начала нам нужно скачать подходящий Flash плеер.
Я остановил свой выбор на ЭТОМ
Его самый главный плюс - он автоматически генерирует playlist из mp3 файлов в папке.

Скачиваем, распаковываем и настраиваем свой WEB сервер.
Сам же плеер настраивать практически не нужно.
Я просто скопировал его себе в htdocs, удалил папку mp3
Затем сделал символическую ссылку папки /var/spool/voice/incoming в папку с плеером, и переименовал ссылку в mp3

Ещё пришлось дать права на исполнения на некоторые папки.

Затем я написал скрипт, для перегона файлов автоответчика rmd в mp3 формат:
Copy SourceCopy HTML

  1. #!/bin/sh

  2. find /var/spool/voice/incoming -type f -mtime +30 -delete #удаляю файлы старше 30 дней

  3. cd /var/spool/voice/incoming

  4. for i in `ls -x1 *.[RrWw][MmAa][DdVv] 2> /dev/null`; do

  5. dm_date=$(date -r $i +Msg-%d%m%y-%H%M%S)

  6. /usr/bin/rmdtopvf -b $i _tmp.pvf > /dev/null 2>&1

  7. /usr/bin/pvftowav _tmp.pvf $dm_date.wav > /dev/null 2>&1

  8. /usr/bin/sox -t wav $dm_date.wav -t mp3 $dm_date.mp3 > /dev/null 2>&1

  9. done

  10. rm -f *.[Pp][Vv][Ff]

  11. rm -f *.[Rr][Mm][Dd]

  12. rm -f *.[Ww][Aa][Vv]



Его запуск я добавил в Cron с интервалом в 5 минут.

А если открыть WEB сервер в интернет, то можно слушать сообщения где угодно и когда угодно.
Кому интересно, тот может поднять свой Dial IN сервер и стать провайдером модемного интернета :)

Источники:

Настройка телефонного автоответчика под Linux
Настройка vgetty для автоответчика+PPP

Получаем число непрочитанных писем Gmail в статус баре GNU Screen

Всем привет!

Попалась на глаза интересная статейка: Show Unread Gmails in Gnu Screen Status Bar

Решил перевести и разместить у себя в блоге:

Итак, нам потребуется установленный GNU Screen и Wget

Правим свой файл .screenrc
caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= | %1` Unread |"

backtick 1 60 60 /home/Ваша_home_директория/bin/get_gmail

get_gmail - Это скрипт для получения почты, листинг смотрите ниже.

Сейчас создадим необходимые директории
mkdir ~/bin
cd bin/

В этом каталоге создаём скрипт get_mail
Copy SourceCopy HTML

  1. #!/bin/bash

  2. gmail_login="username"

  3. gmail_password="password"

  4. fetch="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - https://${gmail_login}:${gmail_password}@mail.google.com/mail/feed/atom --no-check-certificate )"

  5. line="$(echo "$fetch" | grep 'fullcount')"

  6. unread="$(echo "$line" | sed "s/<fullcount>\(.*\)<\/fullcount>/\1/")"

  7. if [ -z "$unread" ]; then

  8. echo “!”

  9. else

  10. echo$unread

  11. fi



Осталось дать права на запуск
chmod 700 get_gmail

В принципе, это написано в качестве примера использования.
Остальное всё зависит от Вашей фантазии.

Можно например зациклить выполнение проверки писем.
Copy SourceCopy HTML

  1. #!/bin/bash

  2. gmail_login="username"

  3. gmail_password="password"

  4. while [ 1 ]; do

  5. fetch="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - https://${gmail_login}:${gmail_password}@mail.google.com/mail/feed/atom --no-check-certificate )"

  6. line="$(echo "$fetch" | grep 'fullcount')"

  7. unread="$(echo "$line" | sed "s/<fullcount>\(.*\)<\/fullcount>/\1/")"

  8. if [ -z "$unread" ]; then

  9. echo “!”

  10. else

  11. echo$unread

  12. fi

  13. sleep 10m

  14. done



Затем если Вы как я используете оконный менеджер dwm, добавить это в файл ~/.xinitrc.
В скрипте после done нужно поставить знак & (done &)
И получать число непрочитанных писем в его статус баре, с интервалом 10 минут.

Как вариант, можно поправить строчку  mail.google.com/mail/feed/atom накакой-нибудь другой feed и получать письма с определённого лэйбла.