Система Orphus
Показаны сообщения с ярлыком ubuntu. Показать все сообщения
Показаны сообщения с ярлыком ubuntu. Показать все сообщения
[]

среда, 9 декабря 2009 г.

Vnstat 1.9 и Ubuntu 9.10 - исправление бага

Я уже рассказывал про vnstat в своем посте "Собираем vnstat в ubuntu и настраиваем lighttpd для vnstati", но все же напомню: это простенькая консольная программа для учета потребляемого трафика, т.ж. есть веб-морда.
Что за баг? Простое переполнение буфера при попытке построить картинку с почасовым графиком. Пример:
$ vnstati -h -o /tmp/vnstatcgi/vnstat_0_h.png -i wlan0

среда, 25 ноября 2009 г.

Пришли диски от Canonical

Наконец-то пришли диски от Canonical с Ubuntu 9.10 Desktop и Server.
Вот такие они красивые :)


Спасибо тебе, Canonical, за твои замечательные продукт :)

[]

четверг, 10 сентября 2009 г.

Настройка Fn-клавиш в ubuntu на ASUS M50Vc. Часть 2

В прошлом посте я рассказывал как настроить Fn-клавиши на ноуте, точнее дал вводную информацию, показал простейший пример и дал "пищу" для дальнейших размышлений. Сегодня я хочу показать пример настройки Fn-клавиш для обработки событий вкл/выкл touchpad, wifi и bluetooth, который значительно сложнее приведенного в предыдущем посте и требует значительно больше телодвижений (для ASUS M50Vc тебе не придется делать много телодвижений, я ведь заботливый ;) ).

И так, сегодня мы узнаем:
1. Как настроить вкл/выкл touchpad и его диодного индикатора;
2. Как настроить вкл/выкл wifi и bluetooth и его диодного индикатора (правда у меня, к сожалению, не работает, хотя должен :( );
3. Сохранять их статус, т.е. если при выключении/перезагрузке ноута у тебя, например, был выключен touchpad, то и после загрузки системы он будет выключен;
4. Включать/выключать/мигать диодным индикатором почты, когда есть новые сообщения (на примере claws-mail).
[]

среда, 9 сентября 2009 г.

Настройка Fn-клавиш в Ubuntu на примере ASUS M50Vc

Эх... Давненько я ничего не писал... Надо исправляться :)
В этом посте хочу рассказать о том как настроить хоткеи типа Fn+F1 и т.д. на ноуте в ubuntu, но это так же справедливо для любого другого дистрибутива linux/bsd (уверен, хотя не проверял).
[]

пятница, 21 августа 2009 г.

Picasa & Ubuntu 9.04

Раньше я никогда еще не пробовал ставить Picasa в linux, но в этот раз уж очень захотелось. Скачать и поставить ее не проблема... Но работать она отказывается, выдавая сообщение об ошибке, что типа нету какого-то там префикса, либо что стоят 2 разные версии... В общем я не вчитывался, а поступил проще...

Отыскал, где лежит сам файл пикасы. Оказалось, что у меня это - /opt/google/picasa/3.0/wine/drive_c/Program Files/Google/Picasa3/Picasa3.exe. Так и думал... Работает через вино :)
Ну и фиг с тобой думаю... У меня уже стояло вино, поэтому запустил этот файл через вино, которое стояло у меня. И, вауля, все работает на 5 баллов :)


Информация с сайта http://angel2s2.blogspot.com/. Если Вы читаете информацию на другом сайте, пожалуйста свяжитесь с автором сайта http://angel2s2.blogspot.com/.

вторник, 7 июля 2009 г.

OpenVPN: Мой опыт

Буквально перед отпуском надо было настроить 3 сервера и 1 комп на резервное копирование, которые территориально разнесены. Времени было мало. Вариантов было много... Но я остановился именно на OpenVPN, как не наиболее гибком (его ведь можно и для других целей использовать) и безопасном (трафик ведь шифруется) решении.
Один из серверов на Ubuntu 8.04.3 Server, 2 на винде 2000 и 2003 и комп на винде ХРюшке домашней. Данные надо было бэкапить на сервак с 2003 виндой, поэтому он выступает в роли OpenVPN сервера.

