19.12.2008

Сервис - создает из фотографии обложку журнала

Вот нашел интересный сервис - создает из фотографии обложку журнала.
http://www.magmypic.com Fake magazine covers and comics with your picture
Результат работы:

А здесь можно наложить множество эффектов на сое фото http://ru.photofunia.com

02.12.2008

Как создавать PDF



Источник

Используя OpenOffice.org, вы можете без проблем сохранять документы. Достаточно в меню Файл найти пункт Экспорт в PDF… Однако, что делать если хочется иметь возможность экспорировать в PDF любые документы из любого редактора? Выход есть.Он заключается в установке программного принтера, сохраняющего отправленные на него документы в PDF.То есть, любая программа, которая имеет возможность печати, сможет сделать это.

Для установки программного принтера пропишите в терминале:

sudo apt-get install cups-pdf

sudo chmod +s /usr/lib/cups/backend/cups-pdf

Теперь, собственно, нужно создать сам принтер. Выбираем в меню Система - Администрирование - Печать и в открывшемся окне делаем 2-ой щелчок на кнопке Добавить.

Добавление принтера

В открывшемся диалоговом окне заполняем всё, как на скриншотах ниже.

Добавление принтера — Первый шаг

Добавление принтера — Второй шаг

Добавление принтера — Третий шаг

Теперь осталось выбрать при печати принтер под названием PDF.

По умолчанию файлы будут сохраняться в поддиректорию PDF вашей домашней директории.

Для того чтобы сменить место назначения, необходимо открыть файл /etc/cups/cups-pdf.conf под правами администратора (sudo gedit /etc/cups/cups-pdf.conf), найти в нем строчку “Out ${HOME}/PDF”, изменить ее на путь который необходим Вам, например: “Out ${HOME}/Documents/PDF” и сохранить файл. Для того чтобы Ваши изменения вступили в силу, необходимо перезагрузить сервис cupsys (sudo /etc/init.d/cupsys restart).


Синхронизация настроек SSH-клиента между компьютером и ноутбуком


Источник


Автор этих строк для работы использует как стационарный компьютер, так и ноутбук. В какой-то момент встала задача: поддерживать актуальным список известных ssh-хостов на обеих машинах, плюс к тому хотелось иметь одинаковый по содержанию файл authorized_keys, поскольку это существенно упрощает работу.

Ручная синхронизация занимает длительное время и не очень удобна, поэтому было приятно решение автоматизировать синхронизацию с помощью скрипта. Далее будет показано как именно это было сделано.

Вобщем-то сам скрипт не сложен и его работа становится очевидной из коментариев, поэтому просто приведём его листинг:

#!/bin/sh

# IP-адрес ноутбука
IP="192.168.111.71"

# Подготавливаем временную директорию
echo -n "Creating temporary directory..."
rm -rf '/tmp/syncssh'
mkdir -p '/tmp/syncssh'
echo "...OK"

# Сгружаем во временную директорию файлы с ноутбука
echo -n "Downloading files from notebook.."
scp ${IP}:"~/.ssh/known_hosts" "/tmp/syncssh" > /dev/null
echo -n ".."
scp ${IP}:"~/.ssh/authorized_keys" "/tmp/syncssh" > /dev/null
echo "..OK"

# Объединяем файлы с ноутбука и локальной машины
echo -n "Syncing files..."
cat /tmp/syncssh/known_hosts ~/.ssh/known_hosts | sort | uniq > /tmp/syncssh/known_hosts_new
cat /tmp/syncssh/authorized_keys ~/.ssh/authorized_keys | sort | uniq > /tmp/syncssh/authorized_keys_new
echo "...OK"

# Копируем новые файлы на локальную машину
echo -n "Installing new files on to local machine..."
mv /tmp/syncssh/known_hosts_new ~/.ssh/known_hosts
mv /tmp/syncssh/authorized_keys_new ~/.ssh/authorized_keys
echo "...OK"

# Загружаем файлы на ноутбук
echo -n "Uploading new files on to notebook.."
scp ~/.ssh/known_hosts ${IP}:"~/.ssh" > /dev/null
echo -n ".."
scp ~/.ssh/authorized_keys ${IP}:"~/.ssh" > /dev/null
echo "..OK"

# Удаляем временную директорию
echo -n "Removing temorary files..."
rm -rf '/tmp/syncssh'
echo "...OK"


Этот скрипт нужно сохранить например под именем ~/scripts/syncssh.sh и сделать его исполнимым:

chmod +x ~/scripts/syncssh.sh

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

~/scripts/syncssh.sh

При нормальной работе вывод скрипта будет выглядеть следующм образом:

Creating temporary directory......OK
Downloading files from notebook......OK
Syncing files......OK
Installing new files on to local machine......OK
Uploading new files on to notebook......OK
Removing temorary files......OK

На этом всё. Единственное на что стоит обратить внимание - чтобы каждый раз при копировании файлов с/на ноутбук не запрашивался пароль - полезно настроить авторизацию по ключу. Как это сделать можно прочитать здесь.


Удалённый доступ к рабочему столу

Источник


Иногда возникает необходимость получить доступ к рабочему столу, который в текущий момент запущен на удалённом компьютере. Стандартное ПО VNC в Linux позволяет лишь запустить ещё одну, виртуальную, копию X-сервера и работать в этом новом X-окружении (т.е. в новом рабочем столе).

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


Сложный способ решения проблемы
В противовес обычному VNC x11vnc действует так же как VNC в Windows — т.е. обеспечивает доступ к уже запущенной “настоящей” сессии (кстати, замечу, что в Windows это сделано так не как фича, а как вынужденная необходимость, не забывайте что за Windows XP может одновременно работать не более одного человека, а за Windows 2003 — не более 3-х, лицензии на дополнительные подключения (для Windows 2003) стоят дополнительных денег, а для Windows XP — просто не существуют)

С помощью следующих команд (взятых из x11vnc (1) ) можно автоматизировать процесс подключения к удалённому компьютеру по ssh, запуск там x11vnc в контексте работающего рабочего стола, туннелирование vnc трафика через зашифрованное соединение (ssh-туннель) и собственно подключение:

# Создаем соединение и запускаем x11vnc:

$ ssh -t -L 5901:localhost:5900 example.com ‘x11vnc -localhost -rfbauth .vnc/pass-x11 -display :0′

# Подключаемся

$ vncviewer -encodings ‘copyrect tight zrle hextile’ localhost:1

Hint: иногда может помочь опция -C для сжатия трафика туннелироваyного в ssh

