to post messages and comments.

Так уж получилось, что приходится иметь дело с впс на убунтосервере-14.04. Зачем — не знаю, так почему-то решил разработчик.

Ну и надо подключаться. Сгенерил на своём ноуте ссш-ключи dsa. Публичный отправил на сервак и засунул там в autorized_keys. Пытаюсь цепляться — шлёт нах. На серваке выдаёт нечто такое:
reverse mapping checking getaddrinfo for мой адрес failed — POSSIBLE BREAK-IN ATTEMPT!

Загуглил — ну примерно как написано в ошибке, типа косяки с прямой и обратной днс у подключающейся машины. Попробовал засунуть свой айпишник в hosts.allow и на всякий случай в hosts на серваке — теперь вообще никаких ошибок. Просто после попытки подключения ввожу пароль ключа и оно говорит "Connection closed by адрес сервака". Что я делаю не так и что этой убунте ещё надо?

Вот я гитхабу отдал свой пабликкей, и авторизации по паролю не хочу. А эта падла меня, тем не менее, заставляет каждый раз пароль вбивать. Это такая "типа жвухфакторная" авторизация, или мне надо где-то лажу искать? ssh -T [email protected] работает.

а вот такое до сих пор живое — у родственников в Волгограде, небольшие проблемы с генераторами на отдельных клавишах, но в целом работоспособно:
ruskeys.net

Тем, у кого плохо с "кнопками", рекомендую keywiz для тренировки памяти.

M-x keywiz <RET>

Емакс соберёт инфу о ваших привязках и предложит -выиграть миллион^W^W- угадать как можно больше комбинаций за 2 минуты.

Небольшая правка говноскрипта из #1317801 для сбора ключей с родственных сайтов


#!/bin/bash

function checkKey {
        while read credential; do
          if (curl -IfsN http://[email protected]/download/engine3/em002_32_l2.nup | grep OK >/dev/null); then
            eval $(echo $credential | awk -F: '{printf "%s", "sed -i -e \"s/\047user\047=>.*,/\047user\047=>\047"$1"\047,/g\" -e \"s/\047password\047=>.*,/\047password\047=>\047"$2"\047,/g\" setup.php"}')
            exit
          fi
        done
}


wget -qO- http://www.nod321.cn/ | grep -E '\*{6}' | sed 's/\*\*\*\*\*\*/:/g' | perl -ne 'print "$1\n" while /((?:EAV|TRIAL)-\d{8}:[a-z0-8]{10})/g' | checkKey


wget -qO- http://www.nnvv.org/ | awk -F: '/(Username|Password)/{print $2}' | sed -e 's/<br \/>/:/' -e 's/<\/p>//' -e 's/<\/font>//' | grep -v '^$' | awk '{
if (NR % 2)
        printf("%s", $0)
else
        printf("%s\n", $0)
}' | checkKey

Пока что валидных ключей не наблюдается. Ждём-с.
P.S. На самом деле, в боевой инсталляции скрипта парсится больше сайтов, эти два как пример.

Окончательно обленился и решил автоматизировать поиск валидных ключей для сервера обновлений. Файл конфигурации имеет следующий вид:

<?php
define("DEFAULT_SAVE_PATH","/var/lib/nod32");
define("HTTP_USER", "www-data");
$unrar='/usr/bin/unrar';
$download_pr="wget";
$user_mail="[email protected]";
$quiet=1;

$servers = array(
    array(
        'www'=>'/var/www/eset_upd/',
        'user'=>'EAV-12345678',
        'password'=>'a1b2c3d4e5',
        'all_in_one'=>1,
        'compons' => array(
            '0'=>'en',
            '1'=>'ru',
        ),
        'ess'=> 1,
        'type' => 'V3',
    ),
);
?>

Как видно, в конфигурации указываются юзернейм и пароль. Их и следует заменять при истечении валидности ключа. Для автоматизации замены написан следующий bash скрипт:

#!/bin/bash

wget -qO- http://www.nod321.cn/ | grep -E '\*{6}' | sed 's/\*\*\*\*\*\*/:/g' | perl -ne 'print "$1\n" while /((?:EAV|TRIAL)-\d{8}:[a-z0-8]{10})/g' | xargs -L 1 | \
    while read line
    do 
        if (curl -IfsN http://[email protected]/download/engine3/em002_32_l2.nup | grep OK >/dev/null); then
            eval $(echo $line | awk -F: '{printf "%s", "sed -i -e \"s/\047user\047=>.*,/\047user\047=>\047"$1"\047,/g\" -e \"s/\047password\047=>.*,/\047password\047=>\047"$2"\047,/g\" setup.php"}')
            exit
        fi
    done

Смотрит на код ответа сервера, методично перебирая ключи с сервера nod321. Первый найденный валидный ключ формирует строку для sed, которая затем и выполняется через eval.

Существует дополнительный скрипт, который по крону наблюдает за успешностью обновления, ориентируясь по логам. Он и запускает, при небходимости, скрипт получения новых ключей.

Ключи можно проверять и без всяких свистоперделок :)

[email protected]:/var/www/nodupd$ head -5 testing && echo '...'
EAV-43398340:nasaeephkk
EAV-43398378:3k3dfxnfjv
EAV-43398379:8aavcs58kr
EAV-43348316:4uioxaeumh
EAV-43348317:a3u8e6rkmc
...
[email protected]:/var/www/nodupd$ while read line; do curl --head [email protected] 2>&1 | grep OK && echo -e "$line\n"; done < testing
HTTP/1.1 200 OK
EAV-43482148:msmtaeac4d