Для начала я поставил на свой ноут (Ubuntu 9.04 Desktop) сам OpenVPN и сгенерировал все необходимые сертификаты, которые потом полетели на комп и серваки.
Ставим OpenVPN в ubnutu:
sudo aptitude install openvpn
Теперь нужно сделать папку, в которую скопируем скрипты (в общем скрипты копировать не обязательно, но зато это удобнее):
mkdir ~/openvpn
cp -vR /usr/share/doc/openvpn/examples/easy-rsa/2.0/* ~/openvpn
cd ~/openvpn
Теперь нам нужно экспортировать необходимые переменные (очень важно находиться в папке, из которой будут запускаться скрипты, у меня это ~/openvpn):
source ./vars
Если в этом файле (./vars) подправить последние 5 строчек, то в дальнейшем в большинстве случаев вам не нужно будет вводить одно и тоже :) Вот эти строчки (дефолтовые):
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
Теперь делаем подготовку. Этот скрипт подготавливает минимум необходимого для начала работ по созданию сертификатов, а именно создает папку ./keys, в которой будут создаваться сертификаты, и в ней создает 2 файла index.txt и serial:
./clean-all
Настало время сгенерировать корневой сертификат и Diffie-Hellman, а т.ж. ключ для tls аутентификафии. Запускаем:
./build-ca
./build-dh
openvpn --genkey --secret keys/tls.key
Часть работы сделана. Теперь нужно создать ключи для сервера и клиентов. Создаем ключ для сервера:
./build-key-server root.server.ru
И для клиетов:
./build-key helpdesk.server.ru
./build-key mail.server.ru
./build-key KM.Guest

С ключами и сетификатами закончили. Теперь пора переходить к настройке OpenVPN сервера. Для начала нужно скачать и установить сам OpenVPN. Я его взял на сайте http://openvpn.se/ (мне он больше нравится). Теперь необходимо скопировать по безопасному каналу созданные ключи и сертификаты на сервер в папку C:\Program Files\OpenVPN\config\keys из папки ~/openvpn/keys. Теперь нужно создать файл с конфигом, я его расположил в C:\Program Files\OpenVPN\config\server.ovpn (дефолтовый путь). Создаем этот файл и пишем в него слующее:
#daemon # Эту строчку надо расскомментировать, если сервер будет на пингвине, а т.ж. подправить пути к ключам и сертификатам
mode server
tls-server
ifconfig 10.77.0.1 255.255.255.0
port 1194
proto tcp-server
dev tap
keepalive 10 120
# client-to-client # Это чтобы клиенты могли обмениваться трафиком, но для режима tun
comp-lzo
persist-key
persist-tun # В режиме tap игнорируется, но почему добавил уже не помню
ca "C:\\Program Files\\OpenVPN\\config\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\keys\\root.server.ru.crt"
key "C:\\Program Files\\OpenVPN\\config\\keys\\root.server.ru.key"
dh "C:\\Program Files\\OpenVPN\\config\\keys\\dh1024.pem"
tls-auth "C:\\Program Files\\OpenVPN\\config\\keys\\tls.key"
client-config-dir "C:\\Program Files\\OpenVPN\\config\\clients" # Тут у нас будут лежать конфиги для клиентов
#push "route 10.77.0.0 255.255.255.0 10.77.0.1" # Мне не нужно видеть внутренню сеть за серверами, поэтому я эту команду не использую
verb 3
log-append "C:\\Program Files\\OpenVPN\\config\\openvpn.log"
status "C:\\Program Files\\OpenVPN\\config\\openvpn.stat"
Теперь нужно создать папку C:\Program Files\OpenVPN\config\clients с конфигами для каждого клиента. Я приведу пример только для одного, т.к. остальные создаются аналогично. Нужно создать файл C:\Program Files\OpenVPN\config\clients\helpdesk.server.ru.ovpn, который записать слудеющее:
# приcваиваем ip-адрес клиенту
ifconfig-push 10.77.0.11 255.255.255.0
# роутинг на сеть сервера (чтобы видеть его локальную сеть)
#push "route 192.168.0.0 255.255.255.0 10.77.0.1"
# роутинг на сеть второго клиента (это чтобы клиенты могли обмениваться трафиком)
#push "route 192.168.2.0 255.255.255.0 10.77.0.12"
Замечу, что если у всех сетей будут одинаковые адреса (например, 3 сети и все 192.168.0.0/24), то компы, на которых стоит OpenVPN, могут жутко глючить с передачей пакетов, а то и вовсе не будут видеть сеть (ни OpenVPN, ни реальную).

Переходим к клиентам. Тут я приведу пример для двух клиентов, на пингвине и винде. В первую очередь скопируем по безопасному каналу ключи и сертификаты на машины-клиенты. На понадобятся файлы tls.key, helpdesk.server.ru.* и ca.crt (они уже лежат на сервере в каталоге C:\Program Files\OpenVPN\config\keys, ты ведь их копировал), их надо скопировать в каталог /etc/openvpn/keys клиента. Теперь в папке /etc/openvpn нужно создать файл с произвольным имененем и расширением (суффиксом) .conf, я обозвал его to_root.server.ru.conf, и заполнить следующим содержанием:
client
pull
tls-client
dev tap
proto tcp
remote root.server.ru 1194 # Правда я указал IP-адрес сервера
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/helpdesk.server.ru.crt
key /etc/openvpn/keys/helpdesk.server.ru.key
tls-auth /etc/openvpn/keys/tls.key
log-append /var/log/openvpn.log
status /var/log/openvpn.stat
Теперь можно запустить OpenVPN и проверить работу (потом лучше остановить, зачем он нам постоянно работающий на клиентах?):
sudo /etc/init.d/openvpn start
ping -c 3 10.77.0.1
На винде все аналогично, за исключением путей. Ключи и сертификаты кладем в папку C:\Program Files\OpenVPN\config\keys, а конфиг в C:\Program Files\OpenVPN\config, только расширение я указал .ovpn, т.к. это нужно для виндового порта, т.е. имя файла конфига на виндовом клиенте у меня будет таким - to_root.server.ru.ovpn.
client
pull
tls-client
dev tap
proto tcp
remote root.server.ru 1194 # Правда я указал IP-адрес сервера
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server
ca "C:\\Program Files\\OpenVPN\\config\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\keys\\helpdesk.server.ru.crt"
key "C:\\Program Files\\OpenVPN\\config\\keys\\helpdesk.server.ru.key"
tls-auth "C:\\Program Files\\OpenVPN\\config\\keys\\tls.key"
log-append "C:\\Program Files\\OpenVPN\\config\\openvpn.log"
status "C:\\Program Files\\OpenVPN\\config\\openvpn.stat"
И точно так же проверяем работоспособность:
net start OpenVPNService
ping -n 3 10.77.0.1

На этом настройка OpenVPN закончена :) Ну а раз речь шла о бэкапах, то приведу пару очень простых примеров, по одному для винды и пингвина.
# Копирование бэкапов (Linux)
/etc/init.d/openvpn start >>~/copy_bak.log 2&>1
sleep 3s
smbmount //10.77.0.1/bak ~/smb/ -o rw,iocharset=utf8,codepage=cp866,username='UserName',password='passwd' >>~/copy_bak.log 2&>1
sleep 3s
cp -Rfv /backup/folder ~/smb/ >>~/copy_bak.log 2&>1
sleep 5s
smbumount ~/smb/ >>~/copy_bak.log 2&>1
/etc/init.d/openvpn stop >>~/copy_bak.log 2&>1


# Копирование бэкапов (Windows) (тут пинг выступает в роли паузы)
net start OpenVPNService
ping -n 10 localhost
net use S: \\10.77.0.1\baks "PaSSwd" /user:UserName
ping -n 5 localhost
xcopy C:\path S:\ /e /h /r /y /f
ping -n 5 localhost
net use S: /delete
net stop OpenVPNService


ЗЫЖ-1 Не ручаюсь, что все сделал правильно. Это мой первый опыт. Комменты приветствуются.
ЗЫЖ-2 Выложил раньше времени, т.к. одному человеку сильно нужна была помощь. Жалко мне его стало :)
ЗЫЖ-3 Очень хороший ЧАВО по OpenVPN





Информация с сайта http://angel2s2.blogspot.com/. Если Вы читаете информацию на другом сайте, пожалуйста свяжитесь с автором сайта http://angel2s2.blogspot.com/.

[]

понедельник, 22 июня 2009 г.

Обновил ppa-key-import до версии 1.0

Я уже рассказывал про этот скрипт несколько раз, все темы по этому скрипту можете глянуть в теге ppa-key-import.

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

Что же нового на этот раз?
Теперь скрипт умеет самостоятельно проверять файлы /etc/apt/*.list и импортировать ключи для тех репозиториев, для которых ключи еще не были импортированы.
Т.ж. скрипт можно установить в систему и при обновлении по списка пактов через sudo apt-get uptade будут импортированы ключи, которых еще нет в системе.
И еще появился импорт ключей для бета-репозиториев.

А теперь подробнее...


Если скрипт запустить без параметров, то он лезет в файл(ы) /etc/apt/*.list и "выковыривает" оттуда все репозитории с launchpad.net. После чего для каждого репозитория проверяется наличие в системе ключа-подписи. Если ключ есть, то об этом сообщается, а если нет, то ключ будет импортирован о чем так-же будет сообщено.

Чтобы скрипт установить в систему и интегрировать в apt-get есть параметр "-a":
ppa-key-import -a 
Т.ж. скрипт будет скопирован в /usr/bin. Это делается для того, чтобы если вы переместите скрипт в другое место он продолжал функционировать (apt-get же не знает о том, что вы переместили скрипт). Если добавить ключ "!", то скрипт перезапишет себя в /usr/bin и заново интегрируется (переинтегрируется) в apt-get:
ppa-key-import -a !
Для удаления скрипта из системы и его интеграции из apt-get есть ключ "-a -":
ppa-key-import -a -
Ключ скрипта "-b" предназначен для импорта ключей от бета-репозиториев:
ppa-key-import -b
Он был добавлен из-за UbuntuOne, т.к. я не захотел ставить предложенный пакет, а решил все сделать ручками :)


В части скрипта используются наработки, которые написал Dominic Evans, за что ему огромное спасибо :) А т.ж. спасибо Антону, автору блога "Крапленая колода", за то, что обратил мое внимание на этот скрипт и за тестирование ранних версий этого скрипта :)


Кстати, чуть не забыл, если скрипт установить (интегрировать) в систему, то каждый раз при выполнении команды "sudo apt-get update" вначале будет отрабатывать скрипт, а уже потом apt-get.


Скачать ppa-key-import :)





Информация с сайта http://angel2s2.blogspot.com/.
Если Вы читаете эту информацию на другом сайте, пожалуйста свяжитесь с автором сайта http://angel2s2.blogspot.com/.

понедельник, 8 июня 2009 г.

Лог загрузки Debian и Ubuntu

Команда dmesg и содержимое файла /var/log/dmesg позволяют посмотреть сообщения ядра Linux при последней загрузке. При этом строки, которые видно на экране при загрузке Debian, заметно отличаются от этих самых сообщений ядра так как содержат вывод скриптов инициализации. Иногда получается что какое-нибудь сообщение об ошибке мелькает при загрузке, но потом в dmesg его невидно. Что делать? А варианты такие...
1. Кнопками Shift+PgUp/Shift+PgDn можно листать не влезающие в экран сообщения.
2. При загрузке нажатием Ctrl+S можно остановить вывод сообщений на экран, Ctrl+Q -- продолжить.
3. В файле /etc/default/bootlogd поправить BOOTLOGD_ENABLE=No на BOOTLOGD_ENABLE=Yes и с комфортом смотреть лог загрузки в файле /var/log/boot.

UPD. Последнее я пробовал только в Debian, очень полезная штука, а в Ubuntu, говорят, нормально не работает с тех пор как появилась прогрессивная система загрузки Upstart. Сейчас может и починили, может кто проверить?

Источник: http://rulinux.net.ru/node/118

ЗЫЖ: На всякий случай, цитирую первый коммент из первоисточника:
В Ubuntu — Неа, не починили, и врядли скоро починят. Я спрашивал у разработчиков этого самого upstart на их официальном IRC канале — они сказали, это пока не работает (хотя в конфиге даже ручкая такая есть чтоб покрутить) и когда заработает они не знают. А дальше они между собой стали обсуждать вопрос что файловая система находится в readonly в момент загрузки, или что-то в этом духе, но я уже невнимательно следил за их обсуждением. Вот так, то.

[]

man: Читаем man'ы на русском

Не всегда хочется читать man на английском... Порой хочет почитать его на родном языке. Это возможно и тут я расскажу как.


В Ubuntu есть некоторые маны на других языках. Как в других дистрибутивах не знаю, но думаю, что там тоже есть. Все английские маны лежат в каталоге /usr/share/man/man{1..8}. А маны на других языках располагаются в /usr/share/man/ЯЗЫК/man{1..8}.
У утилиты man есть ключ -L, которому передается нужный язык.

Пример 1. Почитаем man mc на русском:
man -L ru mc
Пример 2. Почитаем man bash на русском?:
man -L ru bash
В результате получаем облом... Нету мана для баша на русском, поэтому man показал нам его на английском :)

Исходя из этого, можно в ~/.bashrc добавить вот такой простенький алиас:
alias man='man -L ru'
Теперь всегда вначале будет искаться ман на русском, а если его нет, то будет показываться на английском :)


ЗЫЖ Как заметил Olly Cat, правильнее будет не алиас делать, а добавить переменную в башэрси:
export MANOPT="-L ru"
За что ему огромное спасибо :)

[]

пятница, 24 апреля 2009 г.

Собираем vnstat в ubuntu и настраиваем lighttpd для vnstati

С тех пор как я купил себе Мегафон-модем, решил поставить какую-нибудь простенькую программку для учета трафика. Выбор пал на vnstat, он работает в консольке, что очень даже хорошо (лично для меня, люблю я консоль). Но когда я увидел вебморду vnstati для vnstat, то, естественно, мне захотелось ее заиметь 8-). В репах я ее не нашел, а на оф. сайте были только сорцы... Ну это не беда подумал я и взялся за дело :)

Для начала нужно поставить libgd2-noxpm и libgd2-noxpm-dev либо libgd2-xpm и libgd2-xpm-dev (я выбрал последние):
sudo aptitude install libgd2-xpm libgd2-xpm-dev
Теперь скачаем сорцы vnstat (vnstati вместе с ними идет):
wget http://humdi.net/vnstat/vnstat-1.7.tar.gz
Распаковываем:
tar zxf vnstat-1.7.tar.gz
cd vnstat-1.7
И ставим:
sudo make all
sudo make install
Убеждаемся, что с ядром все "ок":
vnstat --testkernel
Узнаем какие фейсы можно поставить наконтроль:

vnstat --iflist
И ставим (в моем случае это ppp0):
vnstat -u -i ppp0

Теперь нажно настроить запуск демона (а зачем на через cron мониторить фейс?), для этого добавляем в файл /etc/rc.local перед "exit 0" строку:
vnstatd -d
Правим конфиг vnstat (/etc/vnstat.conf); тут надо только одну строчку поменять, а именно:
Interface "ppp0"
Наконец-то можно запустить демон:
sudo vnstatd -d

Почти все готово, осталось совсем немножко, поставить и настроить lighttpd. Ставим:
sudo aptitude install lighttpd
Включаем CGI:
sudo lighttpd-enable-mod cgi
И настраиваем его, для этого надо в файле /etc/lighttpd/conf-enabled/10-cgi.conf добавить строчку (я хочу чтобы у меня cgi выполнялся из корня вебсервера):
$HTTP["url"] =~ "^/" {
cgi.assign = ( ".cgi" => "/usr/bin/perl" )
}
Теперь скопируем в корень вебсервера cgi-скрипт:
sudo cp examples/vnstat.cgi /var/www/
И чуточку его подправим:
my $host = 'Laptop';   # Имя машины (просто для глаз)

my $cachetime = '1'; # Как часто обновлять картинки в кеше (1 раз в минуту)

my @graphs = ( # Для каких фесов генерировать статистику
{ interface => 'ppp0' },
);
Чтобы смотреть через браузер статистику нужно создать файл index.html, что и делаем:
/var/www/vnstat.cgi | sudo tee /var/www/index.html
И настраиваем права доступа (у меня от имени www-data работает lighttpd):
sudo chown -R www-data:www-data /tmp/vnstatcgi
sudo chown -R www-data:www-data /var/www


Вот теперь все, можно наслаждаться :)))
firefox -new-tab 'http://localhost/'


ЗЫ: Хоум пага проекта - http://humdi.net/vnstat/.

[]

четверг, 19 марта 2009 г.

ppa-key-import 0.4 - убита маленькая бага

Минут 5 назад постучался в джаббер мой приятель, автор блога Крапленая колода, и "пожаловался", что опять на лаунчпаде нахимичили, скрипт ppa-key-import ругаться стал. Полез я смотреть в чем дело... и появился ppa-key-import 0.4 :)


А причина была проста до банальности: достаточно было в grep добавить 7 символов :)

Скрипт берем по старой ссылке :)



ЗЫ: Если ты еще не знаешь, что это такое, то советую почитать предыдущии посты раз и два.


[]

четверг, 5 марта 2009 г.

ppa-key-import 0.3 - новая версия импортера ключей из PPA репозиториев

Не так давно я выкладывал скрипт для импорта ключей из PPA репозиториев, но, к сожалению, на сайте launchpad.net произошли изменения и старый скрипт уже не работает. Поэтому было решено это дело исправить, а заодно добавить приятную возможность :)

Теперь можено указывать не одно PPA имя архива, а сразу целую кучу :)

Вот пример:
$ ppa-key-import do-core claws-mail 123
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --recv-keys --keyserver keyserver.ubuntu.com A5D19FDCAA6ABB440CD3464628A8205077558DD0
gpg: запрашиваю ключ 77558DD0 с hkp сервера keyserver.ubuntu.com
gpg: ключ 77558DD0: "Launchpad PPA for GNOME Do Core Team" не изменен
gpg: Всего обработано: 1
gpg: неизмененных: 1
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --recv-keys --keyserver keyserver.ubuntu.com ADBADCEF515B37DA2F973FF6DF8030F05ED1D082
gpg: запрашиваю ключ 5ED1D082 с hkp сервера keyserver.ubuntu.com
gpg: ключ 5ED1D082: "Launchpad PPA for Claws Mail" не изменен
gpg: Всего обработано: 1
gpg: неизмененных: 1


!!! Было добавлено 2 PGP-ключей из 3 !!!
Не найдены: 123

Тут указано 3 ppa имени, но скрипт обработал только 2, о чем он и сказал в самом конце и сообщил какие из них не обработал, т.к. имени "123" не существует.


На всякий случай напомню, что с качестве параметров скрипту нужно передавать PPA имена архивов, т.е. если у нас в /etc/apt/sources.list есть запись, например, "deb http://ppa.launchpad.net/claws-mail/ubuntu intrepid main", то нам надо передать скрипту в качестве параметра строку claws-mail.



Скрипт доступен по старой ссылке.



[]

среда, 25 февраля 2009 г.

OpenPGP от репозиториев PPA... Гребем лопатой :)

На днях прочитал очень полезную заметку Ключ от репозитория PPA, где пакеты лежат (автору большой респект), из которой узнал то, чего мне так сильно не хватало.
Но вариант предложенный автором требует слишком много телодвижений из-за которых только теряем драгоценное время. Вот и встал у меня тут же вопрос: "А как его (время) сэкономить?". Решение пришло мигом.


Накатал маленький скриптег (полезная нагрузка всего 2 строки) и радуюсь :)

Работает просто. Принимает только один парамерт - имя пакета, для которого нужно получить OpenPGP ключ. Точнее сказать это не совсем имя... Может правильнее будет PPA имя архива? Т.е. если у нас в /etc/apt/sources.list есть запись, например, "deb http://ppa.launchpad.net/claws-mail/ubuntu intrepid main", то нам надо передать скрипту в качестве параметра строку claws-mail, например:
$ ppa-key-import claws-mail
gpg: запрашиваю ключ 5ED1D082 с hkp сервера keyserver.ubuntu.com
gpg: ключ 5ED1D082: открытый ключ "Launchpad PPA for Claws Mail" импортирован
gpg: Всего обработано: 1
gpg: импортировано: 1 (RSA: 1)
OK



Сам скрипт всегда можно взять тут: http://notesyoungeradmin.angel2s2.googlepages.com/ppa-key-import



ЗЫ: Иногда бывают глюки, т.к. лаунч пад не всегда выдает то что нужно, иногда какой-то урезанный ключ... :(


UPD: Обновил скрипт, т.к. на оф. сайте лаунчпада появился новый поход к этой теме. Теперь скрипт не использует временный файл.
Спасибо автору блога "Крапленая колода".


UPD2: Обновил скрипт, подробности тут.

[]

вторник, 20 января 2009 г.

Репозитории Ubuntu + установка IE + кое-что "вкусное" =)


Каждый день читаю множество блогов (их можно посмотреть в колонке "Я читаю..." справа) и не редко нахожу в них что-то полезное или новое для себя. Но бывает и так, что нашел, а кажется, что этого маловато и хочется дополнить, переделать или сделать лучше. Так вышло и на этот раз. Вчера нашел заметку о репозиториях убунты, а сегодня проснулся пол пятого и спать уже не хотелось. Решил время провести с пользой для дела. Вот и результат :)

Хватит лирики, пора за дело :)

Примечание:
1. Строки вида "#deb-src ..." закомментированы, т.к. это репозиторий исходного кода того или иного пакета и большинству из вас попросту не нужен.
2. Если не указано как поставить сигнатуры для того или иного репозитория, значит я не смог их найти. Если кто знает, где их взять, пожалуйста сообщите, добавлю в пост.
3. Не даю никакой гарантии, что все указанные репозитории работают. Я пользуюсь всего 1/3 из перечисленного. К тому же в некоторых репозиториях пока еще нет поддержки Ubuntu 8.10 (в каких именно я не проверял).
4. Для 8.04.1 после запуска и отпрабоки скрипта, сделал обновление пакетов, все пакеты обновились, ошибок не было. Для 8.10 на проверял.


Зеркало официального репозитория Ubuntu 8.04 на Яндексе:
Устанавливаем сигнатуры:
wget -q -O - http://mirror.yandex.ru/ubuntu/project/ubuntu-archive-keyring.gpg | sudo apt-key add -

Добавляем в /etc/apt/sources.list:
deb http://mirror.yandex.ru/ubuntu/ hardy main restricted
#deb-src http://mirror.yandex.ru/ubuntu/ hardy restricted main multiverse universe
deb http://mirror.yandex.ru/ubuntu/ hardy-updates main restricted
#deb-src http://mirror.yandex.ru/ubuntu/ hardy-updates restricted main multiverse universe
deb http://mirror.yandex.ru/ubuntu/ hardy universe
deb http://mirror.yandex.ru/ubuntu/ hardy-updates universe
deb http://mirror.yandex.ru/ubuntu/ hardy multiverse
deb http://mirror.yandex.ru/ubuntu/ hardy-updates multiverse
deb http://mirror.yandex.ru/ubuntu/ hardy-security main restricted
#deb-src http://mirror.yandex.ru/ubuntu/ hardy-security restricted main multiverse universe
deb http://mirror.yandex.ru/ubuntu/ hardy-security universe
deb http://mirror.yandex.ru/ubuntu/ hardy-proposed restricted main multiverse universe
deb http://mirror.yandex.ru/ubuntu/ hardy-backports restricted main multiverse universe
deb http://mirror.yandex.ru/ubuntu/ hardy-security multiverse

Для Ubuntu 8.10 "Intrepid Ibex" заменить все вхождения hardy на intrepid.

А теперь репозитории различных программ :)
xNeur - автоматическая переключалка раскладки клавы (аналог PuntoSwitcher в винде):
Добавляем в /etc/apt/sources.list:
deb http://gq.net.ru/ubuntu hardy xneur

Устанавливаем сигнатуры:
sudo aptitude update
sudo aptitude install gq-keyring


Network Manager
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/network-manager/ubuntu hardy main


FBReader - программы для чтения электронных книг
Добавляем в /etc/apt/sources.list:
deb http://www.fbreader.org/desktop/debian etch main
#deb-src http://www.fbreader.org/desktop/debian etch main

Устанавливаем сигнатуры:
wget -q -O - http://www.fbreader.org/desktop/debian/geometer.fbreader.org.asc | sudo apt-key add -


Jabbim - Jabber-клиент
Добавляем в /etc/apt/sources.list:
deb http://repo.palatinus.cz/stable /

Устанавливаем сигнатуры:
wget -q -O - http://repo.palatinus.cz/repo.key | sudo apt-key add -


VirtualBox - аналог VMWare, но гораздо лучше, быстрее и удобнее (ИМХО)
Добавляем в /etc/apt/sources.list:
deb http://download.virtualbox.org/virtualbox/debian hardy non-free

Устанавливаем сигнатуры:
wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key add -


qutim - ICQ-клиент, сильно напоминает виндовый qip
Добавляем в /etc/apt/sources.list:
deb http://qutim.org/debian/ unstable main
#deb-src http://qutim.org/debian/ unstable main
#deb http://ppa.launchpad.net/smakc/ubuntu hardy main #Уже не помню зачем, помню что тут старая версия ;)

Устанавливаем сигнатуры:
wget -q -O - http://qutim.org/debian/archive.key | sudo apt-key add -


Gnome Terminator - Терминал, удобен тем, что поможно разделять окно по горизонтали и вертикали
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/gnome-terminator/ubuntu hardy main restricted universe multiverse


Cairo Composite Manager - аля компиз ;)
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/gandalfn/ubuntu gutsy main universe


Blueman - управление bluetooth устройствами (ставить нужно 2 пакета: blueman blueman-i18n)
Добавляем в /etc/apt/sources.list:
deb http://download.tuxfamily.org/blueman hardy blueman

Установка:
wget -q http://download.tuxfamily.org/blueman/blueman.gpg -O- | sudo apt-key add -


PCMan File Manager - файловый менеджер
Добавляем в /etc/apt/sources.list:
deb http://cle.linux.org.tw/candyz/Ubuntu i386/

Устанавливаем сигнатуры:
wget -q -O - http://cle.linux.org.tw/candyz/Ubuntu/candyz.key | sudo apt-key add -


Wine - программа для запуска win-приложений
Добавляем в /etc/apt/sources.list:
deb http://wine.budgetdedicated.com/apt hardy main #WineHQ
#deb-src http://wine.budgetdedicated.com/apt hardy main #WineHQ

Устанавливаем сигнатуры (вторая не обязательна, но хуже не будет ;) ):
wget -q -O - http://wine.budgetdedicated.com/apt/387EE263.gpg | sudo apt-key add -
wget -q -O - http://wine.budgetdedicated.com/apt/Scott%20Ritchie.gpg | sudo apt-key add -


muCommander - двухпанельный файловый менеджер (написан на Java, долговато запускается, но работает хорошо)
Добавляем в /etc/apt/sources.list:
deb http://apt.mucommander.com stable main non-free contrib

Устанавливаем сигнатуры:
wget -q -O - http://apt.mucommander.com/apt.key | sudo apt-key add -


VLC Media Player - медиаплеер
Добавляем в /etc/apt/sources.list:
deb http://nightlies.videolan.org/build/hardy-i386/arch ./


Skype - VoIP программа для общения
Добавляем в /etc/apt/sources.list:
deb http://download.skype.com/linux/repos/debian/ stable non-free


Avant Window Navigator - док-панель(аля Mac) для быстрого запуска приложений
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/reacocard-awn/ubuntu hardy main #Ставить - avant-window-navigator-bzr awn-core-applets-bzr
#deb-src http://ppa.launchpad.net/reacocard-awn/ubuntu hardy main
#deb http://ppa.launchpad.net/awn-testing/ubuntu hardy main #Не стабильная версия; ставить - awn-manager-trunk awn-extras-applets-trunk
#deb-src http://ppa.launchpad.net/awn-testing/ubuntu hardy main #Не стабильная версия


Medibuntu - репозиторий несвободного софта. Отсюда, например, можно поставить Skype для 64-битной Ubuntu
Добавляем в /etc/apt/sources.list:
deb http://packages.medibuntu.org/ hardy free non-free

Устанавливаем сигнатуры:
sudo apt-get update && sudo apt-get install medibuntu-keyring


Btnx - с этого пакета можно легко настроить дополнительные клавиши мультимедийной мышки
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/daou/ubuntu hardy main
#deb-src http://ppa.launchpad.net/daou/ubuntu hardy main


Claws Mail - быстрый и легковестный E-mail клиент
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/claws-mail/ubuntu hardy main


Ubuntu Tweak
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/tualatrix/ubuntu hardy main


Screenlets
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/gilir/ubuntu/ hardy main


Midori - очень простенький браузер (правда глючный)
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/stemp/ubuntu hardy main


Chmsee - читалка CHM-файлов (мой совет - лучше используйте GnoChm, он лучше и есть в стандартной репе)
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/lidaobing/ubuntu hardy main


GScrot - скриншоттер
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/gscrot/ubuntu hardy main


GNOME Do - лончер
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/do-core/ubuntu hardy main


Galaxium - мессенжер
Добавляем в /etc/apt/sources.list:
deb http://ppa.launchpad.net/galaxium/ubuntu hardy main


Gajim - Jabber-клиент
Добавляем в /etc/apt/sources.list:
deb ftp://ftp.gajim.org/debian unstable main
Устанавливаем сигнатуры:
sudo aptitude update
sudo aptitude install gajim-dev-keyring


CloneZilla Server Edition
Добавляем в /etc/apt/sources.list:
deb http://drbl.sourceforge.net/drbl-core drbl stable
Устанавливаем сигнатуры:
wget -q -O - http://drbl.sourceforge.net/GPG-KEY-DRBL | sudo apt-key add -






Google'овый репозиторий (Picasa и др.) добавлять не стал, т.к. он у меня периодически глючит (не доступен), как у дригих не знаю.
Но если кому нужен, вот:
Добавляем в /etc/apt/sources.list:
deb http://dl.google.com/linux/deb/ stable non-free

Устанавливаем сигнатуры:
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -




Для сладости, расскажу как поставить Internet Explorer в Ubuntu (ies4linux - пакет совместимости IE для Linux) =)
Не надо говорить: "Нафиг эта сплошная дыра нужна...", он может быть полезен разработчикам и тестерам сайтов.
Просто выполняем в консольке команду за командой и все:
sudo apt-get install wine libxxf86dga1 libxxf86vm1 cabextract
cd /tmp/
wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz
tar zxvf ies4linux-latest.tar.gz
cd ies4linux-*
./ies4linux

Появится окошко "Internet Explorer for Linux", в котором нужно выставить нужные опции (т.ж. загляните за кнопочку "Advanced") и нажать кнопку "ОК".

После чего будут скачаны нужные файлики и утановен ослик.

Предупрежу сразу, ActiveX'ы не работают, хотя может какие-нибудь простенькие работать и будут.
Готово. Наслаждайтесь :)
Правда у меня начинает беситься WineServer, загружает проц на 50 и более процентов. А когда осла закрываю (или даже убиваю) он не выгружается из памяти. Приходится его kill'ом пришибать + самого осла, за компанию.



И на последок самое вкусно :)
Скрипт, для автоматического добавления всех перечисленных репозиториев в /etc/apt/sources.list для любой (теоретически, зависит от репозитория) версии ubuntu и установки сигнатур. Забираем и наслаждаемся =)

Как использовать:
$ addreps.sh --help

Команда addreps.sh добавляет дополнительные репозитории

Использование: addreps.sh <-l> | <version_name [-n]>
-l - показать список пакетов, для которых будут добавлены репозитории
version_name - имя версии Ubuntu (например, hardy)
-n - не задавать вопросов в конце (не обновлять список пакетов и не показывать файл)

ЗЫ: соблюдайте порядок опций ;)

Sudo указывать не надо, скрипт сам использует его при необходимости (попросит ввести пароль).
Теоретически можно и предыдущие (и "будущие") названия версий указать, но я не пробовал и, к тому же, не все репозитории поддерживают старые (и "будущие") версии.

Как он работает:
1. Делает резервную копию /etc/apt/sources.list
2. Устанавливает все сигнатуры
3. Добавляет в /etc/apt/sources.list репозитории (которые в этом посте перечислены)
4. Добавляет в конец /etc/apt/sources.list оригинальный /etc/apt/sources.list, т.е. тот, резервную копию которого скрипт сделал в начале
5. Говорит, что все готово
6. Предлагает открыть /etc/apt/sources.list (чтобы отключить (закомментировать) то, что вам не нужно)
7. Предлагает обновить список пакетов

Предупреждение!!!
1. Используйте скрипт на свой страх и риск. Я не несу никакой ответственности (абсолютно никакой) за его использование и причиненный какой-либо ущерб в результате работы этого скрипта.
2. Скрипт не проверяет, что вы указали ему в качестве параметра, а тупо использует то, что ему "дали", поэтому будьте внимательны.






UPD: Обновил пост и скрипт, добавил Gajim.
UPD2: Обновил пост и скрипт, добавил CloneZilla Server Edition.

[]

понедельник, 19 января 2009 г.

Индикатор клавы в GNOME в виде флажков, а не текста


Как-то давно, когда только начинал изучать линукс, нашел совет для убунты и гнома, как сделать в раскладке клавы флажки вместо обычных надписей типа RU и EN (или как там? уже не помню :) ).
Но в этом совете было все слишком длинно описано... Ведь все это можно сделать всего-лишь одной командой:

mkdir -p ~/.icons/flags && cd ~/.icons/flags/ && wget -q http://notesyoungeradmin.angel2s2.googlepages.com/{ru,us}.png && gconftool-2 --type bool --set /desktop/gnome/peripherals/keyboard/indicator/showFlags true && cd - > /dev/null

Воть и усе ;)


ЗЫ: Как это работает.
Создаем папку "~/.icons/flags":
mkdir -p ~/.icons/flags
Переходим в только-что созданную папку:
cd ~/.icons/flags/
Скачиваем 2 файла, us.png и ru.png, для английской и русской раскладок, соответственно:
wget -q http://notesyoungeradmin.angel2s2.googlepages.com/{ru,us}.png
Выполняем команду, чтобы гномик знал, что надо показывать картинки, а не текст:
gconftool-2 --type bool --set /desktop/gnome/peripherals/keyboard/indicator/showFlags true
Возвращаемся в тут папку, в которой были до этого:
cd - > /dev/null

Убунта может повредить диск на ноуте. Лечим.


В 2007 году было опубликовано сообщение о повышенном износе жестких дисков ноутбуков, работающих под управлением Ubuntu Linux. Проблема вызвана излишне частым перевод жесткого диска в спящий режим, по умолчанию применяющийся в Ubuntu при работе ноутбука от батареи при активном "ENABLE_LAPTOP_MODE" режиме в /etc/default/acpi-support или /etc/default/laptop-mode, что значительно сокращает срок службы жесткого диска.

Несмотря на многочисленные жалобы в скрипте /etc/acpi/power.sh по прежнему присутствует вызов "$HDPARM -B 1" (1 - самый агрессивный режим экономии энергии, для выключения засыпания рекомендуется установить 255, но при возвращении ноутбука из спящего режима значение уровня APM все равно автоматически устанавливается в 128). При текущих установках, за 100 часов работы с ноутбуком жесткий диск переводился в спящий режим 7000 раз (ресурс диска - 600000), т.е. почти раз в минуту.

Несколько дней назад в тестовый репозиторий 'proposed' для выпусков 9.04, 8.10 и 8.04 помещена исправленная версия пакета acpi-support, в случае одобрения исправления будут интегрированы в основной дистрибутив.

Оценить число выключений диска можно установив пакет smartmontools и выполнив команду:
sudo smartctl -d ata -a /dev/sda | grep Load_Cycle_Count
или для удобства вопсприятия:
sudo smartctl -d ata -a /dev/sda | grep "Load_Cycle_Count|ID#"

Для проверки активности агрессивного засыпания диска нужно выполнить:
sudo hdparm -I /dev/sda | grep 'Advanced power management level'




Источник (+ немножко подправлено мной): http://www.opennet.ru/opennews/art.shtml?num=19832


От себя:
Думаю и так понятно как это лечится, но на всякий случай поясню.
Открываем файлик /etc/acpi/power.sh:
sudoedit /etc/acpi/power.sh

Заменяем все "$HDPARM -B 1" на "$HDPARM -B 255", сохраняем и выполняем команду
sudo hdparm -B 255 /dev/sda
(sda заменить на ваш диск, хотя скорее всего на ноуте так и будет sda).
Все.
Можно перезагрузиться, чтобы убедиться, что после перезагрузки все будет ок, т.е. после перезагрузки стоит выполнить команду:
sudo hdparm -I /dev/sda | grep 'Advanced power management level'


UPD: Хм... У меня почему-то это не сработало :(
Сделал просто: добавил "hdparm -B 255 /dev/sda" в /etc/rc.local =)
[]

вторник, 11 ноября 2008 г.

Выводим VirtualBox в локальную сеть

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


Я использовал VirtualBox OSE 1.5.6 из репозитория на Ubuntu 8.04.1 Desktop.

Для начала запусти сам VirtualBox, выбери из списка нужную тебе виртуальную машину и открой ее свойства. В левой части окна свойств выбери пункт "Сеть". В правой части выбирает "Хост-интерфейс" в поле "Присоединен к". А ниже в поле "Имя интерфейса" пишем "vbox0" (естественно, без кавычек ;) ). В общем как на скриншоте ниже.




Далее ставим пакет bridge-utils:
sudo apt-get install bridge-utils


И добавляем в /etc/network/interfaces:
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet dhcp
bridge_ports eth0 vbox0


Теперь редактируем /etc/vbox/interfaces:
vbox0 ИмяЮзера br0
тут ИмяЮзера - пользователь, под которым ты работаешь в системе.

Т.ж. нужно настроить права для /dev/net/tun, чтобы VirtualBox не ругался при запуске гостевой ОС:
sudo chown root:vboxusers /dev/net/tun
sudo chmod g+rw /dev/net/tun


Чтобы не выполнять это каждый раз при запуске Ubuntu открываем файл /etc/udev/rules.d/20-names.rules и ищем строчку (у меня она была в самом низу файла)
KERNEL=="tun", NAME="net/%k"
и дописываем в ее конец
, GROUP="vboxusers", MODE="0660"
т.е. должна получиться такая строчка
KERNEL=="tun", NAME="net/%k", GROUP="vboxusers", MODE="0660"


Теперь настало время перезапустить сеть и демон виртуалбокса:
sudo /etc/init.d/networking restart
sudo /etc/init.d/virtualbox-ose restart

Все готово. Осталось только запустить гостевую систему в VirtualBox'е и убедиться, что все работает. :)

Т.к. IP мы получаем динамически, то надо в гостевой системе сделать соответствующие сетевые настройки, чтобы она получала IP от DHCP сервера из нашей локальной сети.
Если же ты не хочешь или не можешь по какой-то причине использовать DHCP сервер, то измени файл /etc/network/interfaces след. образом:
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
bridge_ports eth0 vbox0

Теперь твоя гостевая система будет иметь IP 192.168.0.100. Т.ж. не забудь соответствующим образом изменить сетевые настройки гостевой системы.


И... никогда не забывай делать резервные копии, перед внесением изменений в какие-либо конфигурационные файлы!!! ;)


ЗЫ: Можешь на свой страх и риск заюзать нижеприведенный скрипт. Но тебе все равно придется вручную изменить настройки в свойствах виртуальной машины (как это описывалось выше).
Скрипт нужно запускать от root'a. Если ты изменишь значение переменной $ISDHCP на 1, то тебе нужно будет изменить значение следующих трех переменных на свой вкус, хотя можешь и ничего не менять, а оставить как есть.
Еще раз предупрежу: используй этот скрипт исключительно на свой страх и риск, я не несу никакой ответственности если ты запустишь этот скрипт на своей системе.


#!/bin/sh

# Запускать от root'а

ISDHCP=0 # 1 = Использовать DHCP | 0 = Не оспользовать DHCP

ADDRESS=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

USER=`whoami`


# Устанавливаем пакет bridge-utils
apt-get install bridge-utils

NODHCP="auto eth0"
NODHCP+="iface eth0 inet manual"
NODHCP+=""
NODHCP+="auto br0"
NODHCP+="iface br0 inet dhcp"
NODHCP+=" bridge_ports eth0 vbox0"

YESDHCP="auto eth0"
YESDHCP+="iface eth0 inet manual"
YESDHCP+=""
YESDHCP+="auto br0"
YESDHCP+="iface br0 inet static"
YESDHCP+=" address $ADDRESS"
YESDHCP+=" netmask $NETMASK"
YESDHCP+=" gateway $GATEWAY"
YESDHCP+=" bridge_ports eth0 vbox0"

# Делаем бэкап /etc/network/interfaces
cp /etc/network/interfaces /etc/network/interfaces_`date +%Y%m%d`

# Настраиваем /etc/network/interfaces
if [ $ISDHCP=0 ] ; then
echo "$NODHCP" > /etc/network/interfaces
else
echo "$YESDHCP" > /etc/network/interfaces
fi

# Настраиваем /etc/vbox/interfaces
echo "vbox0 $USER br0" >> /etc/vbox/interfaces

# Настраиваем права для /dev/net/tun
chown root:vboxusers /dev/net/tun
chmod g+rw /dev/net/tun

# Делаем бэкап /etc/udev/rules.d/20-names.rules
cp /etc/udev/rules.d/20-names.rules /etc/udev/rules.d/20-names.rules_`date +%Y%m%d`

# Заменяем нужную строчку
grep -v 'KERNEL=="tun"' /etc/udev/rules.d/20-names.rules > /etc/udev/rules.d/20-names.rules
echo 'KERNEL=="tun", NAME="net/%k", GROUP="vboxusers", MODE="0660"' >> /etc/udev/rules.d/20-names.rules

# Перезапускаем демон виртуалбокса
sudo /etc/init.d/virtualbox-ose restart

# Перезапускаем сеть
sudo /etc/init.d/networking restart


[]

вторник, 24 июня 2008 г.

Мой bash-конфиг...


Ты часто работаешь в шелле? А я - ДА!
Тебе удобно работать в шелле? А мне - ДА!

А дело тут просто: нужно настроть файлик ~/.bashrc и больше не придется париться, а работа станет быстрее и удобнее.

Ниже я выложил содержимое моего файла ~/.bashrc и комментариями, поэтому разберешься сам. Ну а я думаю тебе будет это полезно узнать (если еще не знаешь)... =)

В основном этот конфиг заточен под убунту, для других *nix систем его пидется подправить немножко...



# Для начала определить некоторые цвета:

red='\e[0;31m' # Красный, темнее след.

RED='\e[1;31m' # Красный, светлее пред.

blue='\e[0;34m' # Синий, темнее след.

BLUE='\e[1;34m' # Синий, светлее пред.

cyan='\e[0;36m' # Циановый, темнее след.

CYAN='\e[1;36m' # Циановый, светлее пред.

NC='\e[0m' # No Color (нет цвета)

# Определил 2 раза для удобства :)

Black='\e[0;30m'

DarkGray='\e[1;30m'

Blue='\e[0;34m'

LightBlue='\e[1;34m'

Green='\e[0;32m'

LightGreen='\e[1;32m'

Cyan='\e[0;36m'

LightCyan='\e[1;36m'

Red='\e[0;31m'

LightRed='\e[1;31m'

Purple='\e[0;35m'

LightPurple='\e[1;35m'

Brown='\e[0;33m'

Yellow='\e[1;33m'

LightGray='\e[0;37m'

White='\e[1;37m'

NoColor='\e[0m'



# Лучше выглядит на черном фоне.....

echo -en "${red}"

date "+%A, %d %B %Yг. %H:%M:%S (%:::z - %Z)"

echo -en "$NC\n"



export HISTSIZE=2000 # Длина истории команд

export HISTFILE=~/.bash_history # Где хранить историю команд

# export HISTCONTROL="ignoredups" # Не дублировать команды



# Чтобы история команд сохранялась сразу после ввода (а не во время закрытия терминала)

shopt -s histappend

PROMPT_COMMAND='history -a'



# Испраляет ошибки в написании

shopt -s cdspell



# Разорванные многострочные команды в истории команд

shopt -s cmdhist



# "Заготовки" для 'ls' (предполагается, что установлена GNU-версия ls)

alias ll="/bin/ls -lh --color" # Отображает символьную инфу о типе файла

alias l1="/bin/ls -1Fh --color" # Вывод содержимого каталога в один столбец + отображение символьной инфы о типах файлов

alias lr="/bin/ls -Rh --color" # Вывод содержимого с подкаталогами

alias la="/bin/ls -lAh --color" # Подробный пывод содержимого каталога, включая скрытые файлы

alias ls='/bin/ls -hFh --color' # выделить различные типы файлов цветом

alias lx='/bin/ls -lXBh --color' # сортировка по расширению

alias lk='/bin/ls -lSrh --color' # сортировка по размеру

alias lc='/bin/ls -lcrh --color' # сортировка по времени изменения

alias lu='/bin/ls -lurh --color' # сортировка по времени последнего обращения

alias lt='/bin/ls -ltrh --color' # сортировка по дате

alias lm='/bin/ls -lAh --color | more' # вывод через 'more'





# На первый взягляд это бред, но когда привыкаешь, реально ускоряет работу

alias md="/bin/mkdir"

alias mds="sudo /bin/mkdir"

alias mkdirs="sudo /bin/mkdir"



alias mdp="/bin/mkdir -p"

alias mdps="sudo /bin/mkdir -p"



alias cp="/bin/cp -iv"

alias cps="sudo /bin/cp -iv"



alias cpi="/bin/cp -v"

alias cpis="sudo /bin/cp -v"



alias cpR="/bin/cp -Rv"

alias cpRs="sudo /bin/cp -Rv"



alias cpr="/bin/cp -Riv"

alias cprs="sudo /bin/cp -Riv"



alias mv="/bin/mv -iv"

alias mvs="sudo /bin/mv -iv"



alias mvi="/bin/mv -v"

alias mvis="sudo /bin/mv -v"



alias rm="/bin/rm -iv"

alias rms="sudo /bin/rm -iv"



alias rmi="/bin/rm -v"

alias rmis="sudo /bin/rm -v"



alias rmr="/bin/rm -Rfiv"

alias rmrs="sudo /bin/rm -Rfiv"



alias rmri="/bin/rm -Rfv"

alias rmris="sudo /bin/rm -Rfv"



alias ..="cd .."

alias ...="cd ../.."

alias ....="cd ../../.."

alias .....="cd ../../../.."





alias cls="/usr/bin/clear" # Если ты привык к консоле винды, то тебе это поможет





alias h='history' # История команд

alias j='jobs -l' # Задания

alias path='echo -e ${PATH//:/\\n}' # Значение переменной окружения $PATH

alias recfg='. ~/.bashrc' # Перечитать настройки BASH (иногда бывает полезно, особенно для отладки)



alias du='/usr/bin/du -kh' # Размер всех подкаталогов в каталоге (включая др. ф.с.)

alias duS='/usr/bin/du -khxS' # Размер всех папок в каталоге (не переходить в др. ф.с.)

alias dus='/usr/bin/du -khxs' # Размер каталога (не переходить в др. ф.с.)

alias df='/bin/df -kh' # Занятое пространство на диске



alias upgrade='sudo apt-get update ; sudo apt-get upgrade' # Обновление пакетов



alias aptsearch='sudo apt-cache search ' # Поиск пакетов в репозиториях

alias aptinstall='sudo apt-get install ' # Установить пакет из репозитория

alias aptremove='sudo apt-get remove ' # Удалить пакет из системы

alias aptpurge='sudo apt-get purge ' # Удалить пакет из системы и его конф. файлы

alias aptautoremove='sudo apt-get autoremove' # Автоматически удалить не нужные пакеты из системы



alias 'restart-gnome'='sudo /etc/init.d/gdm restart' # Перезапустить GNOME



alias 'cd-'='cd -' # Перейти в последнюю дирректорию (бывает забываю пробем поставить)





# проверка правописания

alias xs='cd'

alias vf='cd'

alias moer='more'

alias moew='more'

alias kk='ll'





# Не все эти функции писал я сам, есть и не мои работы, но авторов уже не помню, к сожалению :(



function dfp() # Сколько занято на опр. ф.с. в %

{

/bin/df -kh | /bin/grep $1 | /usr/bin/cut -c41-43

}





function lg() # ls -lAh --color <path> | grep <filter>

{

if [ "$1" = "" ] && [ "$2" = "" ]; then

echo -en "\n${Blue}Команда$NC ${LightRed}lg$NC ${Blue}выводит список файлов с фильтрацией (тоже самое, что ${LightRed}ls -lA$NoColor ${Red}<patn>${NoColor} ${LightRed}| grep${NoColor} ${Red}<filtet>${NoColor}${Blue})${NoColor}"

echo -en "\n${Cyan}Использование:$NC ${LightRed}lg$NC ${Red}[path] <filter>$NC"

echo -en "\n${Cyan}Если$NC ${Red}[path]$NC ${Cyan}не задан, то используется текущая дирректория.$NC\n\n"

elif [ "$1" != "" ] && [ "$2" = "" ]; then

/bin/ls -lAh --color $(/bin/pwd) | /bin/grep $1

else

/bin/ls -lAh --color $1 | /bin/grep $2

fi

}



function my_ip() # IP адрес

{

MY_IP=$(/sbin/ifconfig ppp0 | /usr/bin/awk '/inet/ { print $2 } ' | /bin/sed -e s/addr://)

MY_ISP=$(/sbin/ifconfig ppp0 | /usr/bin/awk '/P-t-P/ { print $3 } ' | /bin/sed -e s/P-t-P://)

}



function ii() # Дополнительные сведения о системе

{

echo -e "\nВы находитесь на ${RED}$HOSTNAME"

echo -e "\nДополнительная информация:$NC " ; /bin/uname -a

echo -e "\n${RED}В системе работают пользователи:$NC " ; /usr/bin/w -h

echo -e "\n${RED}Дата:$NC " ; /bin/date +"%A, %d %B %Yг. %H:%M:%S (%:::z - %Z)"

echo -e "\n${RED}Время, прошедшее с момента последней перезагрузки :$NC " ; /usr/bin/uptime

echo -e "\n${RED}Память :$NC " ; /usr/bin/free

my_ip 2>&- ;

echo -e "\n${RED}IP адрес:$NC" ; echo ${MY_IP:-"Соединение не установлено"}

echo -e "\n${RED}Адрес провайдера (ISP):$NC" ; echo ${MY_ISP:-"Соединение не установлено"}

echo

}



function swap() # меняет 2 файла местами

{

if [ "$1" = "" ] || [ "$2" = "" ]; then

echo ""

echo -e "${blue}Команда$NC ${RED}swap$NC ${blue}меняет 2 файла местами$NC"

echo -e "${cyan}Использование:$NC ${RED}swap$NC ${red}<file1> <file2>$NC"

echo ""

else

local TMPFILE=tmp.$$

/bin/mv -v "$1" $TMPFILE

/bin/mv -v "$2" "$1"

/bin/mv -v $TMPFILE "$2"

fi

}



function sswap() # меняет 2 файла местами с правами root'a

{

if [ "$1" = "" ] || [ "$2" = "" ]; then

echo ""

echo -e "${blue}Команда$NC ${RED}sswap$NC ${blue}меняет 2 файла местами с правами root'а$NC"

echo -e "${cyan}Использование:$NC ${RED}sswap$NC ${red}<file1> <file2>$NC"

echo ""

else

local TMPFILE=tmp.$$

sudo /bin/mv -v "$1" $TMPFILE

sudo /bin/mv -v "$2" "$1"

sudo /bin/mv -v $TMPFILE "$2"

fi

}



function myps()

{

ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ;

}

function pp()

{

myps f | /usr/bin/awk '!/awk/ && $0~var' var=${1:-".*"} ;

}





function lowercase() # перевести имя файла в нижний регистр

{

for file ; do

filename=${file##*/}

