Как стать автором
Обновить

Комментарии 95

Как-то вы странно описание «команд» привели, ибо awk (http://ru.wikipedia.org/wiki/AWK) — это язык такой, который работает с текстом, а не «выкусывает» нужные части…
Я рассказал что делают команды в данном случае, а не для чего они предназначены. Для чего они предназначены можно прочитать в man.
Описал чуть более подробно, чтобы не было подобных вопросов.
НЛО прилетело и опубликовало эту надпись здесь
Все так, только у гугла POP TLS-ный, что накладывает некоторые дополнительные сложности.
Лучше зарегистрировать почту от Mail.Ru и поставить агент. А также получим отличный мессенджер.
Ага, он что, есть под Линукс?
Конечно нет, это же не костыль.
Тогда какой толк упоминать его в блоге «Линукс для всех»?
Очень толсто :) Идите тренироваться на LOR
михо, на ЛОРе он не проживет и минуты — такая толщина туда даже не пролезет.
Надеюсь это было ибо это феерический каммент.
Вот этот?!..


У Google тоже есть свой мессенджер :) Он более открытый: использует стандартный Джаббер протокол, а также позволяет общаться голосом.
И почту тоже проверяет, да.

Но у него менее… хм… попсовый :) интерфейс.
Не такой уж и «стандартный» протокол он использует. Например, Gtalk (сам сервер) меняет название jabber-ресурса клиента. Вообще при общение в связке jabber-сервер <-> Gtalk периодически возникают проблемы. Но в целом, да, это получше, чем велосипед от mail.ru.
Есть немного. Но по моему опыту проблемы были раньше. Последние пару лет проблем не наблюдаю ни в одном мессенджере, который я использовал.
НЛО прилетело и опубликовало эту надпись здесь
> Протокол — XMPP
Так если протокол один, не кажется ли Вам, что как бы проблем быть не должно? Кстати, Jabber — это не «IM» (что бы Вы под этим термином не понимали), а всего лишь старое название XMPP, а ещё точнее: проекта из которого XMPP вырос.

> Мэйл-агент тоже на xmpp
Да ну?
agent.mail.ru/ru/developers/licence.html
> Например, Gtalk (сам сервер) меняет название jabber-ресурса клиента
Что совершенно не запрещено протоколом.
В линуксе полно всяких графических напоминалок и мультипротокольных IM, тема-то о другом. Не стоит думать, что это единственный способ узнать о количестве сообщений в ящике в линуксе.
я не собираюсь терпеть, когда анкета на Моём Мире автоматически восстанавливается после удаления, и терпеть 1,5к. спама в неделю, хотя ящик нигде не светил. И весь спам во входящих.
Прикольно.
Только вот не совсем пойму, вы разместили в Линукс для всех и по тексту применяете все к линуксу, а скриншот MacOS X. Это я к тому, что UNIX not LINUX.
Ну у нас нету блога UNIX для всех. А описанный материал будет наиболее интересен именно линуксоидам.
Ну почему? Мне интерестно и я на маке, А много людей на *BSD сидят, и им интерестнее с консолькой работать, чем большенству убунтовцев. Я не прав?
У вас есть конкретные предложения куда перенести пост, или вы просто потрепаться ради? :)
Перенёс
Набор утилит, которые тут использовались и там и там одинаков.
и про то же. Что эти команды подходят бля всех UNIX like систем, а не только для линукса. Моно было вообще написать Убунтариум — Проверка почты в Ubuntu. Но это же не правильно.
не, лучше в виде скриптика это оформить, нефиг пароль в истории оставлять.
золотые слова
Если есть доступ к профилю пользователя, то скриптик прочитать можно, а если доступа нет, то и история нелоступна будет. Хотя трудно представить, зачем это надо вне скриптов.
Ну, во первых, такого рода скриптики с паролями не желательно хранить в профиле (с правами пользователя)
А во вторых, к компьютеру могут разные люди случайно подойти. Ну не дело это короче.
а если так?
curl -u username --silent «https://mail.google.com/mail/feed/atom» | grep -c ""
тогда пароль будет запрашиваться интерактивно, и не показываться. У меня по крайней мере так.
А количество не содержится в
<fullcount>1</fullcount>
?
Охо! Ваша правда! Так гораздо проще. Обновил пост
Какой ужасный терминал :)
Покажи свой?
банальный, за которым можно пропводить много и много часов работы
Вот за такое я люблю *nix
Так как команда получается длинная, то лучше «завернуть» ее в скрипт, как рекомендует sovnarkom, или воспользоваться другим полезным советом от commandlinefu.com — использование reverse-i-search.
Конечно кому надо, завернет в скрипт. Это, вроде как, очевидно
curl -u username:password --silent «https://mail.google.com/mail/feed/atom» | grep -c ""
Так не проще посчитать кол-во новых сообщений?
А вы сами ее пробовали? У меня постоянно результатом — 0
Прощу прощения из-за кавычек не то выдавало. Но все равно количество линий там больше чем количество писем.
Пардон, не углядел. Правильно так:
curl -u username:password --silent «https://mail.google.com/mail/feed/atom» | grep -c "<empty>"