Предварительно неплохо бы создать пароль для VNC (дабы никто обладающий доступом к вашему удалённому компьютеру не смог заюзать рабочий стол не зная пароля, это актуально на компьютерах, к которым имеют доступ несколько человек:

$ x11vnc -storepasswd .vnc/pass-x11

Простой способ решения проблемы
Используйте программу krfb для создания приглашения на рабочий стол своего компьютера и krdc (или любой другой VNC-клиент) для подключения

Offtopic
Что быстрее VNC?
На самом деле это не способ решения нашей проблемы, а просто быстрый аналог VNC
Если скорость работы VNC вас не удовлетворяет, а запускать графические приложения на удалённом компьютере всё же нужно, используйте ssh X11 tunneling — по производительности это решение превосходит все известные мне аналоги, в том числе под Windows.
достаточно при создании ssh соединения с удалённым компьютером разрешить перенаправление X11 (опция -X у ssh, также нужно чтобы эту возможность не запретил админ удалённого сервера), а затем в удалённом терминале просто запускать графические приложения, они отобразятся на вашем локальном X-сервере (кстати под Windows тоже есть реализация X-сервера)


Для начала установим x11vnc:

emerge x11vnc

Установка не займёт много времени, поскольку исходные тексты занимают всего около двух мегабайт. После установки на диске появятся следующие файлы (список может немного меняться в зависимости от версии и USE-флагов,использованных при сборке):

/usr/bin/x11vnc
/usr/share/man/man1/x11vnc.1.bz2
/usr/share/x11vnc/classes/ssl/VncViewer.jar
/usr/share/x11vnc/classes/ssl/index.vnc
/usr/share/x11vnc/classes/ssl/SignedVncViewer.jar
/usr/share/x11vnc/classes/ssl/proxy.vnc
/usr/share/x11vnc/classes/ssl/README
/usr/share/x11vnc/classes/ssl/UltraViewerSSL.jar
/usr/share/x11vnc/classes/ssl/SignedUltraViewerSSL.jar
/usr/share/x11vnc/classes/ssl/ultra.vnc
/usr/share/x11vnc/classes/ssl/ultrasigned.vnc
/usr/share/x11vnc/classes/ssl/ss_vncviewer
/usr/share/x11vnc/classes/VncViewer.jar
/usr/share/x11vnc/classes/index.vnc
/usr/share/doc/x11vnc-0.9.3/ChangeLog.bz2
/usr/share/doc/x11vnc-0.9.3/README.bz2

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

x11vnc

Однако если у вас слабый канал, то может быть полезным отключение полной цветопередачи (опция -notruecolor) а так же включить масштабирование (опция -scale). В этом случае команда будет выглядеть примерно так:

x11vnc -notruecolor -scale 2/3

В результате по сети будет передаваться изображение с восьмибитным цветом и размером в 2/3 от оригинала.

У x11vnc есть ещё одна особенность: после запуска x11vnc ждёт подключения клиента, а по завершении подключения - завершает свою работу. Если необходимо чтобы x11vnc был запущен постоянно и не завершал работу после отключения клиента - нужно добавить опцию -forever к строке запуска. Дополняя предыдущую команду получим:

x11vnc -notruecolor -scale 2/3 -forever

Так же полезно явно указать используемый дисплей при помощи опции -display. Если опция не указана то используется дисплей, указанный в переменной окружения DISPLAY. Если же переменная окружения DISPLAY не указана - создаётся новый дисплей.

Кроме того полезно настроить авторизацию. Для этого выполните команду:

x11vnc -storepasswd

Пароль будет сохранён как и в случае с другими реализациями vnc в файле ~/.vnc/passwd. Причём если у вас уже есть этот файл (например созданный при помощи realvnc) то его можно использовать без изменений. Чтобы x11vnc использовал авторизацию ему нужно передать опцию -usepw. В итоге получится вот такая команда:

x11vnc -notruecolor -scale 2/3 -forever -display :0 -usepw

Если используется KDE и есть необходимость запустить x11vnc вместе с KDE то можно создать скрипт ~/.kde/Autostart/startvnc.sh следующего содержания:

#!/bin/sh

x11vnc -notruecolor -scale 2/3 -forever -display :0 -usepw

Всё. Теперь нужно выполнить этот скрипт или перезапустить KDE и можно подключаться к вашему компьютеру командой:

vncviewer <Ваш_IP>

Большая часть написанного выше не привязана к конкретному дистрибутиву, и потому может быть использовано и в других дистрибутивах.
Источник:
http://ylsoftware.com/?action=news&na=viewfull&news=373

30.11.2008

Установка драйвера MADWIFI для сетевого адаптера Atheros 5xxx


Источник

Поставил на ноутбук новую версию Ubuntu 8.10 драйверы “из коробки” работать не захотели, на Ubuntu 8.04 было так же и там был установлен NDISWRAPPER и виндовый драйвер к нему. На этот раз я решил обойтись без виндовых драйверов и поставить MADWIFI. Этот драйвер разрабатывется для беспроводных адаптеров Atheros серии 5ххх и 9ххх. Официальная страница проекта http://madwifi.org/. Далее описана процедуры установки этого замечательного продукта :)

Я попробовал установить последнюю версию с сайта разработчика, но она не захотела собираться, поэтому решил собрать из CVS, для этого установим sudversion и все что может понадобиться для сборки программ из исходных кодов

Код:


aptitude install subversion build-essential

Затем скачаем из SVN свежую версию драйверов

Код:


svn checkout http://svn.madwifi.org/madwifi/trunk madwifi

Перед установкой новых драйверов нам необходимо отключить старые, которые стоят в системе по умолчанию и не работают…
Для этого откройте Администрирование > Драйверы устройств и отключите там драйвер “Support for Atheros wireless 802.11 LAN Cards”, затем отключите модули ядра от старого дррайвера

Код:


rmmod ath_hal
rmmod ath_pci
rmmod ath5k

После этого можно приступить к установке новых драйверов

Код:


cd madwifi
make
make install

После установки надо подгрузить необходимые модули в ядро

Код:


modprobe ath_pci
modprobe ath_hal
modprobe ath5k

Так же надо добавить модули в автозагрузку вписав их в файл /etc/modules, ниже пример моего файла

Код:


# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
loop
lp
rtc
sbp2
fuse
ath_pci
ath_hal
ath5k

Вот и все, выполните команду iwconfig и вы должны увидеть интерфейс wlan0 что означает что вы все сделали правильно и все заработало.

Wi-Fi. Linux. Краткий курс

Источник

“А оно вам надо?”

Вполне вероятно. Уж очень неуместны бывают сетевые кабеля, когда хочется полистать какой-нибудь online-magazin в шезлонге на балконе… Тем более, что декларируемые 54 Mbit/sec OFTM “выливаются” во вполне приличные 20Mbit/sec. Не говоря уже о тех случаях, когда прокладка кабеля просто не представляется возможной или уж вовсе “лениво” дырявить очередное шлакобетонное перекрытие. С учётом нынешней стоимости оборудования Wi-Fi (~20$ за адаптер и ~70$ за аналог hub-а) ответ во многих случаях очевиден: полюбопытствовать - стоит.

802.11?

С учётом продекларированной “краткости”, остановимся лишь на стандартном, в настоящее время, 802.11g (54 Mbit/sec OFTM), добавив лишь, что адаптеры 802.11g в абсолютном большинстве случаев поддерживают и 802.11b (11 Mbit/sec). При обсуждении защиты не удастся также обойти вниманием 802.11х, но об этом - ниже.

А почему, собственно, - Linux? К сожалению, реализация что поддержки устройств, что протоколов обеспечения безопасности выполнена в благородном *-nix семействе по-разному. Не пытаясь, в соответствии с рекомендациями К. Пруткова “объять необъятное”, придётся ограничиться Linux. Тем более, что можно констатировать: в Linux поддержка адаптеров, для которых и не для всех-то версий m$win находятся драйвера, решена довольно успешно.

И почему - кратко? В соответствии с вышеупомянутыми рекомендациями К. Пруткова. В затронутой теме отдельного разговора заслуживают, как минимум: использование NDIS-драйверов под Linux, технические аспекты Wi-Fi, создание ip-туннелей, вопросы аутентификации и шифрования… Но, поскольку необъятное объять всё-таки не представляется возможным, то лучше быть кратким.

Кроме того, я вообще не сторонник конкретных рецептов: слишком неэффективно, принимая во внимание разнообразие систем на базе Linux, не говоря уже о nix-ах “вообще”. Не нужно себя обманывать: в каждом конкретном случае самому разбираться всё равно придётся. Да и так ли это плохо?
“Что есть сие?”

Для простоты и всё той же краткости будем считать, что Wi-Fi - тот же Ethernet, только без кабелей. Хотя, справедливости ради, стоило бы вспомнить, что первые устройства разрабатывались не как “расширение”, а, скорее, как альтернатива последнего. Но, это - дела минувшие, а нынче адаптер с точки зрения ОС представляется как сетевой, к которому приложимы все обычные средства управления и конфигурирования “a la” ifconfig и т.д.

При ближайшем рассмотрении, однако, различия всё-таки обнаруживаются. Так, для соединения адаптеров Ethernet нужен, как минимум “кросс-кабель”, а лучше - hub. То, что с Wi-Fi кабель не нужен - разумеется, но, оказывается, вместе с ним пропадает и ограничение “только два - или hub”. Несколько Wi-Fi адаптеров легко могут общаться между собой. У них это называется “Ad-Hoc“. Отметим этот режим как “вариант”, но зададимся вопросом: а зачем тогда нужен упомянутый выше аналог hub-а? Причин несколько, и чисто физические (большая пропускная способность и лучшая, как правило, реализация радио-тракта) при этом не главные. Важнее то, что Access Point (AP - для краткости. Именно так называется этот самый аналог hub-а) - ключевой участник организации защиты сети. Режим с AP называется “Infrastructure” и имеет средства защиты, отсутствующие для режима Ad-Hoc. К тому же, хорошо бы иметь возможность объединить нашу сеть Wi-Fi с какой-нибудь локальной. Опять же: AP представляется для этого более подходящим устройством, чем IBM PC с парой сетевых карт, одна из которых - Wi-Fi.

Сложив всё необходимое для работы AP в одну коробочку, производитель задумался: а не назначить ли её ещё и роутером/файрволом “по совместительству”? Ведь, практически, всё необходимое уже внутри… Так появились Wi-Fi роутеры, которые, помимо функций AP, имеют порт для подключения модема кабельного, ADSL и прочих в этом роде, обеспечивающих соединение с Сетью. Если учесть, что такой роутер, практически, не дороже обычной AP, то решение имеет хорошие маркетинговые перспективы. Знакомимся поближе…
Включаем.

“Монтаж” PCI-, USB- или PCMCI- адаптера опускаю: по-моему, такая информация унижает читателя. Теперь нужно обеспечить поддержку данного устройства. В Linux, как известно, это достигается загрузкой соответствующего модуля. Как правило: даже нескольких, но “затребовав” с помощью modprobe нужный, можно быть уверенным в загрузке и всех, ему необходимых. Это не совсем так для PCMCI и USB: тут кое о чём нужно позаботиться самому… Однако, о чём это я? RTFM, поскольку сейчас речь о Wi-Fi.

Один из вариантов получения нужного “драйвера” я всё же упомяну - ndiswrapper. Вспомним, что производитель, как правило, снабжает свой адаптер нужным драйвером и мы даже оплачиваем его при покупке. Драйвер этот, как правило, для m$win, и уж, наверняка, в виде двоичного файла. Обидно, но делать нечего. Кроме как попытаться использовать этот драйвер. Для меня это второй известный случай успешного использования проприетарного ПО, презентуемого в двоичном виде, под Linux (первый - кодеки в mplayer). Итак:

* берём ndiswrapper с http://ndiswrapper.sourceforge.net;
* make; make install;
* инсталлируем NDIS (win) драйвер командой:

ndiswrapper -i filename.inf

где filename.inf - inf-файл из состава драйвера;
* если в ответ на ndiswrapper -l вы получите что-то вроде:

Installed ndis drivers:

driver_name driver present, hardware present

- примите поздравления;
* позаботьтесь о том, чтобы модуль ndiswrapper был загружен (а используете вы для этого rc.modules, modules.conf или нечто из /etc/hotplug - ваше дело). В команде загрузки модуля в качестве параметра if_name=desired_name можно указать имя сетевого интерфейса, “появляющегося” после загрузки модуля. Если ничего не указывать, имя будет - wlan0;
* позаботьтесь о том, чтобы этот новый интерфейс конфигурировался при старте: вообще-то это делается командой ifconfig, но мало ли, какими конфигурационными файлами и программами настройки завуалировал этот факт мейнтейнер вашего дистрибутива…

Собственно - всё. Модуль может быть и другим, разумеется, если вы, например, - счастливый обладатель адаптера, поддерживаемого ядром Linux, но цель прежняя - получить сетевой интерфейс, идентифицируемый (следовательно: и - конфигурируемый) стандартными средствами.
Соединяемся.

Итак, сетевой интерфейс имеем. Опять, однако, придётся вспомнить, что это “не совсем ethernet”. Или: ethernet, но “радио”. На следующем этапе потребуются утилиты Жана Турилеса (Jean Tourrilhes), известные как “Wireless Tools“. Их немного, а нам, для начала, хватит и вовсе двух: iwlist и iwconfig. Запускаем:

iwlist wlan0 scan

и, если в доступном эфире адаптером обнаруживаются сигналы Wi-Fi, то на экране можно будет прочесть достаточно подробный протокол. Источником сигнала может быть только AP или другой адаптер, разумеется. С AP, обычно, прилагается утилита конфигурации, которой можно воспользоваться , “достучавшись” до AP через сетевой интерфейс или последовательный порт (уж какой у данной AP есть). А вообще-то, какой-то сигнал AP выдаст в эфир по включению и без настройки - и достаточно для начала. Ну, а если решитесь сразу настраивать AP, то совет только один: не надо сразу включать средства защиты. Никакие.

В отсутствие AP сигнал нам может подать только другой адаптер (очевидно, что в отсутвие AP, адаптеров у вас должно быть два, как минимум). Только вот адаптер-то по умолчанию выдавать ничего не будет. Переходим к другой утилите - iwconfig. Вообще-то iwconfig - нормальная консольная утилита, первым параметром ожидающая имя интерфейса, а последующими - команду с параметрами. Команд этих сравнительно немного и с их помощью можно сделать всё необходимое (нужно только не забыть, что большая часть команд выполняют настройку адаптера, включает же его, фактически, только одна - essid. Получается: именно она должна быть последней в последовательности действий).

Привычнее, однако, настройка Wi-Fi выглядела бы при загрузке: как это вам уже, надеюсь, удалось для драйвера адаптера и сетевого интерфейса. Трудности здесь обычные: проистекающие от разнообразия дистрибутивов. Для начала стоит выяснить: а нет ли в вашем дистрибутиве этих самых “Wireless Tools“? Поскольку, если есть, то, вероятнее всего, мейнтейнер уже включил в пакет файлы настройки и скрипты, нужные для настройки и включения Wi-Fi. Если нет, то (спасибо Жану) придётся почитать DISTRIBUTION.TXT, являющийся частью source-пакета. Сложного там ничего нет: всё сводится к определению нескольких параметров в качестве переменных среды и последовательному запуску iwconfig. Параметры все описаны (man iwconfig), а на настоящем этапе потребуются совсем не многие:

* ESSID (extended network name) - самый главный параметр. Имя сети. Разумеется ESSID у устройств, связь между которыми нужно установить, должен быть одинаковым - будь то AP или адаптер;
* MODE (Operation mode). При наличии AP - “Managed”, в отсутствие - “Ad-Hoc”. В моде “Managed” адаптер, не обнаружив при старте сети с ESSID, таким же, как его собственный, выключается. В моде “Ad-Hoc” - работает постоянно: изображает из себя AP;
* CHANNEL - номер канала. Также один для всех клиентов создаваемой сети. Если iwlist сообщил вам о наличии в эфире нескольких сетей, занимающих, соответсвенно, несколько каналов, я думаю, вы догадаетесь выбрать для своей - незанятый;
* RATE можно оставить “auto”, в надежде, что будет выбрана максимальная скорость (что практически всегда соответствует действительности);

К остальным параметрам, включая вскоре потребующийся нам “Encryption key”, вернёмся чуть позднее.

iwconfig без параметров всегда покажет состояние интерфейсов Wi-Fi. После выключения настроенного адаптера (аппаратно ли, из-за “пропадания” AP в режиме Infrastructure) заново включить его можно командой:

iwconfig wlan0 essid your_essid

где wlan0 - имя сетевого интерфейса, а your_essid - имя вашей сети.Пока - всё. Итого, на данном этапе имеем:

* интерфейс wlan0, появившийся после загрузки драйвера;
* его сетевые настройки, выполненные обычным способом (dhcpcd, ifconfig, route и т.д.);
* его специфические Wi-Fi настройки, выполненные iwconfig. Поскольку эти настройки уже включают в себя данные об обнаруженной нами в эфире с помощью iwlist сети, то результатом, трёх вышеперечисленных пунктов должен быть, как минимум, успешный ping до AP или другого адаптера.

Надеюсь, так оно и есть. Ну, а есть ping - получите и всё остальное. В соответствии с наличием в вашей сети сетевых сервисов и настроек маршрутизации. К Wi-Fi это отношения уже не имеет.
Защищаемся

Способы защиты передаваемой информации стали неотъемлемой частью стандарта 802.11 по вполне очевидной причине: в иллюзию защищённости кабеля ethernet пользовател поверит намного охотнее, чем в защищённость данных, передаваемых через эфир. Правильно, в общем-то. Хотя более незащищённой сети, чем сегмент ethernet, охватывающий жилой дом или бизнес-центр, просто не бывает: не нужно быть хакером, чтобы знать о существовании у ethernet-адаптера “promiscuous mode“, а ПО перехвата и парсинга пакетов даже писать не придётся: “бери - не хочу”. Ещё один, достойный сожаления, пример - домашний компьютер, подключённый к Интернет со всеми мыслимыми и немыслимыми клиентами (в терминологии m$win), запущенными сервисами и открытыми на этом соединениипортами. Да мало ли ещё опасностей, намного более неожиданных, чем “перехват” пакета Wi-Fi, ожидает неискушённого пользователя в мире ip?… Ну, да это его проблемы. Вернёмся к 802.11.

Поскольку инженеры из IEEE, разрабатывая протокол, ориентировались всё-таки не на “самоделкиных”, расставляющих hub-ы в открытых помещениях и не на win’98, нежданно-негаданно подключенную к Интернет, то о защите они были обязаны задумываться с самого начала. Однако: недостаточно, как вскоре выяснилось. Так называемый WEP (wired equivalent privacy), использующий алгоритм шифрованиф RC4 при длине ключа 40/104 бит очень скоро стал материалом для хрестоматийного примера взлома защиты. Wi-Fi Alliance опять бросился дорабатывать протокол (работа закончена в июле 2004-го), параллельно предлагая временные альтернативы, такие как WPA (Wi-Fi Protected Access). Проблема заключается в том, что новый стандарт должен стать правилом для множества производителей, поставляющих аппаратуру Wi-Fi. Перепрошивка потребуется десяткам миллионов уже существующих устройств, а тем, для которых перепрошивка невозможна, просто потребуется замена. По-моему, ребята немного “влипли”…

Что же, откажемся от таких привлекательные возможностей, пока производители не защитят Wi-Fi должным образом? Не думаю. Во-первых, возможность взлома ещё не означает его высокой вероятности. И PGP можно взломать, только для этого нужны довольно приличные вычислительные мощности. И то, что “легко” для ФБР, окажется “не по зубам” соседскому “хакеру”. Нужно только прикинуть, кому может понадобиться ваша сеть и для чего. Так что, предлагаю оценить арсенал средств защиты и решить, что стоит использовать, а что - нет. Итак, имеем:

* вышеупомянутый WEP, поддерживаемый всеми устройствами Wi-Fi. Хоть его и “ломают в порядке демонстрации”, а использовать - нужно. Особенно, если это единственно доступный аппаратно реализованный способ шифрования (а для Ad-Hoc это так и есть). Разумеется, предпочтительнее 104 битный ключ, почаще меняйте его, не держите канал включённым без нужды - и, вероятнее всего, что с прецедентом взлома столкнуться вам придётся не скоро.
При работе с iwconfig ключ шифрования помещается обычно в переменную KEY (”Encryption key”). Ключ выражается обычно в HEX-символах, выражению в ascii предшествует префикс s:. Если ключей несколько, то все они перечисляются в одной переменной, разделяемые пробелами, номерами ключа (в квадратных скобках) и ключевым словом key;
* при использовании AP, запретите ей передавать essid широковещательными посылками. Не Бог весть какая защита, но случайно оказавшийся в зоне приёма адаптер автоматически в сеть, по крайней мере, уже не войдёт;
* при наличии такой возможности - включите в AP контроль MAC-адресов: пусть она обслуживает только “своих”. Конечно, MAC можно “выудить” из перехваченного пакета и подставить в свой… будет кто-то из ваших соседей этим будет заниматься? Вам - решать…
* WPA, тот самый продукт группы I (Security), занимавшейся усовершенствованием механизмов защиты в рамках 802.11. Наверное, не бывает ничего окончательно совершенного, но на настоящий момент считается, что аутентификация в сочетании с алгоритмом шифрования AES (это, правда, уже WPA2), обеспечивают достаточную защиту Wi-Fi. Если оставаться в рамках продекларированной краткости, то необходимым минимумом знаний по этому поводу будет только то, что WPA - компромисс между существующим оборудованием и усовершенствованными алгоритмами защиты. И компромисс этот состоит в том, аппаратура по-прежнему использует RC4-шифрование, только вот ключ к каждому пакету генерируется свой. Ключ этот может генерироваться внешним сервером аутентификации (RADIUS, как правило. Проприетарный сервер. Версия его входит в M$ IIS, если не ошибаюсь), или - самими субъектами обмена. В соответсвии с этим IEEE 802.1X определяет “WPA-Enterprise”(WPA with EAP) и “WPA-Personal”(WPA-PSK) режимы. Лучшее известное мне описание работы WPA читайте в составе wpa_supplicant. Последний, кстати, реализовани и для m$win;
* последняя группа средств защиты хоть и не связана с Wi-Fi непосредственно, но расценивается многими как наиболее перспективная. Речь идёт о защите ip пакетов вне зависимости от среды передачи. Ну, в самом деле: какая вам разница, осуществляется передача в эфире, посредством витой пары или оптоволоконного кабеля, если последние физически вами всё равно не контролируются? Вполне естественно раздельно рассматривать аутентификацию, шифрование и собственно транспорт. Оставив, таким образом, “в ведении” Wi-Fi только голый TCP/IP - с единственно обрабатываемым портом к какому-нубудь хорошо защищённому сервису, предоставим последнему и аутентификацию, и шифрование в рамках сеанса. Что будет толку от взлома WEP, если его результатом станет лишь приглашение аутентифицироваться, да ещё и зашифрованное, свят-свят… Угадываются всякие туннели, VPN-ы и т.п. Выбор достаточно широк.
* проприетарные pptp и L2PT. Сервера отношения к Linux не имеют, но почему бы и не быть их клиентами?
* Vtune
* CIPE
* SecurePoint & VPN - если вам требуется законченное решение в виде iso-образа, мегабайт эдак на двести с лишним.

Наверняка существуют и ещё. Почему бы нет, если под Linux возможно создание виртуальных туннелей хоть для фреймов ethernet, хоть для ip-пакетов. “Твори, выдумывай, пробуй”. Вот только необходимость иметь хотя бы клиентов для m$win, ограничивает это разнообразие. Что ни говори, а при обсуждении вопросов коммуникаций, игнорировать существование win-хостов глупо…

Короче: выбрать есть из чего. И выбрать - нужно. Даже при полном пренебрежении к вопросам защиты не стоит всё-таки уподобляться оператору кабельных сетей, который вместо прокладки кабеля предлагает применить Wi-Fi (за “не слабые”, кстати, $200). И только месяц спустя вы обнаруживаете, что к установленной на лестничной площадке AP ЛЮБОЙ Wi-Fi клиент подключается АВТОМАТИЧЕСКИ. Оператору-то всё равно: трафик оплатит подписавший договор, а вам?
Практикум

Ну, и несколько примеров…

* Пара компьютеров в квартире с периодической потребностью в обмене по http, ftp, smb.
Мода - Ad-Hoc. Защита - WEP. В дополнение можно защитить сервисы (https для http, запрет anonimous + хорошие пароли для ftp, исключительно парольный доступ к smb-ресурам).
* Та же пара, но один из хостов имеет выход в Интернет, что означает, как правило, потребность в почти постоянном соединении.
Поскольку в Ad-Hoc помимо WEP и защищаться-то особенно нечем, то лучше на компьютере, имеющем выход в Интернет, запустить vpn-сервер: pptp, если это ХР, CIPE или VTun, если это Linux. Таким образом, в сравнительно “открытом” режиме (WEP, кстати, стоит оставить) происходит только открытие сеанса связи с vpn-сервером. Далее трафик шифруется по правилам созданного туннеля.
* Несколько компьютеров в квартире и одно ADSL или кабельное подключение к Интернет.
Infrastructure вместо Ad-Hoc, разумеется. AP с функциями роутера. WEP, запрещение трансляции essid, контроль MAC-адресов - как минимум. WPA-PSK - очень желательно. Хотя для этого и потребуется позаботиться о наличии wpa_supplicant на всех хостах. Независимо от ОС.
* Удалённое подразделение.
AP в основном офисе, клиенты - в удалённом подразделении. WEP, запрещение трансляции essid, контроль MAC-адресов, WPA-PSK. Вариант: создание туннеля между одним из компьютеров основного офиса и одним из компьютеров подразделения. В этом случае можно попытаться обойтись без AP, защищённость хороша настолько, насколько защищён туннель. Существенным недостатком становится обязательное включение упомянутой пары компьютеров для обеспечения связи между офисом и подразделением и необходимость создания кабельной сети в подразделении. Ещё вариант: связь между подсетями офиса и подразделения обеспечивает пара AP в режиме WDS (Wireless Distribution System). Если считать защищённость уровня WPA-PSK достаточной и смириться с необходимостью монтажа ethernet-сегмента в подразделении, получается довольно экономично.
* Wi-Fi, как альтернатива ethernet для ЛВС.
Теоретически - возможно, если хватит пропускной способности: 20Мбит всё же меньше 100-та, а с увеличением количества хостов полоса пропускания сети ещё уменьшится… Очевидно, в данном случае уже не обойтись без выделенного севера идентификации, Не уверен также, что администрирование такой сети будет простым: скорее, забот администратору прибавится. Предпочтительнее выглядит простая Wi-Fi сеть, но жёстко контролируемый доступ к ресурсам: эффективные механизмы идентификации, шифрование создаваемых между клиентами и сервером туннелей… Принимая во внимание опыт предоставления сервисов в Интернет, такая реализация представляется лично мне более жизненной. Поживём - увидим.

Приведенные примеры - лишь иллюстрация того факта, что имеется довольно много способов применить Wi-Fi с пользой. Не исключено, что для кого-нибудь - уже сейчас.


Настройка ограничения и распределения канала (HTB Shaper)


Источник

Если у Вас есть Ваша собственная домашняя сеть с двумя или более компьютерами и она подключена к интернету, вы точно знаете о тех проблемах с одновременным доступом к сети, которые практически неизбежны при таком подключении. Самой большой и раздражающей проблемой является разделение ширины канала между всеми участниками сети: когда вы пытаетесь работать через ssh с удалённым сервером, а в этот момент ваша wife/брат/друг решает поглядеть новый и очень классный видео клип с Google Video или YouTube, Ваше соединение замирает и вы можете забыть о комфортабельной работе . В этой маленькой статье я дам вам простое решение этой проблемы, которое позволит вам делать все, что угодно не думая о проблемах разделения трафика!

Для начала замечу, что Ваша сеть должна быть подключена к Internet при помощи Linux сервера. Если Вы подключены через какой-то тупой аппаратный маршрутизатор, то Вам сильно не повезло и вы не сможете воспользоваться приведенным примером.

CBQ и HTB - представляют собой систему ограничения трафика по скорости. Это наиболее распространённые варианты шейперов.
HTB - более точнее ограничивает скорость и удобней настраивается.

Шейпер работает так: все ИСХОДЯЩИЕ пакеты, т.е. предназначенные для выдачи на любой интерфейс вместо того, чтобы быть отправляться напрямую на интерфейс ставятся в разные очереди. Длина каждой очереди настраивается. Настраиваются также: скорость выдачи данных из очереди (это и есть собственно лимит), длина очереди (размер в байтах), размер пакета, выходящего из очереди (может не совпадать с длиной поступающих пакетов) и многое другое. Пакеты, не помещающиеся в очередь, сбрасываются. Данные из очереди выдаются на интерфейс и далее - к клиенту. Вот как раз каждый файл конфигурации и представляет собой описание одной очереди.

Далее приведен пример настройки шейпера с использованием скрипта htb.init, на сервере с дистрибутивом Ubuntu, с каналом в интернет 6Mbit/sec in/out и локальной сетью 100Mbit/sec in/out,
с 2мя интерфейсами eth0 (интернет) и eth1 (локальная сеть), а так же на сервере используется NAT реализованный с помощью iptables. Имеется 3 компьютера в локальной сети которые получают доступ в интернет и другую локальную сеть через этот сервер.

Для начала скачайте сам скрипт htb.init который будет генерировать вам правила шейпера согласно созданным вами файлам конфигурации.
Сайт проекта http://sourceforge.net/projects/htbinit/
Затем назовем скачанный скрипт htb и поместим в директорию /usr/sbin, присвоим аттрибуты для запуска командой chmod +x /usr/sbin/htb.
По желанию можно добавить скрипт в автозагрузку системы, сделать это можно следующими командами:
Код:


ln -sf /usr/sbin/htb /etc/init.d/htb
update-rc.d htb start 20 0 1 2 3 4 5 .

Теперь надо создать директории и файлы необходимые для правильной работы скрипта.
Код:


mkdir /etc/sysconfig
mkdir /etc/sysconfig/htb
touch /var/cache/htb.init

Теперь можно приступать к написанию конфигурационных файлов нашего шейпера.
Создадим основные файлы для интерфейса eth0
Код:


cd /etc/sysconfig/htb
touch eth0
vim eth0

Впишите в файл следующие строки:
Код:


DEFAULT=0
R2Q=100

Этот файл указывает номер класса в который попадет весь не классифицированный трафик и точность шейпера, чем меньше значение R2Q тем меньше погрешности в плюс или минус по скорости, в Kbit/sec.

Создадим следующий файл
Код:


touch eth0-2.root
vim eth0-2.root

Впишите в файл следующее:
Код:


RATE=100Mbit
CEIL=100Mbit

Этот файл корневого класса для интерфейса, в нем содержится макисмально возможная скорость, из которого будут брать ресурсы дочерние классы.

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

Далее создадим файлы для пользователей которые выходят в интернет через наш сервер, и имеют разную скорость доступа. Назовем пользователей vasya, petya, dima и дадим пользователю vasya скорость доступа 1600Kbit/sec in/out, пользователю petya 800Kbit/sec in/out и пользователю dima 256Kbit/sec in/out. Так же на сервере стоит фтп, и надо разрешить пользователям качать с него со скоростью выше чем скорость доступа к интернету. Так же при использовании NAT необходимо использовать iptables для маркировки пакетов, иначе шейпер будет ограничивать только скорость закачки пользователей.
Адресация нашей локальной сети у нас будет 192.168.0.0/22
Адресация локальной сети за интерфейсом eth0 у нас 10.0.0.0/8
Адрес сервера 192.168.0.1 и далее по порядку адреса клиентов.

Создадим файл eth0-2:05.default
Код:


touch eth0-2:05.default
vim eth0-2:05.default

Впишите в файл следующее:
Код:


RATE=99Mbit
CEIL=99Mbit
LEAF=sfq

Этот файл является классом для всего трафика который не подходит под другие классы.

Далее следующий файл
Код:


touch eth0-2:06.lanload
vim eth0-2:06.lanload

Впишем в файл
Код:


RATE=50Mbit
CEIL=50Mbit
LEAF=sfq
PRIO=99
RULE=10.0.0.0/8,10.20.30.40/22

Этот файл ограничивает скорость закачки для клиентов локальной сети которая находится за интерфейсом eth0 и имеет адресацию 10.0.0.0/8, а сам интерфейс eth0 имеет адрес 10.20.30.40

Теперь файлы для наших трех компьютеров
Код:


touch eth0-2:07.vasya
vim eth0-2:07.vasya

Впишите в файл
Код:


BURST=50Kb
RATE=1600Kbit
CEIL=1600Kbit
LEAF=sfq
PRIO=1
MARK=102

Этот файл отвечает за ограничение исходящей скорости доступа в интернет для абонента vasya,
но для корректной работы надо добавить правила маркировки пакетов от этого пользователя в iptables IP адрес у пользователя vasya 192.168.0.2, создадим для него правила фаервола.
Код:


iptables -t mangle -A PREROUTING -s 192.168.0.2 -j MARK --set-mark 102
iptables -t mangle -A PREROUTING -s 192.168.0.2 -j RETURN

Если на вашем сервере на котором будет работать шейпер не используется NAT вы можете не использовать маркировку пакетов и просто заменить параметр MARK=102 на RULE=192.168.0.2/22.
На этом с пользователем vasya Закончим и перейдем к следующему.

Создадим файл eth0-2:08.petya
Код:


touch eth0-2:08.petya
vim eth0-2:08.petya

Впишите в файл
Код:


BURST=50Kb
RATE=800Kbit
CEIL=800Kbit
LEAF=sfq
PRIO=1
MARK=103

Этот файл является классом для пользователя petya, не забудьте так же создать правила фаервола для маркировки пакетов.
Код:


iptables -t mangle -A PREROUTING -s 192.168.0.3 -j MARK --set-mark 103
iptables -t mangle -A PREROUTING -s 192.168.0.3 -j RETURN

Следующий пользователь dima
Код:


touch eth0-2:09.dima
vim eth0-2:09.dima

Впишите в файл
Код:


BURST=50Kb
RATE=256Kbit
CEIL=256Kbit
LEAF=sfq
PRIO=1
MARK=104

Этот файл будет ограничивать скорость интернета пользователю dima, не забываем про фаервол
Код:


iptables -t mangle -A PREROUTING -s 192.168.0.4 -j MARK --set-mark 104
iptables -t mangle -A PREROUTING -s 192.168.0.4 -j RETURN

На этом настройки классов для интерфейса eth0 закончены, перейдем к интерфейсу eth1.

Создадим файлы конфигурации для интерфейса eth1
Так как NAT на интерфейсе eth1 у нас не используется то маркировать пакеты не надо, просто настроим шейпер на работу с адресами.
Создайте файл eth1 с содержимым
Код:


DEFAULT=0
R2Q=100

Создайте файл eth1-2.root с содержимым
Код:


RATE=100Mbit
CEIL=100Mbit

Создайте файл eth1-2:05.default с содержимым
Код:


RATE=99Mbit
CEIL=99Mbit
LEAF=sfq

Создайте файл eth1-2:06.lanload с содержимым
Код:


RATE=50Mbit
CEIL=50Mbit
LEAF=sfq
PRIO=99
RULE=192.168.0.0/22,192.168.0.1/22

Создайте файл eth1-2:07.vasya с содержимым
Код:


BURST=50Kb
RATE=1600Kbit
CEIL=1600Kbit
LEAF=sfq
PRIO=1
RULE=192.168.0.2/22

Создайте файл eth1-2:08.petya с содержимым
Код:


BURST=50Kb
RATE=800Kbit
CEIL=800Kbit
LEAF=sfq
PRIO=1
RULE=192.168.0.3/22

Создайте файл eth1-2:09.dima с содержимым
Код:


BURST=50Kb
RATE=256Kbit
CEIL=256Kbit
LEAF=sfq
PRIO=1
RULE=192.168.0.4/22

Вот собственно и все, прверьте что все созданные вами файлы находятся в каталоге /etc/sysconfig/htb и можно тестово прогнать скрипт командой
Код:


htb compile

В ответ на которую скрипт сгенерирует список правил шейпера согласно файлам конфигурации.

Далее можно применить настройки командой
Код:


htb start

Просто запустив команду htb вы увидите список команд скрипта, так же немного полезной информации содержится в самом скрипте, вы можете открыть его в текстовом редакторе и прочитать.
Так же советую вам ознакомится с устройством шейпера HTB по адресу http://remizov.pp.ru

Настройка маршрутизации


Источник

Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные маршрутизации хранятся в одной из таблиц ядра. Вести таблицы маршрутизации можно статически или динамически. Статический маршрут — это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Для выполнения динамической маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP, BGP и т. д.

Динамическая маршрутизация необходима в том случае, если у вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например, через разные Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно не меняются, даже если используется динамическая маршрутизация.

Для персонального компьютера, подключаемого к локальной сети, в большинстве ситуаций бывает достаточно статической маршрутизации командой route. Прежде чем пытаться настраивать маршруты, просмотрите таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны увидеть что-то вроде следующего

Код:


rigon@ubuntu-comp:~$ netstat -n -rТаблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth1

Если таблица пуста, то вы увидите только заголовки столбцов. Тогда надо использовать route. С помощью команды route можно добавить или удалить один (за один раз) статический маршрут. Вот ее формат:

Код:


route -f операция -тип адресат шлюз dev интерфейс

Здесь аргумент операция может принимать одно из двух значений: add (маршрут добавляется) или delete (маршрут удаляется). Аргумент адресат может быть IP-адресом машины, IP-адресом сети или ключевым словом default . Аргумент шлюз — это IP-адрес компьютера, на который следует пересылать пакет (этот компьютер должен иметь прямую связь с вашим компьютером). Команда

Код:


route -f

удаляет из таблицы данные обо всех шлюзах. Необязательный аргумент тип принимает значения net или host . В первом случае в поле адресата указывается адрес сети, а во втором — адрес конкретного компьютера (хоста).
Как правило, бывает необходимо настроить маршрутизацию по упоминавшимся выше трем интерфейсам:

* локальный интерфейс (lo),
* интерфейс для платы Ethetnet (eth0),
* интерфейс для последовательного порта (PPP или SLIP).

Локальный интерфейс поддерживает сеть с IP-номером 127.0.0.1. Поэтому для маршрутизации пакетов с адресом 127…. используется команда:

Код:


route add -net 127.0.0.1 lo

Если у вас для связи с локальной сетью используется одна плата Ethernet, и все машины находятся в этой сети (сетевая маска 255.255.255.0), то для настройки маршрутизации достаточно вызвать:

Код:


route add -net 192.168.36.0 netmask 255.255.255.0 eth0

Если же вы имеете насколько интерфейсов, то вам надо определиться с сетевой маской и вызвать команду route для каждого интерфейса.

Поскольку очень часто IP-пакеты с вашего компьютера могут отправляться не в одну единственную сеть, а в разные сети (например, при просмотре разных сайтов в Интернете), то в принципе надо было бы задать очень много маршрутов. Очевидно, что сделать это было бы очень сложно, точнее просто невозможно. Поэтому решение проблемы маршрутизации пакетов перекладывают на плечи специальных компьютеров — маршрутизаторов, а на обычных компьютерах задают маршрут по умолчанию, который используется для отправки всех пакетов, не указанных явно в таблице маршрутизации. С помощью маршрута по умолчанию вы говорите ядру “а все остальное отправляй туда”. Маршрут по умолчанию настраивается следующей командой:

Код:


route add default gw 192.168.1.1 eth0

Опция gw указывает программе route, что следующий аргумент - это IP-адрес или имя маршрутизатора, на который надо отправлять все пакеты, соответствующие этой строке таблицы маршрутизации.

А теперь пример из жизни
Имеются следующие интерфейсы /etc/network/interfaces

Код:


auto loiface lo inet loopbackauto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255
auto eth1
iface eth1 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255

Интерфейс eth0 это связь с локальной сетью состоящей из 20 подсетей 192.168.1.х-192.168.20.х
Интерфейс eth1 это связь с ADSL модемом с выходом в интернет. Так большинство запросов идут в Инет на этом интерфейсе прописываем шлюз (gateway 192.168.254.1) данный параметр указывает в системе шлюз по-умолчанию, обращаю внимание, что шлюз надо прописывать только на одном интерфейсе, иначе в системе появятся 2 маршрута по умолчанию и естно будет затупление в работе. С интернетом разобрались.
Но требуется еще просматривать ресурсы локальной сети
для этого надо выполнить вот эти команды

Код:


route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0

На этом примере маршрутизируются 3 подсети
Все эти команды и многие другие можно прописать в файлк /etc/network/interfaces в итоге получится следующее:

Код:


auto loiface lo inet loopbackauto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
auto eth1
iface eth1 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255

Ну вот и все по аналогии настраиваются любое кол-во маршрутов и сетевых интерфейсов

Дополнение 1.

Обратите внимание

hwaddress ether 00:E0:4C:A2:C4:48

Так легко можно изменить MAC, не забываем после редактирования файла делать рестарт

sudo /etc/init.d/networking restart

Дополнение 2.

Следует отметить, что:
1) Для того, чтобы просмотреть таблицу маршрутов достаточно запуска команды route без параметров или route -n, если в сети нет DNS.
2) Маска может быть записана проще, в виде /x, где x - число единичных битов, например:

route add -net 192.168.36.0/24 eth0

вместо

route add -net 192.168.36.0 netmask 255.255.255.0 eth0

Настройки сети размещаются в файле /etc/network/interfaces При подключение к Inet через VPN (ppp0…), необходимо заменять маршрут по умолчанию на ppp0.

А проще указать в файле /etc/ppp/options следующее:

defaultroute
replacedefaultroute

Тогда маршрут заменяется сам и при отключении восстанавливается.

Дополнение 3.

Есть прога, серверная часть которой стоит во внутренней сети, например Radmin Server, чтобы к нему подключиться клиентская прога (Radmin Viewer) запрашивает соединение по порту 4799 (например). Все работает внутри локальной сети. Есть шлюз (с внешним IP), через который обеспечивает доступ в и-нет всех компов внутренней сети. Теперь вопрос, как настроить шлюз, чтобы при обращении из вне клиентсокой частью к IP шлюза по порту 4799, он пробрасывал этот запрос дальше, например на 192.168.0.2 по томуже порту?

Для этого есть команда iptables:

iptables -t nat -D PREROUTING -i <интерфейс> -s
-p tcp –dport 4899 -j DNAT –to-destination 192.168.0.2:4899

Если ограничивать входящие IP не требуется, то опцию -s можно опустить.

