Tag: bash

How-to, linux @ 22 Январь 2009, “61 Comments”
В общем по многочисленным просьбам трудящихся, исправленная и переработанная версия how-to установки rtorrent+wtorrent(rtGui и прочих). Установка будет происходить на примере wtorrent, однако Вы без проблем сможете устаноть любой другой понравившийся веб интерфейс.
Из необходимых оговорок: эта связка ставилась на Debian 5 Lenny, вот буквально пару часов назад.
В ходе этого хауту я буду давать необходимые и достаточные пояснения по описанию того, что мы там будем делать. В конце я буду рад замеченным Вами ошибкам, дополнениям.
Итак, установка будет происходить как и в прошлый раз на вебсервер Apache(в testing это 2.2.9) и php5(5.2.6)
Установка будет происходить из репозиториев, благо это достаточно быстрый и удобный способ. Особой производительности полученного вебсервера нам не требуется. Под катом собственно сама установка.
Далее...
linux @ 11 Сентябрь 2008, “6 Comments”
Сегодня ночью задался вопросом, можно ли делать скриншоты и при этом их одновременно загружать в сеть, на свой сервер.
Обыскал сеть, наткунлся на скрипт у Gluek и на его основе и скрипта генерации паролей для того чтобы каждой картинке выдавать уникальное имя.

Вот собственно два скрипта, однако чтобы с ними работать нужно будет поставить два пакета:
sudo aptitude install xclip scrot


pwdgen
#!/usr/bin/perl
chomp($length=8);
$length=~s/\D*//g;
$length||='8';
srand();
@letters=('a'..'z','A'..'Z',0..9,'#','*','_','-','+','=');
for (1..$length){($pass.=$letters[rand(@letters)])};
print "\033[1;31m$pass\033[0;39m\n";


ftpshot
#!/bin/bash
name=`pwdgen | md5sum | awk '{print $1}'`
file=$name.png
scrot $file -e 'mv $f /home/lib/shots/'
url="http://img.librarian.spb.ru/$file"
echo "$url" | xclip -i -l 1
scp /home/lib/shots/$file user@host:/path/to/public_html

В принципе можно поступать как в скрипте Gluek - копировать в tmp, но я предпочитаю данные сохранять.
Комментарии по тексту скриптов:
chomp($length=8);
Тут можно задать длину случайно сгенерированной строки.
name=`pwdgen | md5sum | awk '{print $1}'`
Собственно формируем имя для скрипта, точнее md5 хэш для случайного имени.
scrot $file -e 'mv $f /home/lib/shots/'
Делаем скриншот и сохраняем его в директорию.
url="http://img.librarian.spb.ru/$file"
Так у меня выглядит адрес, куда закачиваются картинки.
echo "$url" | xclip -i -l 1
Собствено копируем в буфер обмена ссылку, которую можно будет вставить нажатием средней клавиши мышки, причём только один раз(опционально).
scp /home/lib/shots/$file user@host:/path/to/public_html
Копируем файл из директории где лежит скриншот на удалённый хост. Внимание, для того, чтобы можно было использовать скрипт в Fluxbox необходимо настроить на удалённом хосте авторизацию по ключу. Почитать про это можно на opennet

Также необходимо скопировать скрипты в /usr/bin тогда не будет необходимости писать путь к ним.

Итак, приступим к главному - добавлению строки в ~/.fluxbox/keys:
None Print :Exec /usr/bin/ftpshot
Перезапускаем Fluxbox - жмём PrintScreen, получаем:
http://img.librarian.spb.ru/c0294556bbae2c0f100e9771891c696d.png

P.S. Можно дописать пару строчек и тогда можно будет сделать скрипт, который бы выдавал данные для вставки на форуме, например. В том числе и с preview, но тут нужно применять ImageMagick.

