Продвинутым

Интересный мозаичный WM

Tags: •  •  •  • 

Наткнулся на интересный мозаичный оконный менеджер - Awesome
http://awesome.naquadah.org/
ИМХО: На первых парах особенно понравилось, что он вполне юзабелен "по-дефолту" и имеет вполне удобные (ИМХО!) распальцовки: http://awesome.naquadah.org/wiki/index.php/Command_Reference_2_0
На данный момент, версия 2.3-rc1 есть в бэкпортах Debian Etch

Изображение пользователя alexu.

Как удалить файлы из Subversion (SVN) репозитория

Tags: •  •  •  • 

Файлы из SVN репозитория нельзя удалить подобно файлам из CVS. Для удаления могут быть разные причины, включая случайный commit или разделение одного репозитория на несколько. На будущее разработчики запланировали опцию 'obfuscate', но в настоящее время единственным способом является следующий:

svnadmin dump /путь/к/репозиторию > myrepo.dump
cat myrepo.dump | svndumpfilter exclude /путь/к/ненужным/файлам/репозитория >myrepo.clean
mv /путь/к/репозиторию /путь/к/репозиторию.bkp
svnadmin create --fs-type fsfs /путь/к/репозиторию
svnadmin load myrepo.clean

Пояснения к коду ниже:

зайти в screen на удалённой системе

Tags: •  •  •  •  • 

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

Решение:
Не обязательно, но все таки:
1. делаем беспарольную аутентификацию как рассказно здесь
затем
2.

$ ssh -t login@host 'source .bashrc; screen -x'

Готово!

3. И на последок, что бы все вышеперечисленное таки совершалось с наименьшим количеством телодвижений, создаем скрипт:

$ cat >remotescreen
!#/bin/sh 
ssh -t login@host 'source .bashrc; screen -x'

$chmod 755 remotescreen

3.a ... или делаем алиас в любимом .*shrc
[code]

Изображение пользователя ak47punk.

Thunderbird и трей

Tags: •  •  •  •  •  •  • 

Наверняка, многим хотелось бы, чтобы громоптиц был запущен целый день, но постоянное нахождение его в таскбаре мозолит глаз. Тем более очень часто почтарь закрывается случайным щелчком по крестику. Для решения этой проблемы я использовал мини-программку AllTray:

$ alltray thunderbird -s -stask -i /usr/share/pixmaps/thunderbird.png

В результате, получаем почтарь, проживающий в трее, разворачивающийся при запуске и с красивой иконкой.

zsh + mc

Tags: •  •  •  •  •  • 

Давно читаю советы с этого сайта за что всем спасибо.
Вроде нигде такой совет не проскакивал, в общем мой совет:

В zsh я пользуюсь темой приветствия adam2
на днях решил её поправить чтобы показывала не только директорию и пользователя с именем машины но и кое что ещё
но не это важно, а то что за одно я решил избавиться от старого глюка связанного с этой темой,
а именно с проблемой потери размера консоли

.-(~)---------------------------------------------------------------------------------------------------------(denis@tentorium)-
`-->      
.-(~)---------------------------------------------------------------------------------------------------------(denis@tentorium)-
`--> `-->  
.-(/var/cache/dictionaries-common)----------------------------------------------------------------------------------------------
-----------(denis@tentorium)-
`--> 

т.е. после запуска mc и перехода в /var/cache/dictionaries у нас приглашение съехало.

Git и Subversion могут жить вместе

Tags: •  •  •  • 

Предположим, что у вас есть централизованный сервер с svn репозиторием, но вы хотите использовать git локально, делать commit'ы, ветки и другие прелести децентрализованной системы контроля версий. С помощью git-svn это довольно просто.

Аутентификация пользователей windows через MIT Kerberos

Tags: •  • 

Хорошо известно, что помощью Kerberos можно сделать аутентификацию пользователей unix централизованной.

Известно также, что при использовании реализации kerberos от Heimdal можно также аутентифицировать пользователей windows. Но, информация как сделать то же с помощью MIT Kerberos, попалась в первый раз. Всё отличие заключается в том, что ключ для машины с windows нужно генерировать с шифрованием rc4-hmac:normal.

