четверг, 29 сентября 2011 г.

Перемещение и изменение размеров окна программы

Перемещение и изменение размеров окна при помощи программы wmctrl.
sudo apt-get install  wmctrl

Извлечь текущие размеры запущенных приложений: 
wmctrl -Gl 

Пример работы на основе калькулятора SpeedCrunch:
wmctrl -i -r `wmctrl -l | grep 'SpeedCrunch' | awk '{print $1}'` -e 0,0,0,500,500

После параметра -e передаем следующие обязательные параметры:
— e <G>,<X>,<Y>,<W>,<H>
 G -
Gravity
X,Y
- координаты окна
 w,H -
размеры окна

среда, 21 сентября 2011 г.

Автоматическое обнаружение прокси-сервера (WPAD)

Есть два способа сообщить информацию о локальном прокси-сервере: через DHCP и через DNS. По соображениям максимальной совместимости, предпочтительно использовать DNS.

Для этого необходимо занести запись, указывающую на домен "wpad" с работающим web-сервером. В корень web-сервера необходимо поместить файл с именем "wpad.dat". Этот файл представляет собой JavaScript, содержащий функцию "FindProxyForURL". Этот файл будет автоматически затребован и выполнен web-браузерами на всех компьютерах локальной сети. Содержание файла может быть примерно следующим:

function FindProxyForURL(url, host)
{
  if (isPlainHostName(host) ||
   dnsDomainIs(host, "my.local.network.domain.org") ||
   (host=="127.0.0.1") )
   return "DIRECT";

 else
   return "PROXY my.proxy.server.address:8080";
}


Из примера понятно, что браузер попробует определить к какому адресу пытается подключиться, в случае локальной сети использует настройки без прокси, иначе будет задействован прокси my.proxy.server.address:8080.

Удаление pulse audio и настройка OSS4

Удалим pulseaudio.

1.Запускаем терминал. Меню — Стандартные — Терминал

sudo killall pulseaudio
cp /etc/X11/Xsession.d/70pulseaudio ~/
sudo apt-get purge pulseaudio
sudo apt-get remove gstreamer0.10-pulseaudio
sudo reboot

Настройка gnome-sound-properties.

1. Идём по ссылке
http://www.4front-tech.com/forum/viewtopic.php?f=3&t=3324 и качаем архив
soundproperties.tar.gz, так же можно воспользоваться прямой ссылкой
http://www.4front-tech.com/forum/download/file.php?id=1

2.Разархивируем soundproperties.tar.gz в домашнюю директорию.

tar xzf soundproperties.tar.gz

3.Далее, в зависимости от того, какая у вас установлена Ubuntu i386 или
amd64, Переходим соответственно в папку 32-bit-x86 или 64-bit-amd64.

cd 32-bit-x86
или
cd 64-bit-amd64

4. Копируем gnome-sound-properties в /usr/bin/

sudo cp gnome-sound-properties /usr/bin/

5.Выходим в каталог выше

cd ..

6.Создаём папку glade в /usr/share/gnome-control-center/.


sudo mkdir /usr/share/gnome-control-center/glade/

7.Копируем sound-proerties.glade в /usr/share/gnome-control-center/glade/

sudo cp sound-properties.glade /usr/share/gnome-control-center/glade/

8.Визуализация достигается запуском gnome-sound-properties с Терминала,
или же Меню — Система — Параметры — Звук.

Установка Open Sound System (OSS4)

1.Помещаем в Blacklist ALSA модули.

sudo dpkg-reconfigure linux-sound-base

далее выбираем курсором OSS, жмём Tab курсор перемещается на OK и после
этого нажимаем Enter для подтверждения.

2.Удаляем ALSA.

Удаляем все пакеты имя которых начинается с alsa. Это делается так.
Копируем или пишем ручками в Терминале sudo apt-get remove alsa и 2 раза
нажимаем Tab, должен появиться список установленых пакетов которые
начинаются с «alsa», после этого вписываем через пробел, наименование
этих пакетов и нажимаем Enter. Тоже самое следует проделать с пакетами
начинающийся на pulse.

После всех манипуляций следует перегрузиться.

3. Ставим рекомендуемые пакеты.


sudo apt-get install -y libesd0 libsdl1.2debian-oss

4.Ставим OSS4.

Идём на официальный сайт http://www.opensound.com/download.cgi . Качаем
подходящий нам по архитектуре пакет. Linux 2.6 (x86) (DEB) для Ubuntu
i386 или Linux 2.6 (amd64) (DEB) для Ubuntu amd64 и сохраняем в домашней
папке. После ставим этот пакет командой:

sudo dpkg -i oss-linux*.deb.

Так же, есть возможность установить OSS4 из исходников, вот ссылка
https://help.ubuntu.com/community/OpenSound (Building from Source).