Пример:

iptables -t nat -D PREROUTING -i vlan1 -s 213.87.34.20/24 -p tcp --dport 4899 -j DNAT --to-destination 192.168.128.24:4899
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 3658 -j DNAT --to-destination 192.168.0.2:3658



Настройка Samba на Ubuntu


Источник

Установим Samba сервер

Код:


aptitude install samba

Теперь настройка, отредактируйте конфиг файл /etc/samba/smb.conf что бы он выглядел примерно так

Код:


; Глобальные настройки сервера
[global]
; General server settings
; Имя компа, как будет видно в сетевом окружении
netbios name = main-server
server string =
; Рабочая группа клиентов
workgroup = WORKGROUP
announce version = 5.0
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
passdb backend = tdbsam
security = user
null passwords = true
; Файл для альясов имен юзеров
username map = /etc/samba/smbusers
name resolve order = hosts wins bcast
wins support = yes
; Поддержка принтеров
printing = CUPS
printcap name = CUPS
; Логи
log file = /var/log/samba/log.%m
syslog = 0
syslog only = no
; Настройка привязки к интерфейсам, на каких слушать, если не указано слушает на все интерфейсах
; interfaces = lo, eth0
; bind interfaces only = true
;
;[print$]
; path = /var/lib/samba/printers
; browseable = yes
; guest ok = yes
; read only = yes
; write list = root
; create mask = 0664
; directory mask = 0775
;
;[printers]
; path = /tmp
; printable = yes
; guest ok = yes
; browseable = no
;
;[DVD-ROM Drive]
;path = /media/cdrom
;browseable = yes
;read only = yes
;guest ok = yes
; Шара жесткого диска
; Имя шары, видно у клиентов
[SDA1-250GB]
; Путь к расшариваемому диску
path = /media/sda1
; Можно ли просматривать
browseable = yes
read only = no
guest ok = no
create mask = 0644
directory mask = 0755
; Привязка к определенному имени пользователя или группе, имена через пробел
; force user = user1 user2
; force group = group1 group2
; Еще один жесткий диск, по аналогии с тем что выше
[SDE1-120GB]
path = /media/sde1
browseable = yes
read only = no
guest ok = no
create mask = 0644
directory mask = 0755