HTTP/1.1 200 OK
EAV-43482152:26mk6o8r64

HTTP/1.1 200 OK
EAV-43482097:8psui65jf3s

HTTP/1.1 200 OK
EAV-43482140:be9th7hth2

HTTP/1.1 200 OK
EAV-43482143:ckmex462u8

HTTP/1.1 200 OK
EAV-43482145:4xligt6eb5

^C

Как вы понимаете, все ключи в данном посте изменены и неработоспособны. Все материалы даны в качестве обучающих :)

немного вимизировал ткабберца:

# скроллинг по M-j/k
namespace eval my {}
proc my::tweak_chat_input_window {chatid type} {
set cw [chat::chat_win $chatid]
set iw [chat::input_win $chatid]

bind $iw <<Copy>> [list \
if {[string equal [selection own] %W]} [bind $iw <<Copy>>] \
else [list event generate $cw <<Copy>>]
]
bind $iw <Alt-Key-k> [bind $iw <Alt-Key-Prior>]
bind $iw <Alt-Key-j> [bind $iw <Alt-Key-Next>]
}
hook::add open_chat_post_hook my::tweak_chat_input_window
# Закрытие таба C-z/0
hook::add finload_hook {
bind . <Control-Key-z> [bind . <Control-Key-F4>]
bind . <Control-Key-0> [bind . <Control-Key-F4>]
}

# Свитч табов: M-h/l C-j/k
hook::add finload_hook {
bind . <Alt-Key-Left> [bind . <Control-Key-Prior>]
bind . <Alt-Key-Right> [bind . <Control-Key-Next>]
bind . <Alt-Key-f> [bind . <Control-Key-Next>]
bind . <Alt-Key-b> [bind . <Control-Key-Prior>]
bind . <Alt-Key-h> [bind . <Control-Key-Prior>]
bind . <Alt-Key-l> [bind . <Control-Key-Next>]
bind . <Control-Key-j> [bind . <Control-Key-Next>]
bind . <Control-Key-k> [bind . <Control-Key-Prior>]
}

А тем временем Роланд выпустил новый кейтар (http://www.rolandmusic.ru/shop/keyboards/synths/sintezator_i_rabochie_stantsii/AX-09.html)
Вот хъзъ, зачем? Ax-synth вышел относительно недавно и получше и покрасивее этой коробки будет. Там на фоточках всякие тян (в том числе японские) есть. Видимо для них...

"24, 25 и 26 сентября мастер-класс и автограф-сессия Дерека Шериняна на выставке "Музыка Москва 2010"" (http://www.muztorg.ru/news_/6945/)
НЯ! ^_^. Процент моего посещения сией выставки поднялся еще на 5-10% :))

У остановки понял, что ключи оставил в офисе. Возращаться — автобусом!!! — не хотелось, не желалось. Прожарился во дворике сидя на подвесной скамье-качелях минут 40, дождался сестру и беспардонно проторчал у неё. Скушал засохший щербет и картошку с салатом. Во время готовки с головой погрузился в France24, удивительный канал. Новости ни о чем.
Чуть позже вернулась младшая кузина, рассказала о своей работе в SAP. Холдинг пивоварни Effes гонят SAP и саппортят все это теперь знаю кто.
Платят не могу сказать, чтобы не очень, в каком-то смысле даже получше.
У кузины старт в каком-то смысле лучше моего — образца июня 09.

С самого утра был не в лучшей форме, не мог шевелить головой без резкой боли в висках, правое глазное яблоко будто бы было сжато в тиски. Звонок в UK немного отвлек, но и заставил понервнчать. К полудню боль стала одолевать — сходил к мед.сотруднику. Из-за шторок выползла толстая тётка в застиранном халатике и принялась искать очки. Потратив на это минут пять, продемонстриров полную слепоту, она намерила мне 130 на 80 и угостила таблеткой.
Таблетку проглотил, но исцелен не был. Ни сразу, ни через час.
Написал тимлиду, что хотел бы уйти пораньше, но был отпущен сразу же.

Добавляет недостающие ключики для ppa. Автоматически.

#!/bin/sh

if [ -z $1 ]
then
KEYS=`sudo apt-get -qq update 2>&1 | awk '/NO_PUBKEY/ {print($NF)}' | uniq`
if [ -z $KEYS ]
then
echo "No missed public keys found."
else
echo "Missed public keys: $KEYS"
for KEY in $KEYS
do
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com $KEY &&\
echo "Public key $KEY has been added."
done
fi
else
KEYS=`echo [email protected] | tr '\ ' '\n' | grep '\([[:alnum:]_]\|[a-fA-F]\)\{8,\}' | uniq | tr '\n' '\ '`
echo "Public keys to add: $KEYS"
for KEY in $KEYS
do
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com $KEY > /dev/null &&\
echo "Public key $KEY has been added."
done
fi


интересно, что man apt-key намекает на то что вместо:
gpg --keyserver keyserver.ubuntu.com --recv KEYKEYKEYKEY
gpg --export --armor KEYKEYKEYKEY | sudo apt-key add —

можно просто, одной командой:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com KEYKEYKEYKEY