linux @ 05 Сентябрь 2008, “1 Comments”
В общем меня стало несколько напрягать постоянно вводит root@.... и так далее, чтобы подключаться к серверам. Немного погуглив нашёл способ, как можно сделать автодополнение по Tab(аналогичное когда дополняется команда в шелле)
Общий совет - добавить ip сервера в /etc/hosts, в виде:
127.0.0.1 host
Чтобы, например не вводить root@192.168.1.0
а вводить например: root@home.
Согласитесь и выглядит лучше, и запоминается проще.
Шаг второй, установка bash-completition и добавление хостов в .bashrc.
Выглядит это примерно так:
complete -W ' root@vds1 \
root@vds2 \
root@vds3 \
root@vds4 \' ssh

Где, root@vds1 - юзер/хост, а ssh - для какой команды выполнять дополнение.
Шаг третий, дополнительный и несекурный, даже более не секурный, чем 2.
Нужно отредактировать файл:
sudo vim /etc/ssh/ssh_config
и заменить в нём:
HashKnownHosts yes на HashKnownHosts no
И удалить:
rm ~/.ssh/known_hosts
И заново просоединяться по всем вашим парам user@host(чтобы в known_hosts прописались хосты, которые бы не были зашифрованы в md5)
После того как провели подключения(кстати, если уж пошла такая пьянка, то можно добавить и авторизацию по ключам), нужно выполнить команду:
cat ~/.ssh/known_hosts | cut -f1 -d " " | sort
так мы очищаем файл от лишнего(там кстати всё равно образуются md5 хэши), и получаем возможность автодополнения после ssh user@*.
У меня серверов не много, поэтому можно использовать только шаг два, а вот когда и юзеров, и серверов много - тут поможет комбинация второго и третьего шага.

Tags:
linux @ 27 Август 2008, Обсудить
Нашёл тут в сети интересный скрипт, сидел, модифицировал его.
Скрипт конкретно выполняет доступ к Nagios через curl, и выводит сколько информацию по сервисам.
CRITICAL: 10
UNKNOWN:
DOWN: 1
UNREACHABLE: 0
WARN: 25
UP: 121
OK: 732
PENDING: 0

Что-то вроде этого, только раскрашенный.

Сам скрипт:
#!/bin/bash
#
# Written by Dieter Plaetinck
# Modifed by Nikita Menkovich
# Licensed under the GPL V3
# See gnu.org/licenses/gpl-3.0.html
#
# works for Nagios 2.x No idea about 3.x
URL=https:///nagios/cgi-bin/tac.cgi
USERNAME=username
PASSWORD=password
PAGE=$(curl -s -k -u $USERNAME:$PASSWORD $URL)
HOSTS_DOWN=$( echo -e "$PAGE" | grep "hoststatustypes=4' class='hostHeader'" | awk '{print $5}' | cut -c 20-)
HOSTS_UNREACHABLE=$( echo -e "$PAGE" | grep "hoststatustypes=8' class='hostHeader'" | awk '{print $5}' | cut -c 20-)
HOSTS_UP=$( echo -e "$PAGE" | grep "hoststatustypes=2' class='hostHeader'" | awk '{print $5}' | cut -c 20-)
HOSTS_PENDING=$( echo -e "$PAGE" | grep "hoststatustypes=1' class='hostHeader'" | awk '{print $5}' | cut -c 20-)
SERVICES_CRIT=$( echo -e "$PAGE" | grep "servicestatustypes=32' class='serviceHeader'" | awk '{print $5}' | cut -c 23-)
SERVICES_WARN=$( echo -e "$PAGE" | grep "servicestatustypes=8' class='serviceHeader'" | awk '{print $5}' | cut -c 23-)
SERVICES_UNKNOWN=$( echo -e "$PAGE" | grep "servicestatustypes=6' class='serviceHeader'" | awk '{print $5}' | cut -c 23-)
SERVICES_OK=$( echo -e "$PAGE" | grep "servicestatustypes=2' class='serviceHeader'" | awk '{print $5}' | cut -c 23-)
SERVICES_PENDING=$( echo -e "$PAGE" | grep "servicestatustypes=1' class='serviceHeader'" | awk '{print $5}' | cut -c 23-)
echo -e "\E[37;41m"
echo -e "CRITICAL: $SERVICES_CRIT"
echo -e "UNKNOWN: $SERVICES_UNKNOWN"
echo -e "DOWN: $HOSTS_DOWN"
echo -e "UNREACHABLE: $HOSTS_UNREACHABLE"
tput sgr0
echo -e "\E[30;43m"
echo -e "WARN: $SERVICES_WARN"
tput sgr0
echo -e "\E[37;42m"
echo -e "UP: $HOSTS_UP"
echo -e "OK: $SERVICES_OK"
echo -e "PENDING: $SERVICES_PENDING"
tput sgr0
echo
exit 0;