kadmin: addprinc -e rc4-hmac:normal host/win.example.org -w pasword

И указать rc4-hmac:normal в списке разрешённых алгоритмов шифрования в /etc/krb5.conf:

supported_enctypes = des3-hmac-sha1:normal des-cbc-crc:normal rc4-hmac:normal

Модераторам:
возможно, это уже оффтопик. В своё оправдание могу сказать только то, что Kerberos у меня работает под Debian :)

Скрипт для записи и проверки DVD

Tags: •  •  •  •  •  •  • 

Периодически приходится писать на DVD разные вещи в консоли. Нередко я сначала раскидываю данные по каталогам, а потом уже пишу по принципу "1 каталог - 1 диск".

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

Создание программного RAID в Linux

Tags: •  •  •  •  • 

Статья с клуба любителей ASPLinux по созданию программного рейда в Linux.

Изображение пользователя bliznezz.

смотрим за работой dd

Tags: •  •  •  • 

часто бывает нужно сделать копию/дамп с помощью команды dd какого нить большого объекта, выполняем dd if=/input of=/output bs=1M ... и работает оно себе. когда работает долго - хочется узнать сколько осталось. сколько осталось - не ясно, а статистику I/O можно получить.
нужно подать сигнал -USR1 (-10) этому процессу, и он выкинет эту информацию в stderr

$ dd if=/dev/zero of=/dev/null bs=1M &
$ killall -10 dd 
566067+0 records in
566066+0 records out
593563222016 bytes (594 GB) copied, 16.1759 s, 36.7 GB/s

Организация удалённого COM-порта

Tags: •  •  •  •  •  •  • 

Иногда встаёт задача, когда некое устройство висит на COM-порте одной машины, а управляется с другой.
Для решения этой задачи используем remserial.

На машине, с которой экспортируется COM-порт (/dev/ttyS0):

$ remserial -d -p 23000 -s "9600 raw" /dev/ttyS0 &

где -p 23000 - TCP-порт, -s "9600 raw" - параметры инициализации COM-порта /dev/ttyS0.

На машине, на которую мы собираемся передавать COM-порт(на /dev/ttyS4):

$ nc 192.168.0.2 23000 > /dev/ttyS4

Изображение пользователя ramok.

Как узнать размеры терминала в скрипте

Tags: •  •  •  • 

Иногда полезно узнать размеры терминала в котором работает ваш скрипт (например при использовании dialog).