5.Настраиваем GNOME/gstreamer.

sudo apt-get install -y gstreamer0.10-plugins-bad

Перезагружаемся.

Всё oss4 установлен и готов к работе. soundproperties.tar.gz,
32-bit-x86, 64-bit-amd64, sound-properties.glade и deb пакет OSS4 из
домашней директории можно удалить. Остаётся только,
настроить приложения на oss.

вторник, 20 сентября 2011 г.

Транслирование и запись WEB камеры motion

Установка Motion
sudo aptitude install motion


Конфигурационные файлы Motion:
sudo nano /etc/motion/motion.conf

# Видеоустройство для захвата, в FreeBSD по умолчанию /dev/bktr0
videodevice /dev/video0

# Используемый вход для видео, может иметь два значения;
# по умолчанию используется 8 (для USB камер), для V4L устройств ставим 1
input 8

# Устанавливаем количество захватываемых кадров в секунду;
# здесь следует ввести число в диапазоне 2 – 100 (100 – по умолчанию)
# для PAL стандартным является 25
framerate 25

# И не менее важный параметр target_dir, в нем определяем каталог,
# куда будем складывать захваченные с видеокамеры файлы;
# в качестве имени можно использовать переменные,
# все они описаны в оригинальном файле
target_dir /var/lib/motion/snapshots/

# Имя файла для снимков и видео, в примере оставляем значение по умолчанию
# %Y = год, %m = месяц, %d = день, %H = час, %M = минута, %S = секунда
snapshot_filename %v-%Y%m%d%H%M%S-snapshot
jpeg_filename %v-%Y%m%d%H%M%S-%q
movie_filename %v-%Y%m%d%H%M%S
timelapse_filename %Y%m%d-timelapse


Вот, собственно, и все основные настройки. Если используется карта видеозахвата или TV тюнер, при помощи параметра norm указываем стандарт. По умолчанию используется 0, то есть PAL. Возможны значения 1 – NTSC, 2 – SECAM и 3 PAL NC. Для TV тюнера также указываем частоту. По умолчанию frequency = 0.

Чтобы Motion не переходил в режим демона и выводил отладочную информацию в консоль, используем флаг ‘–n’.
sudo motion –n

Использование веб-браузера
В состав Motion включен мини http-сервер, который позволяет просматривать в реальном времени картинку с камеры в окне браузера. Открываем motion.conf и ищем в самом низу секцию “Live Webcam Server”. При инсталляции с помощью пакетов значение параметра webcam_port установлено в 0, то есть http-сервер отключен. Чтобы он заработал, достаточно указать здесь любой свободный порт (традиционно 8081). Параметр webcam_localhost по умолчанию устанавливается в on, поэтому подключиться к http-серверу можно только с локального компьютера. Если планируется заходить по сети, укажи здесь off. Качество выводимых сервером jpeg изображений выставляется при помощи webcam_quality. Значение 50, скорее всего, трогать не придется. По дефолту картинка в браузере меняется только при обнаружении движения. Активировав webcam_motion, можно указать, чтобы картинка постоянно менялась с частотой 1 кадр, а при движении – с частотой, указанной в параметре webcam_maxrate. Значение последнего параметра по умолчанию установлено в 1, не стоит указывать его выше 4-5. И еще один параметр – webcam_limit, с его помощью указывается максимальное количество изображений за соединение. По умолчанию установлено значение 0, то есть без ограничений. При соединении с localhost и работе с одной камерой, наверное, трогать его и не нужно.

Теперь, если снова запустить Motion, в командной строке должно появиться сообщение: “Started stream webcam server in port 8081″. Набираем в браузере адрес своего компьютера, например http://localhost:8081, и смотрим, что показывает нам камера.

Настраиваем изображение и видео
Итак, файлы у нас уже есть, http-сервер работает, самое время заняться подстройкой. А тюнить в Motion есть что. Например, параметр rotate. Ты не ошибешься, если подумаешь, что с его помощью можно вращать полученное изображение. Поэтому если камеру удобнее закрепить в перевернутом виде, ничего страшного. Используемое по умолчанию 0 означает сохранение без вращения, возможны варианты 90, 180 и 270. При захвате устанавливается размер кадра, выдаваемый камерой, для его изменения редактируем параметры width и height. Если камера не поддерживает автоматическую регулировку яркости, ее можно установить вручную. За это отвечает сразу несколько параметров. Так отключенный по умолчанию auto_brightness разрешает Motion регулировать яркость. Ее величина берется из значения brightness, регулируемого в пределах 0-255. Если последнее установлено в 0, тогда auto_brightness установит среднее значение 128. Аналогично за регулировку контраста и насыщенности отвечают соответственно contrast и saturation. Качество изображения регулируется с помощью quality. Чтобы изменить формат файла с jpeg на ppm, параметр ppm устанавливаем в on.