Основан на скрипте, который выводит информацию на панель XFCE. Автор: Dieter Plaetinck

Tags: ,
linux @ 19 Июль 2008, Обсудить
Существует древний сайт: 99 Bottles of Beer, на котором программисты мира выводят на любимых языках различными извращёнными методами, используя особенности языка песенку.
Текст песенки можно почитать на их сайте.
Больше всего мне понравился текст песенки в Perl:
    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
.('`' |'!') .('`' |',') .'"'. '\\$'
.'==' .('[' ^'+') .('`' |'/') .('['
^'+') .'||' .(';' &'=') .(';' &'=')
.';-' .'-'. '\\$' .'=;' .('[' ^'(')
.('[' ^'.') .('`' |'"') .('!' ^'+')
.'_\\{' .'(\\$' .';=('. '\\$=|' ."\|".( '`'^'.'
).(('`')| '/').').' .'\\"'.+( '{'^'['). ('`'|'"') .('`'|'/'
).('['^'/') .('['^'/'). ('`'|',').( '`'|('%')). '\\".\\"'.( '['^('(')).
'\\"'.('['^ '#').'!!--' .'\\$=.\\"' .('{'^'['). ('`'|'/').( '`'|"\&").(
'{'^"\[").( '`'|"\"").( '`'|"\%").( '`'|"\%").( '['^(')')). '\\").\\"'.
('{'^'[').( '`'|"\/").( '`'|"\.").( '{'^"\[").( '['^"\/").( '`'|"\(").(
'`'|"\%").( '{'^"\[").( '['^"\,").( '`'|"\!").( '`'|"\,").( '`'|(',')).
'\\"\\}'.+( '['^"\+").( '['^"\)").( '`'|"\)").( '`'|"\.").( '['^('/')).
'+_,\\",'.( '{'^('[')). ('\\$;!').( '!'^"\+").( '{'^"\/").( '`'|"\!").(
'`'|"\+").( '`'|"\%").( '{'^"\[").( '`'|"\/").( '`'|"\.").( '`'|"\%").(
'{'^"\[").( '`'|"\$").( '`'|"\/").( '['^"\,").( '`'|('.')). ','.(('{')^
'[').("\["^ '+').("\`"| '!').("\["^ '(').("\["^ '(').("\{"^ '[').("\`"|
')').("\["^ '/').("\{"^ '[').("\`"| '!').("\["^ ')').("\`"| '/').("\["^
'.').("\`"| '.').("\`"| '$')."\,".( '!'^('+')). '\\",_,\\"' .'!'.("\!"^
'+').("\!"^ '+').'\\"'. ('['^',').( '`'|"\(").( '`'|"\)").( '`'|"\,").(
'`'|('%')). '++\\$="})' );$:=('.')^ '~';$~='@'| '(';$^=')'^ '[';$/='`';

Просто сохраните его на своей машине с именем 99bottles.pl и запустите:
perl 99bottles.pl
В общем - смотрите, это интересно.
← + Ctrl + →