Если новых писем нет, то и <empty> отсутствует
У меня есть новые письма, но empty отсутствует. Количество новых писем эта команда не вернет. Я что-то не пойму кто из нас где запутался :)
entry наверно. Не empty
Да, конечно.
До прочтения писем в ящике:
<?xml version=«1.0» encoding=«UTF-8»?>
<feed version=«0.3» xmlns=«purl.org/atom/ns#»>
<title>Gmail — Inbox for xxxxxxxxxxxxxx@gmail.com</title>
<tagline>New messages in your Gmail Inbox</tagline>
<fullcount>1</fullcount>
<link rel=«alternate» href=«mail.google.com/mail» type=«text/html» />
<modified>2009-09-09T08:32:02Z</modified>
<entry>
<title>Test22222222</title>
<summary>T111est</summary>
<link rel=«alternate» href=«mail.google.com/mail?account_id=xxxxxxxxxxxx%40gmail.com&message_id=1239dee275d61a35&view=conv&extsrc=atom» type=«text/html» />
<modified>2009-09-09T08:31:53Z</modified>
<issued>2009-09-09T08:31:53Z</issued>
<id>tag:gmail.google.com,2004:1313325830576151093</id>
<author>
<name>My Name</name>
<email>from@mail.dom</email>
</author>
</entry>
</feed>

После прочтения писем в ящике:
<?xml version=«1.0» encoding=«UTF-8»?>
<feed version=«0.3» xmlns=«purl.org/atom/ns#»>
<title>Gmail — Inbox for xxxxxxxxxxxxxx@gmail.com</title>
<tagline>New messages in your Gmail Inbox</tagline>
<fullcount>0</fullcount>
<link rel=«alternate» href=«mail.google.com/mail» type=«text/html» />
<modified>2009-09-09T08:37:23Z</modified>
</feed>
Я смотрю комментарий плюсуют. Плюсующие, у вас что работает? Там же XML. Подсчет количества строк не даст количетсво сообщений.
Без перла
curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/\(.*\)<\/title.*name>\(.*\)<\/name>.*/\2 - \1/p"

www.commandlinefu.com/ рулит :)
Экранируйте символы < > у вас entry вылетел

curl -u login:password --silent «https://mail.google.com/mail/feed/atom» | tr -d '\n' | awk -F '' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n «s/\(.*\)<\/title.*name>\(.*\)<\/name>.*/\2 — \1/p»
Бля это ж надо было так тупануть что пароль спалить :))
ниче, теперь есть повод сменить
Само собой. Сразу :)
пасворд фейл :)

Вообще парсер не должэен ничего менять внутри code :(
для имапа на перле:
#!/usr/bin/env perl

use Net::IMAP::Simple;
use Email::Simple;

my $imap = Net::IMAP::Simple->new('imap_server') || die "Unable to connect to IMAP: $Net::IMAP::Simple::errstr\n";

if(!$imap->login('username','password')){
    print STDERR "Login failed: " . $imap->errstr . "\n";
    exit(64);
}

my $nm = $imap->select('INBOX');

for(my $i = 1; $i <= $nm; $i++){
    if($imap->seen($i)){
        print "*";
    } else {
        print " ";
    }

    my $es = Email::Simple->new(join '', @{ $imap->top($i) } );

    printf("[%03d] %s\n", $i, $es->header('Subject'));
}

$imap->quit;


ну и считать вывод | wc -l
Я так понимаю данной командой проверяется только inbox? А как насчет других ярлыков?
Тут пишут что ярлыки можно вводить после слеша
So, to view your 'work' label as a feed, it's https://mail.google.com/mail/feed/atom/work/.
Работает, правда, не со всеми ярлыками. Помню нарывался на какие-то грабли, то ли с какими-то спецсимволами, то ли с русскими.
По илее если все правильно заурл-кодировать, то все будет работать

Проверил у себя на ярлыке «В мемориз»
Получилась такая ссылка. Работает

https://mail.google.com/mail/feed/atom/%D0%92%20%D0%BC%D0%B5%D0%BC%D0%BE%D1%80%D0%B8%D0%B7

* This source code was highlighted with Source Code Highlighter.
Не работало в русских тэгах со слэшами (ага, подпапки делал, в имапе хорошо выглядят). Причём, в некоторых случаях выдаёт ошибку, а в некоторых просто пустой rss, как будь-то там нет новых писем, хотя они там есть.
И да, про url encoding я знаю.
Я и не сомневался что вы знаете :) Но урлкодировать можно по-разному.
А со слешем действительно засада. Попробовал — он его режет тупо и все. Никак не вставить.
а это меня одного смущает пароль, который в plaintext остаётся в .bash_history?
И в самом деле. Спасибо.
Чтобы не хранить пароль ни в скрипте, ни в истории:

read -sp "pass: " && echo && curl -u username:$REPLY --silent "https://mail.google.com/mail/feed/atom" | grep -c ""
Не, ну парсер просто зверь. Чего он ест тэги внутри тэга code? Должно быть:

read -sp "pass: " && echo && curl -u username:$REPLY --silent "https://mail.google.com/mail/feed/atom" | grep -c "<entry>"
Парсер настолько зверь, что вам не удастся написать в сообщении
Для того, что бы curl не ругался на сертификат надо добавить ключик "-k". Вариант с "" показывает только первых 20 писем.
И все-таки он зверь! Вариант с "<entry>" показывает только первых 20 писем.
Напомните пожалуйста, как в последний вариант добавить перекодировку на системную KOI8R? iconv-чегтототам
Ок. Нужно просто добавить в конец выражения:
| iconv -f UTF-8 -t KOI8-R
Вместо последней — кодировку вашей системы. Список досупных кодировок можно посмотреть командой iconv -l

К.О. mode on
Для пущего удобства выражение записать в файл, поместить в /usr/bin/ и сделать ему chmod a+x
Скрипт можно будет запускать из командной строки просто по названию файла.
/К.О.
Для удобства, iconv можно указывать только одну кодировку — исходную. В таком случае целевая будет взята из текущей локали. Т.е., можно просто написать iconv -f UTF-8. И какой бы ни была кодировка юзера, он увидит правильно кодированный текст.
А список TODO можно таким же образом получать?
А можно ли таким образом проверить на сколько заполнен ящик? в процентах или гигабайтах?
У Вас 8 гигабайт кончаются так быстро, что нужно мониторить онлайн?
Да, примерно за 7-10 дней. И таких ящиков админю несколько. Будьте толерантнее, не все же люди одинаковы, не все одинаково используют почту. Короче, проблема мониторинга свободного места в ящике очень актуальна. :)
> Будьте толерантнее

Я же просто вопрос задал, без всяких намеков :)
Поделитесь как это вы сделали такой красивый (с тенью) скрин окна? Gimp?
и еще хоцю такую же тему для гнома под МАС :)
>Поделитесь как это вы сделали такой красивый (с тенью) скрин окна? Gimp?

По-моему в макоси это стандартная фича для скриншотов.

В принципе, тень можно сделать при помощи утилиты montage, входящей в состав пакета imagemagick. Не такую гламурную, конечно, но всё же :)

Держите небольшой скриптик:

Copy Source | Copy HTML
#!/bin/sh
 
usage() {
    echo ""
    echo "Usage:"
    echo "    $0 <in_file> <out_file>"
    echo ""
}
 
if [ -z "$1" ]; then
    usage
    exit 1
fi
 
if [ -z "$2" ]; then
    usage
    exit 1
fi
 
PNG=`file $1 | grep PNG`
if [ -z "$PNG" ]; then
    echo "Looks like file is not a PNG image"
    exit 1
fi
 
montage $1 -shadow -background none -geometry +5+5 $2


Результат:

Так, а зачем я проверяю, что файл является PNG? Не нужно тут это. От старого скрипта осталось :)
Можно удадить блок

PNG=`file $1 | grep PNG`
if [ -z "$PNG" ]; then
    echo "Looks like file is not a PNG image"
    exit 1
fi
В общем, после удаления всего ненужного скрипт сократился почти вдвое:

Copy Source | Copy HTML
#!/bin/sh
 
usage() {
    echo ""
    echo "Usage:"
    echo "    $0 <in_file> <out_file>"
    echo ""
}
 
if [ $# -lt 2 ]; then
    usage
    exit 1
fi
 
montage $1 -shadow -background none -geometry +5+5 $2
Так это ж и есть Mac :)
Делать такие скрины в Mac OS — стандартная фича.
>Command-Control-Shift-4, then space, then click a window: Take a screenshot of a window and save it to the clipboard
А я fetchmail гоняю для этих целей. Через POP3 c сертификатами и все такое…

Если интересно, могу написать.
Спасибо. Создал скрипт gmail и добавил в .screenrc. Теперь так

backtick 1 10 10 gmail
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%1` mail(s)][%{B}%Y-%m-%d %{W}%c %{g}]'
Да, забыл сказать к чему это — теперь в статусе screen-а написано клоичество непрочитанных писем.

backtick 1 10 10 gmail — проверяет почту каждые 10 секунд
[%1` mail(s)] — превращается в [7 mail(s)]
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.