Теперь надо разобраться с пользователями, Samba использует пользователей которые уже есть в системе, возьмем для примера имя user, допустим что он уже есть в системе, надо внести его в базу данных SMB и назначить пароль для доступа к расшаренным ресурсам, сделаем это командой

Код:


smbpasswd -a user

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

Код:


smbpasswd -e user

Далее создадим альяс для имени пользователя user что бы облегчить себе доступ с Windows машины на которой у нас например пользователь с именем Admin, для этого создадим и отредактируем файл /etc/samba/smbusers

Код:


touch /etc/samba/smbusers
vim /etc/samba/smbusers

Впишите в файл пару строк

Код:


# Unix_name = SMB_name1 SMB_name2
user = Admin

На этом настройка закончена, перезапустите Samba командой /etc/init.d/samba restart и можно пользоваться расшаренными ресурсами.


26.11.2008

rtorrent и создание торентов в консоли

Шпаргалка по использованию rtorrent, ctorrent, createtorrent


Пример файла .rtorrent.rc

#минимальное число пиров на торент
min_peers = 1

#максимальное число пиров на торент
max_peers = 1000

#максимальная скорость загрузки
download_rate = 0

#минимальная скорость отдачи
upload_rate = 0

#каталог для сохранения закачек или откуда буду сидироваться торенты.
directory = /адрес директории/

#каталог куда будет сохраняться состояние торентов. Здесь, в этом примере, они сохраняются в папку session
session = /адрес директории/session

#rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent файлы и если они есть то ставит их на закачку
schedule = watch_directory,5,5,load_start=/адрес директории/*.torrent

#номер порта (или нескольких портов) который открывает клиент для обмена данными
port_range = 40890-40891

#случайный выбор порта для обмена данными. В данном случае он отключён
port_random = no

#проверять хэш торрента после закачки
check_hash = yes

###использовать udp
use_udp_trackers = yes

###сохранять сессию
session_save = yes

encoding_list = UTF-8
dht = off
# UDP port to use for DHT.
dht_port = 21345
# Enable peer exchange (for torrents not marked private)
peer_exchange = yes
dht = on
# UDP port to use for DHT.
dht_port = 21345
# Enable peer exchange (for torrents not marked private)
peer_exchange = yes

В левом нижнем углу написано [Throttle off/off KB]. Это лимиты на Upload (отдачу) и Download (закачку) соответственно. По умолчанию они выключены. Их можно изменить кнопками a/z, s/x, d/c для изменения лимита отдачи вверх/вниз по 1, 5 и 50 кб/с соответственно, и те же буквы при нажатом Shift или CapsLock для изменения лимита закачки.

Рассмотрим сам торрент. Сначала идет название, далее написано Rate и указаны текущие скорости отдачи и скачивания. После этого сколько было отдано с данного торрента. В квадратных скобках идет рейтинг (являющийся соотношением скачанного/отданного. Если есть слово Inactive означает, что торрент неактивен (на паузе).

В верхней строке написано View: main. Всего их 7: переключаемых кнопками 1-8:

1. Main — по умолчанию.
2. Name — показ торрентов с сортировкой по имени.
3. Started — показ только запущенных торрентов.
4. Stopped — показ только остановленных торрентов.
5. Complete — показ только закачанных на 100% торрентов.
6. Incomplete — показ только недокачанных торрентов.
7. Hashing — показ только хешируемых торрентов.
8. Seeding — показ только сидируемых торрентов.

В клиенте используется навигация в стиле Lynx. Так называют способ организации интерфейса, при котором передвижение осуществляется стрелками по правилу: вверх/вниз — в пределах текущего уровня, влево/вправо - на уровень выше и на уровень ниже.

Для примера можно выбрать какую-либо из раздач и нажать стрелку вправо. Мы увидим вот такое меню.

* Peer list — список пиров
* Info — информация о торренте
* File list — список файлов в закачиваемом торренте
* Tracker list — список трекеров
* Chunks seen — просмотреть
* Transfer list — список передаваемых кусков

Выберем стрелками пункт File list и нажмём стрелку вправо. Теперь, выбрав нужный файл, можно с помощью пробела поставить ему высокий приоритет (hig) или вообще отказаться от его закачки (off).

[править] Использование

* Ctrl+t/T - обновить трэкер.
* Ctrl+ q — отключает программу, повторное нажатие закрывает программу не посылая трэкеру стоп сигнал
* кнопки вниз/вверх — выбор торрента/адреса
* кнопка <- — возвращает на предыдущий экран
* кнопка -> — просмотр состояния загрузки/аплоуда торрента
* a | s | d — увеличть скорость слота аплоуда на 1/5/50 кб.
* A | S | D — увеличть скорость слота загрузки на 1/5/50 кб.
* z | x | c — уменьшить скорость аплоуда на 1/5/50 кб.
* Z | X | C — уменьшить скорость загрузки на 1/5/50 кб.
* 1...8 — переключение вида на различные окна
* Ctrl+S — начать закачку
* Ctrl+D — остановить закачку (повторное нажатие удаляет торент закачку. Сам торрент файл сохраняется)
* Ctrl+K — закрыть торент и его файлы
* Ctrl+R — проверить хэш торрента
* Ctrl+O — изменить директорию на загрузку, торрент должен быть закрыт.
* + | - — увеличить уменьшить приоритет загрузки торрента
* backspace добавить URL или путь к торренту
* l просмотреть лог, чтобы выйти нужно нажать пробел
* Ctrl+P — вызвать комманду или поменять настройку

Создание торрента из коммандной строки

http://www.createtorrent.com/createtorrent-1.1.4.tar.gz

tar -xvvzf createtorrent-1.1.3.tar.gz
cd createtorrent-1.1.3
./configure
make
sudo make install

createtorrent -a "http://torrent.izhnet.org/bt/announce.php" "03_Globalniy_evolucionniy_process.avi" "KOB_03_Globalniy_evolucionniy_process_[opentorrent.ru].torrent"

crtorrent.sh
Код:
#!/bin/bash
createtorrent -a http://opentorrent.ru/bt/announce.php?uk=ВАШ_PASSKEY "$1" "$HOME/torrents/$1_[opentorrent.ru].torrent"

alias crtorrent='~/scripts/crtorrent.sh'

ctorrent
http://www.rahul.net/dholmes/ctorrent/
Options for Creating a New Torrent

-t Create a new torrent file
-s filename Specify metainfo file name
-u URL Tracker's URL
-l piece_len Piece length (default 262144) Specify the piece size for your torrent.
-p Private (disable peer exchange) Disable the use of DHT, PEX, or other trackerless peer-exchange methods by other clients when sharing this torrent.
-c comment Include a comment/description

Examples

List the contents of a torrent:

ctorrent -x example.torrent

Verify download completion status (takes a little time):

ctorrent -c example.torrent

Download or seed a torrent using default options:

ctorrent example.torrent

Download with a limit of 100KB/s, upload limit of 10KB/s, and seed until a ratio of 1.5:1 is achieved:

ctorrent -D 100 -U 10 -E 1.5 example.torrent

Create a torrent:

ctorrent -t -u "http://tracker.example.com:6969/announce" -s example.torrent file_or_dir_to_upload

Available commands:
[Esc/0] Operator menu m[+/-] Adjust min peers count
d[+/-] Adjust download limit M[+/-] Adjust max peers count
u[+/-] Adjust upload limit C[+/-] Adjust max cache size
n Download specific file S Set/change CTCS server
e[+/-] Adjust seed exit time v Toggle verbose mode
E[+/-] Adjust seed exit ratio Q Quit
X Completion command

здесь оф мануал http://www.rahul.net/dholmes/ctorrent/userguide.html

25.11.2008

Linux. Получение информации о видеофайле и раскадровка

Источник

Задача получить информацию о видео файле для того, чтобы опубликовать его на торренте.




Решение:

1. Avidemux Файл > Свойства



2. Avinfo
http://shounen.ru/soft/avinfo/desc_ru.shtml
можно собрать под любую платформу, но в архиве есть готовый exe, без проблем запускается под Wine
wine avinfo.exe Raskryvaya_Tainu_Zhizni.avi
Raskryvaya_Tainu_Zhizni.avi, 373Mb
video: 688x560 25fps XviD 792Kbps
audio: 48KHz Stereo 93Kbps mp3
ISRF: DVD ripped by acidrip.sf.net

в примере краткий вывод, у программы много опций
Дополнительные опции:
* -l - задаёт файл списка файлов для сканирования. Если вместо имени использовать дефис, список будет читаться с stdin, что даёт возможность организовывать такие забавные конструкции: dir /s /b |avinfo -l- --html-list >report.html
* -i=NUM - задержка после сканирования каждого файла. Обычно операционные системы позволяют установить прироритет приложения при использовании процессора. AVInfo же большую часть времени проводит в файловых операциях чтения. Так что этот ключ используется для "кооперативной многозадачности" с другими приложениями. После -i задаётся время в милисекундах. Например: avinfo -i300 -l=filelist --list. Лучше использовать при вызове из шедулера.
* -f:ext - принудительно пытаться разобрать файл тем модулем, который ассоциирован с расширением ext (например, avinfo -f:mpg test.avi
* -m:size - размер строки для режимов с фиксированным размером строки. Например, avinfo -m120 file.avi --list

3. Команда file дает краткую информацию о видео файле:

file Raskryvaya_Tainu_Zhizni.avi
Raskryvaya_Tainu_Zhizni.avi: RIFF (little-endian) data, AVI, 688 x 560, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)

4. Скрипт slickslice

http://slickslice.sourceforge.net

Консольная утилита для создания раскадровки и 3х скриншотов. Много различных настоек. По умолчанию работает на автомате.
Использует пакеты mplayer и imagemagick.
Например (все ключи из хелпа, "-m 'vf pp=lb/ac'" можно опустить, настраивает некоторые фильтры mplayer для улучшения изображения)
$ slickslice -x "Raskryvaya_Tainu_Zhizni.avi" -m 'vf pp=lb/ac'
при запуске без параметров выдает краткую справку


Автозагрузка в Linux

Источник

Задача: автоматически запустить при старте системы некий скрипт, демон или программу.

Вариант решения:
Автоматическая загрузка скриптов может понадобиться по различной причине. Например, нужно стартовать некий системный демон, или просто лень каждый раз при запуске компьютера запускать вручную браузер. Если администраторских прав на запуск не требуется, то пользователям графической оболочки GNOME пригодится данный мануал. В случае KDE, в каталоге ~/.kde/Autorun/ будут выполняться все скрипты с соответствующими правами.

Мои «приключения» начались с того, что требовалось запускать скрипт с администраторскими правами и не вводить каждый раз пароль при загрузке иксов. Все оказалось очень просто. Итак, создаем папку, где будут храниться скрипты:
$ mkdir MyScripts
и помещаем в нее необходимый нам скрипт под названием myscript.sh. В моем случае его содержание могло выглядеть вот так:
sudo ipmasq
Последним штрихом будет прописывание пути к скрипту в файл rc.local, находящийся у меня в каталоге /etc. Предварительно сделав с него бекап
sudo cp /etc/rc.local /etc/rc.local.bac
откроем его в текстовом редакторе
sudo gedit /etc/rc.local
и введем перед строкой exit 0
путь к скрипту:
/home/XXXXXX/MyScripts/myscript.sh
Теперь можно перезагружаться =).

16.11.2008

Консольный оконный менеджер - SCREEN

Источник


Консольный оконный менеджер - SCREEN

SCREEN - полноэкранный консольный оконный менеджер с поддержкой скроллинга и поиска в окне и функцией копирования-вставки между ними. Наиболее интересная функция данного менеджера заключается в том что Вы можете в любой момент отсоединиться от своего screen`a и закрыть сеанс работы в shell. После этого Вы можете присоединившись к screen`у вновь продолжить свою работу с того места где Вы остановились.


Итак, разберем по подробнее как же работать с данным чудом. Для начала заглянем в конфигурационный файл .screenrc который находиться в Вашем домашнем каталоге. Если его там нет, можно скопировать файл общесистемный файл screenrc который находиться в каталоге /etc.

Что же полезного можно включить в конфигурационном файле? Все опции можно изменить во время работы. Для этого нажмите Ctrl+a : и введите название параметра и его значение. Например для изменения

Разберем некоторые директивы:

* vbell off - управляет визуальным звонком. Если данный параметр будет включен (on) то звонок будет отображаться как вспышка на экране.

* activity 'activity in window %n' - сообщение которое будет выводиться при включенном режиме мониторинга за окном. Полезно если Вы ждете какого либо действия в окне.

* bell_msg 'bell in window %n' - сообщение которое выведется на Ваш экран в случае получения screen`ом звукового сигнала в каком либо окне.

* nethack on - изменяет стиль текста выводимых сообщений на стиль знаменитой игрушки NetHack. Почувствуйте себя в подземельях... ;)

* autodetach on - если по какой то причине соединение с управляющим процессом будет потеряно, то после востановления работа в screen может быть возобновлена. В обратном случае (off) - screen будет уничтожен со всеми дочерними окнами и процессами.

* startup_message off - выключает сообщение об авторских правах при первом запуске screen`а.

* defscrollback 10000 - количество строк по умолчанию для буфера прокрутки.

* caption always - показывает заголовки окна в строке статуса.

* caption string "%{rk} %c %{dd} %{+b M}%n %{-b dd}%-w%{+b B.}%n* %t%{-}%+w%<" - форматирование строки статуса. Данный набор символов приведет к тому что в строке статуса будет отображаться время и цветом выделяться активное окно.

После запуска screen создаст одно окно с Вашим шелом. В последствии вы сможете создать дополнительные окна. Все нажатия клавиш передаются текущей программе в окне. Ограничение накладывается только на управляющую последовательность самого менеджера. Данная последовательность Ctrl+a. Для того что бы передать приложению данную последовательность Вам нужно нажать Ctrl+a и сразу a. В остальном - абсолютно никаких ограничений. Единственно что тип терминала должен быть VT100 совместим для правильной передачи нажатий при удаленной работе.

Тип терминала передаваемый приложению в окне screen - так и называться screen. Если Ваше приложение не поддерживает данный тип - его всегда можно изменить путем изменения переменной TERM.

КРАТКАЯ СВОДКА КОМБИНАЦИЙ КЛАВИШ ПРИ РАБОТЕ

Для создания нового окна - Ctrl+a c (create).

Для переключения между окнами - Ctrl+a a - между последним активным.

Ctrl+a <НОМЕР> - выбор окна по номеру. Ctrl+a (p|n) - циклическое перемещение между окнами. p - prev, n - next. Ctrl+a " - список окон для переключения.

Управление окнами - Ctrl+a A - изменить заголовок окна. Аналогично вводу команды title при нажатии Ctrl+a :

* Ctrl+a C - очистить окно.
* Ctrl+a F - подогнать размер окна под текущий размер терминала.
* Ctrl+a H - протоколирование окна в файл screenlog.<НОМЕР ОКНА>
* Ctrl+a K - уничтожить окно.
* Ctrl+a M - режим слежения за активностью в окне. Если в момент этого вы находитесь в другом окне - в подсказке будет выведено:activity in window <НОМЕР ОКНА>
* Ctrl+a r - переключение режима переноса по словам. (wrap)
* Ctrl+a S - очень интересный режим работы. Сплит. То-есть текущее окно разделяется на две части и в обоих можно открыть по новому окну.

Переключение между окнами Ctrl+a; TAB, выход из режима сплит - Ctrl+a Q.

Общие команды

* Ctrl+a ? - помощь
* Ctrl+a Esc - режим скроллинга. Он же режим копирования. Для копирования подведите курсор к нужному месту и нажмите пробел.
* Ctrl+a ] - Вставка выделенной области.
* Ctrl+a x - Запереть менеджер. При вкомпиленной поддержке PAM - для разблокировки нужно ввести пароль пользователя от которого запущен менеджер. В обратном случае пароль для разблокировки будет запрошен при блокировании.


НАИБОЛЕЕ ЧАСТО ПРИМЕНЯЕМЫЕ ОПЦИИ КОМАНДНОЙ СТРОКИ.

* rd - подключиться к screen. Сделать deatach для остальных сессий.
* list/-ls - список запущенных менеджеров.
* dm - запуск screen в режиме deatach. Полезно для init скриптов или скриптов вообще.
* wipe - удалить сведения о запущенных менеджерах. Полезно в случае потери менеджера, но сохранения информации о нем.
* x - присоединиться к screen. Присоединение осуществляется даже в случае существующих соединений. Полезно при работе с одним screen из разных окружений. Например один screen и на X и на консоль. ;)

Статья взята с сайта OpenNET.

08.11.2008

Установка и настройка NFS сервера и NFS клиента


Источник

Установка и настройка NFS-сервера.

Устанавливаем NFS-сервер:

$sudo apt-get install nfs-kernel-server nfs-common portmap

Настраиваем, какие именно директории мы хотим открыть для совместного пользования и кому. Все это делается в файле /etc/exports:

$sudo vi /etc/exports

В приведенном ниже примере я выделил директорию /mnt/data (директория с данными на сервере) в совместное пользование всем компьютерам с IP - 192.168.1.1 - 192.168.1.255 с правами чтения и записи:

/mnt/data 192.168.1.1/24(rw,no_root_squash,async)

Опции:
ro - права только на чтение. Можно и не указывать, так как она установлена по умолчанию.
rw - дает клиентам право на запись.
no_root_squash - по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать.
noaccess - запрещает доступ к указанной директории. Может быть полезной, если перед этим вы задали доступ всем пользователям сети к определенной директории, и теперь хотите ограничить доступ в поддиректории лишь некоторым пользователям.
О других опция можно почитать здесь.

Теперь нужно перезапустить nfs-kernel-server:

$sudo /etc/init.d/nfs-kernel-server restart

Если после этого вы захотите поменять что-нибудь в файле /etc/exports, то для того, чтобы изменения вступили в силу, достаточно запустить следующую команду:

$sudo exportfs -a

Все. NFS-сервер установлен и настроен. Можно переходить к настройке NFS клиента.

Установка и настройка NFS-клиента.

Установка:

$sudo apt-get install portmap nfs-common

Монтирование:

Создаем точку монтирования. Допустим, это будет папка в вашей домашней директории с названием data:

$cd ~
$mkdir data

Монтировать можно двумя способами - каждый раз вручную или прописав опции монтирования в файл /etc/fstab. Мне больше нравится второй способ:

$sudo vi /etc/fstab

и в конце дописываем следующую строку:

192.168.1.1:/data ~/data nfs rw,hard,intr 0 0

Вместо 192.168.1.1:/data впишите IP или имя сервера и путь к директории совместного пользования.
Опции монтирования можно изменить.

Записав и сохранив изменения, можно монтировать:

$sudo mount ~/data

Если все прошло успешно, то набрав в терминале

$cd ~/data
$ls

вы увидете содержимое папки /data, находящейся на NFS-сервере. Можете проверить скорость работы и запустить, например, фильм с этого раздела.

07.11.2008

Работа в консоли – использование mplayer, mencoder, imagemagic...

В этом посте собираются советы по работе в консоли с видио, аудио и графикой.


mplayer


Получение информации о видеофайле



mplayer -identify /home/username/movie.avi -ao null -vo null -frames 0 2>/dev/null | grep ^ID_

Воспроизведение музыки, создание плейлистов



mplayer умеет воспроизводить заранее созданные плейлисты
по порядку записей в плейлиста:

mplayer -playlist <файл плейлиста>

воспроизведение в случайном порядке:

mplayer -shuffle -playlist <файл плейлиста>

динамическое создание списка воспроизведения без создания отдельного файла плейлиста:

find <путь_поиска_файлов> -type f -name "*.mp3" -print | sort > ~/playlist.pls

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

mplayer mms://адрес сервера

нормализация звука -aop list=volnorm
смена звуковых дорожек -aid 1 (число - номер дорожки)
автоматическая установка звуковых дорожек -alang ru
ручное усиление звука на определенное количество децибел -af volume=10

Горячие клавиши



Esc/q – выход из программы
Space/p – пауза, отжимается при нажатии любой клавиши
9/0 – уменьшить/увеличить громкость
стрелка вправо/влево – перемотать видео на 10 сек. вперед/назад
стрелка вверх/вниз – перемотать видео на 1 минуту вперед/назад
Page Up/Page Down – перемотать видео на 10 минут вперед/назад
f – на полный экран/обратно в обычный режим
o (англ. буква "o") – информативность, можно скрыть все показания плеера, выводить только прошедшее время или прошедшее+полное время фильма
m – выключить / включить звук
1-8 – калибровка яркости, осветленности, контраста и т.д.
+/- (на цифровой клавиатуре) – сместить аудио-видео синхронизацию.

воспроизведение фильмов HD качества с размером 7 Гб и более



использование 2-го ядра для двухядерных процессоров

mplayer -lavdopts threads=2 -vo xv film.mkv

пропуск кадров, выключение обработки

mplayer -framedrop -lavdopts fast:skiploopfilter=all

параметр -lavdopts fast:skiploopfilter=all отключает деблокинг, должно помочь ускорению воспроизведения

mencoder



Кодирование



перекодирование фильма, с целью уменьшения размера и потребления ресурсов при просмотре:
кодирование (в два прохода) в MPEG-4 ("DivX") AVI с кодированием звуковой дорожки в MP3
для предварительной отладки будем кодировать всего несколько секунд фильма
1) mencoder input.avi -ss 120 -endpos 30 -nosound -ovc xvid -xvidencopts vhq=1:bitrate=826:pass=1 -vf scale=640:268,hqdn3d=2:1:2 -o /dev/null && mencoder input.avi -ss 120 -endpos 30 -oac mp3lame -alang ru -lameopts cbr:br=128:mode=0 -ovc xvid -xvidencopts vhq=1:bitrate=826:pass=2 -vf scale=640:268,hqdn3d=2:1:2 -o output.avi
если все устраивает то
2) mencoder input.avi -nosound -ovc xvid -xvidencopts vhq=1:bitrate=826:pass=1 -vf scale=640:268,hqdn3d=2:1:2 -o /dev/null && mencoder input.avi -oac mp3lame -alang ru -lameopts cbr:br=128:mode=0 -ovc xvid -xvidencopts vhq=1:bitrate=826:pass=2 -vf scale=640:268,hqdn3d=2:1:2 -o output.avi
здесь:
input.avi - имя файла, подвераемого обработке
output.avi - имя файла после обработки

скрипт для конвертирования видео в avi c помощью кодека xvid в 2 прохода:

#!/bin/sh
codec="xvid"
codecoptions="-xvidencopts vhq=1:bitrate=700:autoaspect"
namebase="output"
videofiltres="-vf pullup,softskip,hqdn3d,scale=360:288"
lameopts="vbr=3"

mencoder -o /dev/null \
-oac copy \
-ovc ${codec} ${codecoptions}:pass=1 $videofiltres input.avi

mencoder -o "${namebase}.avi" \
-oac mp3lame -alang ru -lameopts ${lameopts} \
-info name="Levashov 1991":comment="encoded by mencoder on ALTLinux4 system":srcform="DVD" \
-ovc ${codec} ${codecoptions}:pass=2 $videofiltres input.avi


скрипт для перегона в avi c помощью кодека xvid в 3 прохода:

#!/bin/sh

lavcopts="vcodec=mpeg4:mbd=2:trell:cbp:mv0:v4mv:vbitrate=826:vqmin=2:vqmax=21:vqcomp=0.8:vqblur=0.1:vlelim=-3:vcelim=5:lumi_mask=0.01:dark_mask=0.1:scplx_mask=0.1:tcplx_mask=0.01:naq:autoaspect"
namebase="output2"
vfs="-vf pullup,softskip,hqdn3d,scale=360:288"


mencoder -o /dev/null \
-oac copy \
-ovc lavc -lavcopts ${lavcopts}:vpass=1:turbo $vfs input.avi

mencoder -o /dev/null \
-oac copy \
-ovc lavc -lavcopts ${lavcopts}:vpass=2:psnr $vfs input.avi

cp divx2pass.log 2nd_divx2pass.log

mencoder -o "${namebase}.avi" \
-oac mp3lame -alang ru -lameopts cbr:br=128:mode=0 \
-info name="21":comment="encoded by mencoder on ALTLinux4 system":srcform="internet" \
-ovc lavc -lavcopts ${lavcopts}:vpass=3:psnr:qns=1:qpel $vfs input.avi

конвертирование во flash .flv:

mencoder source_file.ext -ofps FPS -o out_file.flv -of lavf -oac mp3lame -lameopts abr:br=AUDIO_BITRATE -srate $5 -ovc lavc -lavcopts vcodec=flv:keyint=50:vbitrate=VIDEO_BITRATE:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf pp=lb,harddup

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

mencoder mms://address.of.site/movie.wmv -ovc copy -oac copy -o output.avi
mencoder rtsp://address.of.site/movie.wmv -ovc copy -oac copy -o output.avi

простое кодирование в один проход, перекодировать из WMV в MPEG4, а звук конвертировать в MP3:
mencoder movie.wmv -ovc lavc -lavcopts vcodec=msmpeg4:vbitrate=750:vhq -oac mp3lame -o output.avi

грабить немуцкую аудиодорожку с DVD и сохранить как "MP3 video".
mencoder dvd://1 -aid 129 -oac mp3lame -lameopts br=48:cbr:vol=6 -ovc frameno -o frameno.avi

Может потребоваться указать номер русской звуковой дорожки. Определить номер дорожки можно так:
mencoder -v -endpos 0 -dvd 1 -nosound -ovc frameno

В информации, выдаваемой mencoder-ом, найдите строку про звук "ru", Там и будет указана цифра для ключа -aid

перекодировать WMV файл из AVI в MPEG, а звук конвертировать в MP3

mencoder movie.wmv -ovc copy -ofps 24000/1001 -oac mp3lame -of mpeg -o output.mpg


Исправление AVI файлов с испорченными заголовками
mencoder -idx input.avi -ovc copy -oac copy -o output.avi
Соединение нескольких AVI файлов
cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -
или
mencoder 1.avi 2.avi 3.avi -idx -ovc copy -oac copy -o output.avi
здесь кроме простого объединения происходит перестройка индекса, что позволяет корректно перематывать файл при просмотре
mencoder 1.avi 2.avi 3.avi -forceidx -ovc copy -oac copy -o output.avi
если по каким то причинам предыдущий вариант не позволяет конкретно перематывать

Создание видео файла из нескольких файлов JPEGs, PNGs или TGAs
Создание файла DivX4 из всех файлов JPEG в текущей директории:
mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi *.jpg

Создание файла DivX4 из некоторых файлов JPEG в текущей директории:
mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi frame001.jpg,frame002.jpg

Создание файла Motion JPEG (MJPEG) из всех файлов JPEG в текущей директории:
mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o output.avi *.jpg

Создание несжатого видео файла из всех файлов PNG в текущей директории:
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb -o output.avi *.png

Примечание: Ширина должна быть целым числом, кратным 4, это ограничение формата RAW RGB AVI.

Создание файла Motion PNG (MPNG) из всех файлов PNG в текущей директории:
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy -o output.avi *.png

Создание файла Motion TGA (MTGA) из всех файлов TGA в текущей директории:
mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy -o output.avi *.tga

раскадровка фильма
Вырезать кадр идущий на 670 сек. фильма:
mplayer -ss 670 -frames 1 -vo jpeg -nosound movie.avi
mplayer -vo jpeg (или png) movie_name.avi


Графика


конвертирование всех файлов в текущей директории из одного формата файлов в другой с помощью ImageMagick
convert *.tif[0] 0.jpg
увеличение контраста, при сохранении исходных файлов
convert *.bmp +contrast +contrast _.bmp
увеличение контраста, файлы заменяются
mogrify -verbose *.bmp +contrast +contrast (опция verbose - выводит информацию об обрабатываемых файлах)
получение информации о графическом файле
identify 00064.bmp
просмотр файла
display 00064.bmp

простой скрипт для увлечения контраста изображений
применим для отсканированных книг, в том случае, если полученное изображение "выцвевшее", бледное
#/bin/sh
for NAME in *

do

nice 20 convert "$NAME" -contrast -gamma 0.5 "$NAME.mod.png"

echo "Обработан файл '$NAME'"

done

Скрипт преобразованиея всех файлов в текущей дирректории в формат djvu и создание одного многостраничного файла
строка DEFMASK="*.png" определяет формат исходных файлов


#!/bin/bash
#
# any2djvu-bw
#

if [ -z `which anytopnm` -o -z `which ppmtopgm` -o -z `which pgmtopbm`\
-o -z `which cjb2` ]; then
usage
echo "Error: anytopnm, ppmtopgm, pgmtopbm and cjb2 are needed"
echo
exit 1
fi

shopt -s extglob


DEFMASK="*.png"
DPI=300
# uncomment the following line to compile a bundled DjVu document
OUTFILE="#0-bw.djvu"

function usage() {
echo
echo "usage:"
echo
echo "$0 [\"REGEXP\"]"
echo " converts single pages with the default mask $DEFMASK (or REGEXP if provided)"
echo " in the current directory to single-page black and white djvu documents"
# uncomment the following line to compile a bundled DjVu document
echo " and bundles them as a djvu file $OUTFILE"
echo
}

if [ -n "$1" ]; then
MASK=$1
else
MASK=$DEFMASK
fi

for i in $MASK; do
if [ ! -e $i ]; then
usage
echo "Error: current directory must contain files with the mask $MASK"
echo
exit 1
fi
if [ ! -e $i.djvu ]; then
echo "$i"
anytopnm $i | ppmtopgm | pgmtopbm -value 0.499 > $i.pbm
# in netpbm >= 10.23 the above line can be replaced with the following:
# anytopnm $i | ppmtopgm | pamditherbw -value 0.499 > $.pbm
cjb2 -dpi $DPI $i.pbm $i.djvu
rm -f $i.pbm
fi
done

# uncomment the following line to compile a bundled DjVu document
djvm -c $OUTFILE $MASK.djvu




#!/bin/bash
WATERMARK="$HOME/.watermark.png"

echo "*****************************************"
echo "* Image Resize and Watermarking Script *"
echo "* By Gilbert Mendoza - SavvyAdmin.com! *"
echo "*****************************************"
echo " "

for i in ~/Photo_publ/*{.jpg,.jpeg,.png,.JPG,.JPEG,.PNG}
do
echo "Working on $i ..."
renrot --no-rename $i 1> /dev/null 2> /dev/null
convert -adaptive-resize 1024x1024 -sharpen 0.1 -normalize -quality 89 $i $i 2> /dev/null
composite -gravity southeast -dissolve 75 $WATERMARK $i $i 2> /dev/null
echo "... Done!"
done
rm ~/Photo_publ/*_orig
exit 0


Есть задача масштабировать большой набор картинок к некоторому меньшему размеру.
Требуемые конечные размеры: 100x100.

#!/bin/bash
width=100
height=100

PIC_INFO=`identify -format "%m %w %h" $pic 2>/dev/null || echo "false"`
if [[ $PIC_INFO != "false" ]]; then
# image format
FORMAT=`echo $PIC_INFO | cut -d ' ' -f1`
# picture width
W=`echo $PIC_INFO | cut -d ' ' -f2`
# picture height
H=`echo $PIC_INFO | cut -d ' ' -f3`

# picture info
pi="$pic $FORMAT [$W x $H]"

## convert if only file is image and exciting [width x height]
if [[ $W -gt $width || $H -gt $height ]]; then
echo "convert $pi..."
convert $pic -resize "$size>" -sharpen 0.8 $pic
else
if [[ $FORMAT == "JPEG" ]]; then
echo "$pi : there is no reason to convert $pic"
else
echo "$pi is not a JPEG, convert to JPEG"
convert $pic $pic
fi
fi



find -name '*.jpg' | while read PIC; do
DATE=$(exiftool -p '$DateTimeOriginal' $PIC | sed 's/[:
]//g')
touch -t $(echo $DATE | sed 's/\(..$\)/\.\1/') $PIC
mv -i $PIC $(dirname $PIC)/$DATE.jpg
done

Первая строка находит все файлы *.jpg в текущем и дочерних каталогах. Следующая стока извлекает тэг Date/Time Original каждого файла (может понадобиться тэг Create Data, смотря какая камера) и удаляет все пробелы и двоеточия. Затем команда touch устанавливает временную отметку согласно полученным данным, – устрашающее регулярное выражение sed всего лишь вставляет точку перед двумя последними символами (touch ожидает, что секунды будут отделены от прочих данных временной строки именно так). Заключительная строка переименовывает файл, используя параметр -i с mv на тот случай, если временные отметки двух файлов одинаковы. Это предотвращает перезапись файлов.


Звук


увеличение громкости
for FILE in *.mp3;/ do nice lame --scale 3 "$FILE" "hi_volume/$FILE"; done
разрезание mp3 файлов на более мелкие, заданной длинны (удобно при прослушивании аудиокниг на мобильных устройствах у которых отсутствует возможность перемещения внутри композиции)
for FILE in *.mp3; do mkdir "$FILE"; mp3splt -t 5.00 "$FILE" -d "output" -o "$FILE"_@n; done
создать Audio-CD из всех .wav файлов в текущей директории
cdrecord dev=0,0,0 -audio *.wav
грабить дорожки с Audio-CD в текущую директорию (в формате .wav)
cdparanoia -B
конвертирование аудио в MP3

mplayer -dumpstream -dumpfile music.ra rtsp://site/music.ra

mkfifo pipe.wav

lame pipe.wav music.mp3

mplayer -ao pcm:file=pipe.wav music.ra



Интернет


скачать сайт
wget -c -p -r -l0 -np -N -k -nv


find - поиск файлов



$find /etc/ -type f -mtime -1

первым параметром всегда указывается начальный каталог для поиска.
опция -type с параметром f говорит find, что нужно искать только обыкновенные файлы.
опция -mtime с параметром -1 указывает find, что нужно найти файлы, изменившиеся за последние сутки.
"-"перед 1 задает верхнюю границу диапазона, т.е. "все, что изменилось за последние 24 часа"

если бы мы указали "+" перед 1, то find нашел бы всех файлы, изменившиеся от 01.01.1970 до вчерашнего дня (более суток назад)
так же можно указать точную дату поставив число без модификатора.

выполнение действий с найденными файлами.
опция -exec принимает строку с командой, которая будет выполнятся для каждого найденного файла
параметр передающийся команде обозначается через {}
строка должна заканчиваться символами " \; "

рассмотрим пример:
* найти в каталоге /tmp все файлы, изменившиеся за последний месяц и скопировать их в каталог
/tmp/backup/

$find /tmp -type f -mtime -30 -exec cp {} /tmp/backup \;

* удалить все каталоги(рекурсивно) с именем logs, изменившиеся за последний день в каталоге
/var/www


$find /var/www -type d -mtime 0 -name logs -exec sudo rm -fr {} \;

параметр d в опции -type указывает на поиск только каталогов
опция -name задает поиск по имени.
здесь стоит добавить, что удалять таким образом файлы не оптимально(медленно).
для удаления у find есть встроенная опция -delete, которая отрабатывает на порядок быстрее.

Работа с текстом, регулярные выражения



awk - это язык программирования, предназначенный для обработки файлов. Цель его
разработки - облегчить постановку и решение многих задач, связанных с переработкой текстовой информации.
awk разделяет входной поток на поля и помещает эти поля в переменные вида $1,$2,..$N
по умолчанию, разделитель полей - пробел, но с помощью опции -F" " это можно переопределить :


$head -4 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

$cat /etc/passwd|awk -F":" '{print $1}'
root
daemon
bin


например, у нас в каталоге /var/www есть несколько сайтов. для каждого сайта существует каталог logs, куда пишутся логи апача (для этого сайта).и вот мы хотим узнать суммарный обьем этих логов, а так же найти все логи больше 100Mb.

1.поиск больших логов:

$find /var/www -type f -name "access.log*" -size +100M
/var/www/site1/logs/access.log
/var/www/site2/logs/access.log.1.gz

2.подсчитаем суммарный обьем логов:

find /var/www/ -type f -name "access.log*" -exec du -k {} \;|awk '{s+=$1}END{print s}'
5071604


find ищет все файлы по маске (access.log*) и для каждого запускает команду du.
команда du печатает размер файла. опция -k делает вывод в килобайтах.
дальше запускается процессор awk, просто суммирует первое поле строк (числа) в переменную s и выводит значение переменной на экран.

еще примерчик : найдем в системе все файлы и каталоги принадлежищие юзеру test1 и подсчитаем суммарный обьем.

#find / -user test1 -exec du -sm {} \;|awk '{s+=$1}END{print s}'

т.е. здесь с помощью опции -user find ищет файлы, принадлежашие юзеру test1 и для каждого файла/каталога подсчитываем его размер (команда du)
дальше через конвеер эти данные принимает awk и, как мы делали выше, считает их сумму в Kb.

Прокси

Вопрос: Web-прокси Squid (и SquidGuard) работает на моем компютере с Fedora Core 6 с тех пор, когда я прочел о нем в самом первом учебнике Hardcore Linux, в LXF76. Я настроил SquidGuard так, чтобы защитить моих детей от нежелательного контента. Это означает, что на их (Windows XP) компьютере я установил маршрут доступа в Интернет через мой прокси-сервер (192.168.100.100:8080), и все бы прекрасно.

Но меня беспокоит, что мой старший очень быстро взрослеет, и недалек тот день, когда он догадается снять флажок Use Proxy Server (Использовать проксисервер) и, настроив прямое подключение к Интернету, получит ничем не ограниченный доступ. Можно ли пропускать весь трафик через мой (постоянно включенный) FC6-компьютер (вероятно, пробросом портов на маршрутизаторе, пароль к которому знаю только я), чтобы весь web-трафик проходил через прокси-сервер, а при «прямом» подключении доступа в Интернет не было? Если можно, то как? Я пробовал перенаправить порты 80 и 8080 на IP моего компьютера, но это не помогло. Марк [Mark], из форумов LXF

Ответ: Насколько я понимаю, под словом «Интернет» вы подразумеваете World Wide Web, то, с чем обычно имеет дело Squid. Однако вы можете направить весь Интернет-трафик через свою FC6-машину, а следовательно, через SquidGuard, в три шага.

Во-первых (конкретное воплощение зависит от вашего маршрутизатора), вы должны настроить маршрутизатор так, чтобы он позволял подключаться к Интернету только Вашей FC6-машине. Сделанный Вами проброс портов влияет только на входящие подключения, поэтому ликвидируйте его.

Во-вторых, необходимо назначить FC6 шлюзом по умолчанию, чтобы весь Интернет-трафик (а не только web-трафик) проходил через него. Отредактируйте /etc/sysctl.conf от имени суперпользователя, изменив окончание строки

net.ipv4.ip_forward = 0

с 0 на 1. Потом наберите

service network restart

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

Остается проблема удаления Вашими детьми всяких прокси-настроек, поэтому мы воспользуемся функцией Squid, называемой «прозрачный прокси». Эта функция принудительно направляет все web-запросы, проходящие через машину – а вы уже предопределили их направление на предыдущих шагах – на прокси Squid, следовательно, на SquidGuard. Откройте в редакторе файл настройки Squid (обычно /etc/Squid/Squid.conf) и найдите строку (строки), начинающиеся с 'http_port'. В Вашем файле это, скорее всего, выглядит так: http_port 8080. Измените это на

http_port 80 transparent

80 – это стандартный HTTP-порт. Параметр transparent предписывает Squid вмешиваться и перехватывать все запросы, независимо от того, настроен браузер на работу с прокси или нет. вам нужно или удалить старую настройку прокси из браузеров, или добавить строку обработки запросов для старого порта 8080.

http_port 8080 transparent

Существует другой метод сделать то же самое. Можно оставить http_port на 8080, а запросы, которые вы хотите пропускать через прокси, перенаправить с порта 80 на 8080 при помощи правила Iptables. Это сложнее, но удобнее, так как позволяет некоторым машинам полностью миновать прокси. Подробнее об этом можно узнать на web-сайте Squid: http://www.Squidcache.org.

Вы можете также использовать Iptables или графическую оболочку вроде Firestarter для блокировки исходящего трафика на любые порты, кроме стандартных (HTTP, HTTPS, POP3, SMTP и FTP). Это предотвратит использование Вашими детьми удаленного прокси, работающего через другой порт. Возможно, вы решите сделать это на маршрутизаторе, но если вы установите запрет на своей FC6-машине, то блокировка нежелательного доступа для детей не ограничит вашей собственной свободы.



Если вы хотите отправлять почту из Bash-скриптов, простейшее решение – команда mailx (и она, вероятно, в Вашей системе уже есть). Эта программа отправляет все, что получает со стандартного ввода, на указанный электронный адрес. Например:

echo "Hello World" | -s "Obvious example" me@example.com

Тема сообщения задается параметром -s (используйте кавычки, если в теме есть пробелы); все, что получено со стандартного ввода, составит тело сообщения. Для почтовой программы этого вполне достаточно


Вопрос: У меня возникла следующая задача, которую, как мне кажется, решить довольно легко. Необходимо дать всем файлам в одном каталоге случайные названия (можно и цифровые), но сохранить расширение. Хотелось бы, чтобы это был простенький скрипт на Bash или Perl. Дело в том, что мне подарили MP3-плеер, который умеет либо проигрывать мелодии подряд, либо работать в режиме случайного выбора песни. Оказалось, что датчик случайных чисел в этом плейере плохой и постоянно выдает фактически одну и ту же последовательность песен, и, как следствие, режимы мало отличаются друг от друга. Поэтому вместо встроенного датчика (и вместе с ним) я хочу использовать более качественный компьютерный. Маслий Алексей

Ответ: Вашу задачу можно решить буквально одной командой:

$ for oldname in *.mp3; do mv $oldname $RANDOM.mp3; done

Переменная оболочки RANDOM возвращает случайное число в диапазоне от 0 до 32767, которое генерируется Bash при каждом ее прочтении. Поскольку значения RANDOM, в принципе, могут повторяться, следует учесть этот факт во избежание затирания одного файла другим:

for oldname in *.mp3; do
while [ -z $newname -o -e $newname ]; do
newname="$RANDOM.mp3"
done
mv $oldname $newname
done

Цикл while генерирует новое имя для каждого файла до тех пор, пока не найдет свободное (-e $newname проверяет существование файла с именем $newname). Условие -z $newname необходимо, чтобы цикл инициализировал значение переменной newname перед началом работы. Изменив $RANDOM.mp3 на $1$RANDOM.mp3, вы получите возможность указать общий префикс (например, "song_") в качестве параметра командой строки скрипта

$ ./randomizer.sh song_; ls *.mp3
song_10306.mp3 song_123.mp3 song_20096.mp3

Скрипт несложно обобщить и на случай, когда файлы в каталоге имеют различные расширения: достаточно воспользоваться конструкцией ext=${oldname##*.} для его извлечения и заменить $1$RANDOM.mp3 на $1$RANDOM.$ext. Да, и не забудьте изменить фильтр *.mp3 в первой строке на что-то более подходящее, скажем *.{mp3,wav}.



Легкий путь к удаленной работе.

X, основа всех графических интерфейсов Linux – сетевой протокол. Чаще всего ваш дисплей подключается к X-серверу на локальной машине, но это совершенно не обязательно. Для доступа к рабочему столу удаленного компьютера вы можете пользоваться VNC или NX, но этот метод имеет один недостаток: необходимо воспроизводить весь рабочий стол другого компьютере. А еще нужно, чтобы на удаленном компьютере реально имелся рабочий стол. Если этот компьютер – автономный сервер, запуск рабочего стола может оказаться растратой ресурсов.

Вместо запуска полномасштабного рабочего стола можно запустить лишь то приложение, которое вам необходимо, через SSH-соединение, безопасное даже при работе через общедоступные сети. Наберите в своем терминале следующее:

ssh -X user@remote.computer
someprogram

Если someprogram – графическое приложение, то его окно откроется на вашем рабочем столе. Правда, кое о чем нужно помнить. Во-первых, у вас должен быть SSH-доступ к другому компьютеру через пароль или по ключу. Кроме того, на SSH-сервере другого компьютера должен быть настроен проброс X (X forwarding). Он обычно настраивается по умолчанию, но на всякий случай проверьте, что /etc/ssh/sshd_config содержит

X11Forwarding yes

У ssh есть и другие полезные функции. Например, можно использовать -Y вместо –X. Этот параметр доступен, если SSH-сервер настроен на Trusted X11 Forwarding, и существенно ускоряет процесс передачи данных. Другой параметр, способный ускорить подключение по медленным линиям – это -C, вызывающий сжатие всех данных. Хотя X для медленных подключений все же не годится – лучше пользоваться NX или TightVNC.

Проверка поверхности жесткого диска
badblocks -s -w -v /dev/hdb1 -o badblocks
Перенос данных с одного диска на другой
dd if=/dev/hdc of=/dev/sda bs=8K conv=noerror,sync
или
ddrescue -r 1 /dev/hdc /dev/sda samsung200.log
где -r 1 - однократная попытка чтения дефектного сектора при вычитывании с использованием сохраненного лога.
или dd_rescue -v -y 1G -l samsung200.log -o samsung200.bb /dev/hdc /dev/sda

С помошью программы hdparm и опции -S естъ возможность выставить сколько времени должно
пройти от последнего доступа к HD чтобы он отключился.

значение сзади -S обозначает следуешие:
[1-240] Это значение умножается на 5 секунд, это время через которое HD остановиться.
[241-251] Это значение минус 240 умножается на 30 минут, это время через которое HD остановиться.
[252] Timeout через 21 минуту

hdparm -S 120 /dev/hda
hdparm -S 242 /dev/hda
hdparm -S 0 /dev/hda

в первом случае HD выключится через 10 минут, во втором через полчаса (241-240)*30=30 ,
и в третьем будет всё время включен.

Смена часового пояса в Debian-бейсед дистрибутивах
dpkg-reconfigure tzdata


Конвертирование тегов mp3

Скрипт для конвертирования тегов mp3 файлов из cp1251 в utf8, чтоб нормально было видно что за трек играет.

Называется скрипт tag2utf. Качаем себе на машину, устанавливаем права на запуск

chmod 755 ./tag2utf-0.15.py

А дальше все просто. Запускаем скрипт с каталогом файлов в качестве параметра и говорим где в каком каталоге какая кодировка исходная. Все. Теперь наслаждаемся нормальными тегами в mp3 файлах.

Для создания CD_R из кучи MP3 файлов, Вы можете использовать следующую командную последовательность:

for I in *.mp3
do
mpg123 -s $I | cdrecord -audio -pad -swab -nofix -
done
cdrecord -fix