case "$filename" in

*/*) dirname==${file%/*} ;;

*) dirname=.;;

esac

nf=$(echo $filename | tr A-Z a-z)

newname="${dirname}/${nf}"

if [ "$nf" != "$filename" ]; then

/bin/mv "$file" "$newname"

echo "lowercase: $file --> $newname"

else

echo "lowercase: имя файла $file не было изменено."

fi

done

}





# Поиск файла по шаблону:

function ff()

{

if [ "$1" = "" ]; then

echo ""

echo -e "${blue}Команда$NC ${RED}ff$NC ${blue}ищет файл по шаблону в текущем каталоге$NC"

echo -e "${cyan}Использование:$NC ${RED}ff$NC ${red}<шаблон>$NC"

echo ""

else

/usr/bin/find . -type f -iname '*'$*'*' -ls ;

fi

}





# Поиск файла по шаблону в $1 и запуск команды в $2 с ним:

function fe()

{

if [ "$1" = "" ] || [ "$2" = "" ]; then

echo ""

echo -e "${blue}Команда$NC ${RED}fe$NC ${blue}ищет файл по шаблону в текущем каталоге и выполняет заданную команду над ним$NC"

echo -e "${cyan}Использование:$NC ${RED}ff$NC ${red}<шаблон> <команда>$NC"

echo ""

else

/usr/bin/find . -type f -iname '*'$1'*' -exec "${2:-file}" {} \; ;

fi

}





# поиск строки в файлах:

function fstr_help()

{

echo -en "\n${blue}Команда$NC ${RED}fstr$NC ${blue}ищет заданную строку в файлах из текущего католога и его подкаталогах$NC\n"

echo -en "${cyan}Использование:$NC ${RED}fstr$NC ${red}[-i] \"шаблон_строки_для_поиска\" [\"шаблон_имени_файла\"]$NC\n"

echo -en " ${red}-i$NC ${blue}- не учитывать регистр$NC\n"

echo -en " ${blue}если$NC ${red}\"шаблон_имени_файла\"$NC ${blue}не задан, то поиск ведется по всем файлам$NC\n\n"

}





function fstr()

{

OPTIND=1

local case=""

local usage="${blue}Команда$NC ${RED}fstr$NC ${blue}ищет заданную строку в файлах из текущего католога и его подкаталогах$NC

${cyan}Использование:$NC ${RED}fstr$NC ${red}[-i] \"шаблон_строки_для_поиска\" [\"шаблон_имени_файла\"]$NC

${red}-i$NC - не учитывать регистр

если \"шаблон_имени_файла\" не задан, то поиск ведется по всем файлам"

while getopts :it opt

do

case "$opt" in

i) case="-i " ;;

#*) echo "$usage"; return;;

*) fstr_help; return;

esac

done

shift $(( $OPTIND - 1 ))

if [ "$#" -lt 1 ]; then

#echo "$usage"

fstr_help

return;

fi

local SMSO=$(tput smso)

local RMSO=$(tput rmso)

/usr/bin/find . -type f -name "${2:-*}" -print0 | /usr/bin/xargs -0 /bin/grep -sn ${case} "$1" 2>&- | /bin/sed "s/$1/${SMSO}\0${RMSO}/gI" | /bin/more

}