По умолчанию при обнаружении движения образуется не только видеофайл, но и последовательность изображений. Параметром output_normal можно изменить такое поведение. Так при установке в first будет сохранено только первое изображение, best – лучшее, а отключить эту функцию можно, использовав off. Активация output_motion разрешит сохранять в снимке только пиксели, показывающие движущийся объект. Правда, пока я не нашел практического применения этому параметру, разве что для съемки продолжения “Охотники за привидениями”.

При установке пакета из репозитария Ubuntu в конфигурационном файле motion.conf функция записи захваченного видео отключена. Поэтому при необходимости измени значение ffmpeg_cap_new на on. Аналогично с output_motion, есть такой же параметр и для видео – ffmpeg_cap_motion, при активации которого в результирующий видеофайл будут сохранены пиксели, показывающие движущийся объект.

За качество результирующего видео отвечают два параметра: ffmpeg_bps или ffmpeg_variable_bitrate. При настройке следует использовать лишь один из них. Качество лучше подбирать экспериментальным путем, исходя из мощности системы и возможностей камеры. Кодек задается при помощи ffmpeg_video_codec, по умолчанию используется mpeg4, но при необходимости можно использовать: mpeg1, msmpeg4, swf, flv или ffv1.

В некоторых случаях полезной будет возможность периодической записи. Параметр ffmpeg_timelapse отвечает за период, в течение которого ведется запись информации в один видеофайл, затем будет создан новый. Возможные значения: daily (за день, по умолчанию), hourly, weekly-sunday, weekly-monday, monthly и manual. Например, чтобы запись на видео велась каждую секунду, устанавливаем “ffmpeg_timelapse 1″. Если во время захвата с аналоговой камеры при перемещении объектов появляются искажения, установи ffmpeg_deinterlace в on.

В файл, кроме собственно объекта, за которым следит камера, заносится и дополнительная информация, позволяющая определить время съемки. Эти данные настраиваются в секции Snapshots. Например, установка цифры в snapshot_interval позволит делать снимки с указанным периодом вне зависимости от обнаружения движения. Активация locate выделит на снимке движущийся объект. Текст, выводимый в левом и правом углах снимка, указывается соответственно в text_left и text_right. В настройках по умолчанию выводится дата и время, когда сделан снимок (формат strftime(3)). Если камер несколько, для удобства можно активировать text_left, где прописать что-то вроде “Camera 1″.

Настройка захвата
Секция “Motion Detection Settings”, расположенная в самом конце конфигурационного файла, отвечает за тонкую настройку обнаружения движущихся объектов. Если камера стоит в комнате, и тушка входящего перекрывает объектив, проблем с обнаружением обычно нет. Вмешательство потребуется в том случае, когда камера контролирует большую территорию, где объект имеет относительно маленький размер, и срабатывание может быть вызвано колыханием веток деревьев, проезжающими машинами и прочими помехами. На дешевых девайсах запись может начинаться из-за артефактов, вызванных искажениями самой камеры или поведением драйвера.

Например, threshold позволяет указать количество пикселей, которые должны измениться для срабатывания детектора, а minimum_motion_frames – количество кадров, в котором они зафиксированы. Подобрав эти значения, можно сделать так, что Motion не будет замечать пролетающую птицу, но без проблем реагировать на человека. Фильтры для сглаживания шума подключаются при помощи despeckle. По умолчанию используется оптимальное значение EedDl. При появлении проблем следует поэкспериментировать, убирая буквы в сочетании EedDl и пробуя их в разных комбинациях (подробнее о despeckle смотри на WiKi Motion и на emit.demon.co.uk/motion).

Параметры noise_level, noise_tune, night_compensate и lightswitch отвечают за уровень порога шума и компенсацию темных и светлых участков.

Комбинация параметров pre_capture, post_capture и gap позволяет записать законченную сцену, где будет снят контролируемый объект до и после того, как было обнаружено движение. Значение gap по умолчанию установлено в оптимальные 60 (секунд), если движение не будет обнаружено, то создается новый видеофайл, а старый удаляется. Чтобы захваченный файл не был большим, его продолжительность можно ограничить параметром max_mpeg_time, указав в качестве значения время в секундах.

Параметров в motion.conf очень много, обо всех рассказать не получится. Но остался еще один, о котором следует знать. Например, поставил ты камеру в общежитии на кухне, где топчется много народу, но тебя интересуют лишь те, которые лазят в холодильник. Без проблем, делаем снимок камерой, создаем маску, в которой нужная область окрашена белым, а все остальное, что нас не интересует, черным. Сохраняем его в файле формата pgm и указываем путь при помощи mask_file.