0. По умолчанию терминалы под X-Window устанавливают размеры терминалов в переменные LINES и COLUMNS.
Но к сожалению в скрипты они не экспортятся Ж:-(

1. Можно воспользоватся программой stty, если она поддерживает параметр size

$ stty size
71 159
$ eval `stty size | sed -e 's/\(.*\) \(.*\)/LINES=\1 COLUMNS=\2/'`
$ echo $LINES $COLUMNS
71 159
$

2. Если на машине установлен ncurses (а сейчас сложно тайти машину на которой он не стоит Ж:-)
то можно воспользоваться программой tput.

COLUMNS=`tput cols`
LINES=`tput lines`

3. Если на машине установлен X-Window, то можно воспользоваться командой resize которая возвращает
код на sh для установки переменных LINES и COLUMNS.

$ resize
 COLUMNS=159;
 LINES=71;
 export COLUMNS LINES;
$ eval `resize`
$ echo $LINES $COLUMNS
71 159
$

Запуск 32-разрядных приложений в 64-разрядной системе

Tags: •  •  •  •  •  • 

Этот совет - краткое и слишком вольное изложение статьи Daniel Kahn Gillmor "Using proprietary i386 apps on an amd64 system"

Если вы используете 64-разрядную систему, то логично и софт предпочесть 64-разрядный, несмотря на возможность архитектуры amd64 исполнять 32-разрядные приложения. В случае закрытого ПО это может быть проблемой.

Пусть приложение распространяется собранным под x86 архитектуру...

  1. Установка библиотек
    Сначала устанавливаем наиболее распространённые 32-разрядные библиотеки:
    apt-get install ia32-libs
    

    Возможно, рассматриваемому приложению потребуются другие библиотеки. В таком случае просто скачиваем с любого зеркала Debian пакет с библиотекой, собранный под архитектуру i386 и распаковываем его в /emul/ia32-linux командой

    dpkg -X <файл.deb> /emul/ia32-linux
    

  2. Определение необходимых программе библиотек

    1. Просмотрим список необходимых библиотек:
      ldd <приложение или библиотека>
      

      Ищем в выводе строки "not found" и устанавливаем библиотеку, как сказано выше.


    2. Существует способ загрузки библиотек в обход ldd, функцией dlopen(). Такие библиотеки в выводе ldd не отображены.

      Придётся использовать strace:

      DUMPDIR=$(mktemp -d)
      strace -o $DUMPDIR/strace.out -f ./my-proprietary-app
      

      И после завершения программы
      grep open $DUMPDIR/strace.out | grep '\.so' | tail
      

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

      6168  open("/emul/ia32-linux/usr/lib/i686/libogg.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
      6168  open("/emul/ia32-linux/usr/lib/sse2/cmov/libogg.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
      6168  open("/emul/ia32-linux/usr/lib/sse2/libogg.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
      6168  open("/emul/ia32-linux/usr/lib/cmov/libogg.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
      6168  open("/emul/ia32-linux/usr/lib/libogg.so.0", O_RDONLY) = 3
      

      , нам это не интересно; важно выделить в списке те библиотеки, которые так и не были найдены, и распаковать пакеты с ними.

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


Всё :)

Изображение пользователя alexu.

Как объединить две сетевые карты в одну?

Tags: •  •  •  •  • 

apt-get install ifenslave
vim /etc/network/interfaces

внутри /etc/network/interfaces должно выглядеть примерно вот так:

# The loopback network interface
auto lo
iface lo inet loopback

# The bonding network interface
auto bond0
iface bond0 inet static
address 192.168.0.3
netmask 255.255.255.0
gateway 192.168.0.1
up /sbin/ifenslave bond0 eth0
up /sbin/ifenslave bond0 eth1

абсолютно закомментируйте или удалите все остальное, что относится к eth0 и eth1.

далее, откройте /etc/modprobe.d/arch/i386 (для x86 и для x86_64 архитектур) и добавьте вот эти две строчки:

alias bond0 bonding
options bonding mode=1 miimon=100 downdelay=200 updelay=200

после этого просто сделайте /etc/init.d/networking restart

.vimrc в подкаталогах

Tags: •  •  •  • 

Иногда случается полезным устанавливать некоторые настройки vim специфично для отдельных каталогов/подкаталогов.

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

function! Load_local_rc(dir)
  if a:dir == expand("~")
    return
  endif
  let rcfile = a:dir."/".".vimrc"
  if ! filereadable(rcfile)
    return
  endif
  execute "source ".rcfile
endfunction

autocmd BufReadPre * call Load_local_rc(expand("<afile>:p:h"))
autocmd BufNewFile * call Load_local_rc(expand("<afile>:p:h"))

Изображение пользователя alexu.

Защита серверов от случайного выключения\перезагрузки

Tags: •  •  •  •  •  •  • 

Защитить сервера от случайной перезагрузки или выключения поможет пакет molly-guard. При выполнении команд shutdown, reboot, halt он засечет удаленное подключение и попросит ввести имя хоста, с которым осуществляется операция. Это полезно при работе с удаленными серверами через ssh подключения, и особенно - при работе с несколькими серверами одновременно.

Вот так простенький пакет в 6 кб поможет сохранить ваше мягкое место. А не как я сегодня, невыспавшись, перегрузил 15 машин (из них 6 продакшн серверов) одной ковбойской командой...

С приветом!

Изображение пользователя alexu.

Как переименовать сетевые интерфейсы (eth0 в eth1, eth1 в crazy_mofo и т.д.)

Tags: •  •  •  •  • 

Имена сетевых интерфейсов в Linux компьютерах в последнее время стали привязываться к конкретным устройствам. Так, если вы вытащите жесткий диск с одного компьютера и вставите его в другой, то сетевая карта, называвшаяся на старом компьютере eth0, станет на этом eth1. А при попытке сделать ifconfig eth0 up система будет говорить, что, дескать, такого устройства не существует.

Собака зарыта в udev, который по умолчанию привязывает имена сетевых устройств к их MAC адресам. Например, в Debian Etch это находится в файле

/etc/udev/rules.d/z25_persistent-net.rules

Просто отредактируйте его по своему вкусу и voila :-)
P.S.: не забудьте соответственным образом исправить скрипты для старта сети, т.е. /etc/network/interfaces

Изображение пользователя alexu.

Настройка переключения раскладки клавиатуры в KDE через Alt + Shift

Tags: •  •  •  •  •  •  • 

Настроить нормальное переключение клавиатуры в KDE всегда было проблемой. Люди настраивали раскладку через конфигурацию xfree, через xkb, или мучались с переключением типа Ctrl+Alt+K в КДЕ. Именно такая раскладка была по умолчанию, с латинской буквой K. А при переключении на русский язык она уже не распознавалась и обратно переходилось переключаться по щелчку мышки. Проблема заключалась в том, что посредством KDE нельзя было выбрать раскладку типа Ctrl + Shift или Alt + Shift. KDE считала обе клавиши модификационными и требовала третью.

Ищем следы вторжений ... и собственные ошибки

Tags: •  •  •  •  •  • 

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

Надо бы упорядочить эту тему

Старая, но ещё актуальная статья.

Сведения об уязвимостях в установленном ПО. Специфично для Debian

  1. debsecan - информация о проблемах в установленных пакетах.
  2. apt-listbugs - при установке пакета сообщает о возможных проблемах

Оценка состояния:

  1. logcheck - поиск подозрительного в логах, отчёт на почту
  2. chkrootkit, ИМХО, стоит заменить на более новый rkhunter
  3. tiger - сканирует систему и сообщает о всём подозрительном. Хотя бы один раз запустить нужно. На новом Debian узнаёшь много интересного...

Обнаружение подозрительной деятельности

  1. portsentry - обнаружение сканирования портов
  2. tripwire - обнаружение изменений в важных файлах

Лучшая защита - нападение. Удалённый поиск уязвимостей

  1. nessus

Это в порядке увеличения паранойи ;) Первая группа необходима всегда и везде. Вторая самая удобная: добавил в cron и только отчёты просматривай; не будет лишним даже на домашней машине. Ну а где остановиться - определяется только здравым смыслом.

Изображение пользователя ramok.

Кто занял apt базу?

Tags: •  •  •  • 

Иногда при попытке использования apt случается такое:

ramok ~/ sudo apt-get update
E: Не могу получить доступ к файлу блокировки /var/lib/apt/lists/lock - open (11 Ресурс временно недоступен)
E: Невозможно заблокировать каталог со списками пакетов

Это обозначает что где то есть процесс который закрыл базу apt для использования. Это могло произойти в случае сбоя программы, которая закрыла базу и забыла ее открыть, или когда где то среди десятков открытых терминалов затерялось окно в котором запущена такая программа.

Посмотрим PID процесса занявший базу apt по лок-файлу

ramok [100]~/ sudo fuser /var/lib/apt/lists/lock
/var/lib/apt/lists/lock: 22069

Если есть желание, то можно посмотреть что за программа залочила базу apt
ramok ~/ ps aux | grep 22069
root     22069  2.3  2.2  28704 22792 pts/27   S+   11:22   0:01 apt-get upgrade

Убиваем процесс который занял базу:
ramok ~/ sudo fuser -k -TERM /var/lib/apt/lists/lock
/var/lib/apt/lists/lock: 22069
ramok ~/

или не мудрствуя лукаво
ramok ~/ sudo kill -TERM 22069

RSS-материал