Отвязка программы от консоли

Команда призвана закрыть консоль откуда была вызвана программа, но без закрытия самой программы.
nohup команда 1>/dev/null 2>&1 &

SSH

Подготовка ключей: 
ssh-keygen #генерируем ключ
ssh-copy-id -i ~/.ssh/id_rsa.pub учётка@ip_адрес #копируем  ключ клиенту

Туннелирование:
Есть два вида ssh проброса туннелей:
1.) Вы открываете на удаленной машине локальный порт
ssh root@удалённый_сервер -R 2222:ip_ПК:22

где 2222 на удаленной машине, а 22 локальный порт.

2.) На локальной машине открываем удаленный порт
ssh root@уалённый_сервер -L 2222:ip_ПК:22

где 2222 локальный порт, а 22 порт на удаленной машине.

Удаленный доступ к файлам: 
sudo apt-get install sshfs  #ставим нужный пакет

А далее присоединить необходимую папку:
sshfs name@server:/path/to/folder /path/to/mount/point

Защита от взлома SSH :
sudo apt-get install fail2ban 

Суть этого демона заключается в облегчении жизни пользователя, а именно, он в фоновом режиме сканирует логи (/var/log/pwdfail или /var/log/apache/error_log и др.) на наличие записей вида “Failed password for invalid user condor” для таких служб как sshd, apache, vsftpd и др., и после нескольких неудачных попыток производит блокировку по IP адресу.

Количество попыток авторизации, время блокировки и многие другие настройки находятся в файле:
 
/etc/fail2ban/jail.conf

Настраивается все очень просто, работает отлично.


  
Оповещение при подключении по SSH:
При установке выполняется файл /etc/ssh/sshrc. Поэтому мы создадим скрипт и поместим команду для его запуска в этот файл:

/usr/local/alert/start.sh

unset SSH_CONNECTION  

И добавил в /root/.bashrc код:

unset SSH_CONNECTION

/usr/local/alert/start.sh  


 Скрипт будет выводить сообщение с важной информацией через notify-osd.

 #!/bin/sh  
export DISPLAY=:0
notify-send "Security Warning" "Occured Login as user \"$USER\" $(echo $SSH_CONNECTION $SSH_TTY | sed 's/\(.*\) \(.*\) \(.*\) \(.*\) \(.*\)/using SSH connection at \5 from \1:\2 to \3:\4/')" -u critical -i /usr/local/alert/icon.png 
 
  Первой строкой мы устанавливаем текущий дисплей для правильной работы notify-osd, а затем выводим сообщение с иконкой и пометкой критической важности, используя системные переменные $USER (текущий пользователь) и $SSH_CONNECTION (данные о соединении, которые мы преобразуем с помощью регулярных выражений чрезвычайно удобной утилитой sed).

Сюда же можно добавить и отправку сообщения на e-mail (sendmail) или jabber (sendxmpp).


Не забудьте также доставить нужные библиотеки, для Ubuntu это делается так:
sudo apt-get install libnotify-bin sox

Если есть ~/.ssh/rc, то выполнится он, а система работать не будет. Более того, для правильного выполнения эти скрипты ничего не должны выводить в stdout (на экран).

 

воскресенье, 18 сентября 2011 г.

Сканер+принтер=копир

#! /bin/bash

file_time=`date +%d.%m.%y_%H.%M.%S` ; #создаем временную метку
scan_file="/tmp/tmp_${file_time}.ppm" ; #устанавливаем название файла скан-имиджа
scan_dir="~/scan_images" ; #назначаем целевую папку для хранения сканов


if `scanimage -n` &> /dev/null ; #проверяем наличие сканера
then
 if [ ! -d ${scan_dir}] ; #смотрим есть ли папка scan_images в домашней папки
 then
  mkdir ${scan_dir} ; #если нет то создаём
 fi
 scanimage -v -p --mode Gray --resolution 200 > ${scan_file} ; 
 #скан в /tmp c разрешением 200 dpi, оттенки серого и дописываем временную метку для истории
 if [ -f ${scan_file} ] ;  #проверяем наличие в /tmp сканированого файла
 then
  convert ${scan_file} ${scan_dir}/${file_time}.jpg ; 
  # конвертируем ppm в jpg и сохраняем его в папке сканов
  lpr -o landscape -o fit-to-page -o media=A4 ${scan_dir}/${file_time}.jpg 
  #отправляем jpg-файл на принтер по умолчанию
     echo "ГОТОВО !!!" ;
 else 
  exit 0 ; #выход из скрипта
 fi
else #если сканера нет или с ним работает другая программа
 echo "Сканер не подключен!" ;
fi

exit 0 ;