Журнал LinuxFormat - перейти на главную

LXF94:Ответы

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Ответы

Есть вопрос по OpenSource? Пишите нам по адресу: answers at linuxformat dot ru

Сегодня мы ответим на вопросы о:

  1. Удалении Windows
  2. Прокси-сервере
  3. EXIF-данных
  4. Jigdo
  5. Модемах
  6. Инсталляции с DVD
  7. Почта для консоли
  8. OpenGL
  9. Правилах udev
  10. Случайных числах
  11. Раздвоении дисплея

1. Решительный шаг

Вопрос: Хоть я и новичок в Linux, но все же решился полностью убрать Windows XP со своего ноутбука. У меня двойная загрузка XP и Ubuntu; не могли бы вы подсказать мне, как убрать Windows и оставить только Ubuntu? Как передать Linux место, прежде занятое Windows XP? А может быть, мне, как новичку, проще отформатировать весь диск и переустановить Linux? Pub Bloke, из форумов LXF

Ответ: Начнем с вашего последнего вопроса. Конечно, переустановить Ubuntu и отдать ему во владение весь диск проще, но тогда вы потеряете все свои настройки и данные. Удаление Windows-раздела и перераспределение освободившегося места под Linux оставит текущую установку Ubuntu нетронутой. Кроме того, проделав эту работу, вы ближе познакомитесь с Linux.

Уничтожить Windows нетрудно. Сначала нужно удалить Windows-раздел (обычно hda1) с помощью Gnome Partition Editor, который вы найдете в меню System > Administration (Система > Администрирование). Если его там нет, добавьте GParted через менеджер пакетов Synaptic.

Найти Windows-раздел тоже легко, обычно он содержит файловую систему NTFS (в крайнем случае, FAT), а Linux такими файловыми системами не пользуется. Удалив раздел, щелкните мышью в освободившейся неразмеченной области и нажмите кнопку New (Создать) для создания нового Linux-раздела с файловой системой ext3 (сгодятся установки по умолчанию).

Пока новый раздел выделен в списке, перейдите в меню и выберите Partition > Format To > Ext3 (Раздел > Форматировать в > Ext3) (см. экранный снимок справа). Нажмите Apply (Применить), чтобы изменения вступили в силу.

Следующий шаг – удаление пункта Windows из загрузочного меню. Откройте терминал и введите

sudo -i
gedit /boot/grub/menu.lst

чтобы открыть загрузочное меню в редакторе. Ближе к концу этого файла вы найдете строку, начинающуюся с ‘title Windows’. Удалите все вплоть до следующей пустой строки и сохраните файл. Windows в загрузочном меню больше не появится.

А вот освоить только что освободившееся пространство уже сложнее. Увеличить Linux-раздел можно, только отодвинув его окончание, а освобожденное пространство располагается перед началом Linux-раздела, так как Windows-раздел был первым на диске. К счастью, Linux может использовать несколько разделов – в данном случае вы можете занять освободившееся место под свою домашнюю директорию (преимущество такого подхода состоит в том, что при переустановке системы или переходе на новый дистрибутив вы сохраните все свои персональные данные, поэтому они находятся на отдельном разделе). Сообщить системе о том, что данный раздел нужно занять под домашнюю директорию, можно, добавив строку в файл /etc/fstab (это таблица файловых систем). В терминале, которым вы только что пользовались, введите

gedit /etc/fstab

Добавьте следующую строку и сохраните файл:

/dev/hda1 /home ext3 defaults 0 0

До перезагрузки, которая активирует новый home-раздел, скопируйте туда существующие файлы. Не покидая терминал, введите

mkdir /mnt/tmp
mount /dev/hda1 /mnt/tmp
mv /home/* /mnt/tmp/
reboot

Эти команды временно смонтируют новый раздел в /mnt/tmp, переместят в него ваш домашний каталог и перезагрузят компьютер, после чего изменения станут необратимыми. Теперь в загрузочном меню не останется упоминания о Windows, а после загрузки Ubuntu то место, что прежде занимала Windows, можно будет использовать для хранения Ваших собственных файлов. НБ

2. Прокси для деток

Вопрос: Web-прокси Squid (и SquidGuard) работает на моем компютере с Fedora Core 6 с тех пор, когда я прочел о нем в самом первом учебнике Hardcore Linux, в LXF75. Я настроил 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-машине, то блокировка нежелательного доступа для детей не ограничит вашей собственной свободы. НБ

3. Упорядочить хаос

Вопрос: Отбилась от рук моя фотоколлекция на несколько гигабайт. Я хотел бы упорядочить ее, чтобы сделать резервную копию. Не подскажете ли программу, которая может переименовать файл с учетом данных о времени создания (EXIF) и установить время изменения файла равным времени создания? Моя недавняя попытка сделать резервную копию перед очисткой компьютера привела к тому, что даты создания всех файлов оказались замещены датой записи DVD.

А еще я умудрился рассеять по всей коллекции несколько дубликатов изображений (сам не знаю как), все под разными именами. Нельзя ли это все рассортировать (может быть, тоже на основании EXIF) без пересмотра нескольких тысяч фотографий?

Если это имеет значение, то у меня Fedora Core 6 64-bit, командная строка не пугает. NiceBloke, из форумов LXF

Ответ: С данными EXIF работают несколько программ. Я предпочитаю ExifTool (http://www.sno.phy.queensu.ca/~phil/exiftool). ExifTool читает и обрабатывает почти любые данные EXIF, включая извлечение EXIF-тэгов Date/Time Original (первоначальной даты/времени) или Create Data (времени создания). Эту информацию можно использовать для переименования файлов или изменения их временных отметок. Например:

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 на тот случай, если временные отметки двух файлов одинаковы. Это предотвращает перезапись файлов.

Подобное умеет проделывать большинство программ обработки цифровых фото, обходящихся без командной строки – DigiKam, KPhotoAlbum, F-Spot и GThumb все имеют средства обращения с файлами, основанные на использовании EXIF-данных.

Недостаток этих программ – они работают только в текущей директории, а вышеприведенный скрипт обрабатывает JPEG-файлы во всех вложенных каталогах. Если же у вас несколько гигабайт фотографий в единственной директории, то такую коллекцию вряд ли приведет в порядок одно только переименование файлов!

Решением проблемы дубликатов может стать программа fdupes (http://netdial.caribe.net/~adrian2/fdupes. html, доступная в виде RPM для FC6). Программа сравнивает содержимое файлов, поэтому способна находить дубликаты даже под разными именами и временными метками.

fdupes --recurse ~/photos

выведет все дубликаты в каталоге photos. Можно удалить лишние дубли:

fdupes --recurse --omitfirst --sameline ~/photos | xargs
rm

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

4. ISO: разочарование

Вопрос: Прочитав LXF91, я решил попробовать систему Jigdo, чтобы сделать ISO для Fedora. Можно было бы и поподробнее инструкции в журнале привести. Например, как пользоваться командой mkiso и что делать, если DVD смонтирован с noexec.

Нужно ли копировать файловую систему поверх локальной файловой системы, и нужно ли перемещать файл Jigdo? Не знаю, делал ли так кто-нибудь. Так или иначе, я получил следующие ошибки:

‘sudo ./mkiso Creating FC-6-i386-livecd-1.iso
general: Image file: /home/user//FC-6-i386-livecd-1.iso
general: Jigdo: /home/user//FC-6-i386-livecd-1.iso.Jigdo
general: Template: Jigdo/FC-6-i386-livecd-1.template
Skipping object `../..//.mozilla/Firefox/i4faho56.default/lock’ (No such file or directory)
Found 0 of the 5 files required by the template
Will not create image or temporary file - try again with different input files
general: [exit(1)]
ISO image written to /home/user//FC-6-i386-livecd-1.iso
Verifying MD5 checksums...
md5sum: FC-6-i386-livecd-1.iso: No such file or directory FC-6-i386-livecd-1.iso: FAILED open or read
md5sum: WARNING: 1 of 1 listed file could not be read Verification failed, or you do not have the md5sum program installed.
In the latter case, you probably have nothing to worry about.’

Подскажите, пожалуйста, что делать с непонятной ошибкой md5sum, и как обмануть проверку контрольной суммы, чтобы, наконец, создать ISO. Тодд [Todd]

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

Если вы перейдете в каталог Fedora на DVD и запускаете mkiso, то программа все же сработает и запишет ISO-образ(ы) в Вашу домашнюю директорию, но не сможет создать свои кэш-файлы. В данном случае это не так уж важно, так как вы записываете единственный образ, но в случае записи нескольких образов потеря времени будет ощутимой.

Если DVD смонтирован с --noexec, то скрипт все же будет работать с sh, так как sh работает с жесткого диска, а скрипт – всего лишь файл данных, обраба- тываемый ею:

sh /path/to/dvd/Distros/Fedora/mkiso
Ключ к решению Вашей проблемы находится в строке:

‘Found 0 of the 5 files required by the template’

Почему-то Jigdo не смогла найти ни один из нужных ей файлов. Предполагаю, что к этому мог привести запуск mkiso от имени суперпользователя, в результате чего скрипт не нашел место, откуда ему следовало запускаться, и те файлы, с которыми он должен был работать (путь поиска относителен месту запуска скрипта).

Можно было бы предположить, что ваш DVD читается с ошибками – но вряд ли это испортит все пять файлов. Такой диск не работал бы совсем.

Обход проверки контрольной суммы MD5? вы предлагаете исправить проблему низкого давления масла в автомобиле отключением индикаторной лампы! Как видно из сообщения системы, проверка контрольной суммы ISO-файла MD5 не удалась только потому, что проверять было нечего.

Кстати, запуск mkiso с параметром -h выводит подробные сведения о работе программы.

5. Проблема Firefox

Вопрос: Мой Firefox никак не может «увидеть» модемное подключение, которое я с таким трудом настроил. Я совершенно уверен в том, что подключение рабочее, так как запуск pon из командной строки заставляет модем звонить, а poff кладет трубку. А вот запуск Firefox с рабочего стола превращается в проблему. Широкополосное подключение Ethernet работает отлично, но его удаление и установка модемного подключения «по умолчанию» вызывает появление экрана ‘server not found’. Модем Rockwell IQ148, я пользуюсь Ubuntu Dapper 6.06. Я пытаюсь настроить компьютер для того, чтобы мой партнер, у которого нет широкополосного подключения, мог перевести свой компьютер с XP на Linux с помощью моей машины. Ричард Эйрз [Richard Ayres]

Ответ: Я почти уверен, что дело не в Firefox. Похоже на то, что система все же цепляется за Ethernet-подключение. Наберите в терминале вот что:

route -n

Интересующая нас строка – последняя. Она начинаются с 0.0.0.0, так как это шлюз по умолчанию для всех не-локальных подключений. Подозреваю, что она выглядит примерно так:

‘0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0’

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

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

sudo plog

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

/sbin/ifconfig -a

Если в выводе появился интерфейс eth0, то он не должен быть помечен UP, и у него не должно быть записей inet addr. А вот ppp0 должен быть «поднят» (UP) и снабжен реальным адресом.

А может быть и такое: вы подключаетесь к провайдеру, но не можете разрешать доменные имена. Запустите в терминале следующие команды:

ping -c 5 www.google.com ping -c 5 216.239.59.104

Первая из них – это попытка подключиться к Google по имени, а вторая минует DNS и запрашивает его прямо по IP-адресу. Если работает только вторая команда – значит, неверна Ваша информация о DNS. Необходимо связаться с провайдером и узнать у него адреса DNS-серверов, затем поместить их в /etc/resolv.conf. Это будет выглядеть примерно так:

nameserver 1.2.3.4
nameserver 1.2.4.5

Файл можно редактировать непосредственно либо воспользоваться инструментом Network Settings (Сетевые настройки). Возможно даже, что у вас там до сих пор прописаны имена доменных серверов широкополосного подключения. Их необходимо удалить. Если, проделав все это, вы все-таки не избавитесь от своей проблемы, попробуйте послать более подробные сведения, включая вывод вышеприведенных команд, в раздел Help наших форумов на http://www.linuxformat.co.uk. НВ

6. Установка Joomla

Вопрос: Я ваш давний читатель, у меня двухгодичная подшивка Linux Format и Ubuntu 6.10. Но вот проблема, которую мне никак не решить: не могу устанавливать программы с вашего DVD. Я несколько раз перечел статью об инсталляции из исходных текстов, читал следующие книги: The Official Ubuntu Book, Beginning Ubuntu Linux и Ubuntu Unleashed, но так и не понял своей ошибки. Может быть, вы сможете мне помочь, точно указав, что я должен вводить в терминале для инсталляции, скажем, Joomla 1.0.11 с одного из ваших DVD? Пер Неергорд Малер [Per Neergaard Mahler]

Ответ: вы выбрали весьма необычный пример, ведь Joomla – это web-приложение, которое необходимо устанавливать в каталог, доступный Вашему web-серверу. Кроме того, оно написано на PHP, скриптовом языке, следовательно, не нуждается в компиляции. Однако вот вам последовательность установки.

Сначала необходимо инсталлировать web-сервер. Как правило, это Apache, поэтому запустите диспетчер пакетов Synaptic и убедитесь в том, что apache и libapache2-mod-php2 установлены. Протестируйте Apache вводом ‘http://localhost’ в адресную строку браузера.

Если все прошло гладко, приступайте к инсталляции собственно Joomla. Откройте терминал и наберите

sudo mkdir /var/www/joomla
sudo tar -xf joomla-1.0.11.tar.bz2 -C /var/www/joomla

Первая команда создает каталог для установки Joomla, а вторая распаковывает в него Joomla-архив. Подразумевается, что Joomla-1.0.11.tar.bz2 находится в текущей директории, иначе нужно вводить полный путь к архиву. Теперь наберите в браузере ‘http://localhost/Joomla/’ – начнется процесс инсталляции и настройки.

Как правило, первые шаги инсталляции для любого пакета, поставляемого в tar-архиве, одинаковы – распаковка архива и поиск файла, содержащего инструкции по установке, обычно README, INSTALL или что-нибудь столь же очевидное.

Журнальная статья об установке из исходных кодов применима к тем пакетам, что используют стандартный процесс установки из исходных текстов. Это относится к подавляющему большинству пакетов, но отнюдь не ко всем – что наглядно демонстрирует Joomla. НБ

7. Консольная почта

Вопрос: Я хотел бы пользоваться почтой через оболочку командной строки. Не могли бы вы подсказать мне, как это сделать? Сейчас у меня Ubuntu 6.10. jmullin, из форумов LXF

Ответ: Вы хотите сказать, что вам нужен консольный почтовый клиент, встроенный в оболочку, или требуется отправлять почту с использованием скриптов оболочки? Существует несколько почтовых программ для терминала; наиболее популярная из них – Mutt (http://www.mutt.org). Mutt имеется в основном репозитории Ubuntu, и его можно установить через Synaptic.

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

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

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

8. Недо-гонки

Вопрос: У меня Ubuntu 7.04 Feisty Fawn на ноутбуке Sony VAIO VGN-FJ250P. Этот дистрибутив устраивает меня почти полностью, исключая одну-две мелкие проблемы. Одна из них состоит в применении известного OpenGL. Кажется, он не поддерживается моей Linux-системой. Я уверен, что видеочипсет Intel ни при чем, так как у меня двойная загрузка с Windows XP Pro, и там приложения с OpenGL работают прекрасно.

Одно из таких приложений – это Planet Penguin Racer, игра, которая хорошо идет с Live CD, но отказывается работать, будучи установленной на жесткий диск. Попытка запустить ее из меню ни к чему не приводит, а запуск из командной строки вызывает появление следующего сообщения:

‘*** ppracer error: Couldn’t initialize video: Couldn’t find matching GLX visual (Success) Segmentation fault (core dumped)’.

Джим Смит [Jim Smith]

Ответ: Хорошо, что OpenGL работает на Вашем оборудовании с Live CD: это говорит о том, что видеокарта поддерживается, а необходимое ПО присутствует на Live CD.

Почти наверняка это проблема настройки, кроющаяся в xorg.conf. Вызвана она тем, что инсталлятор неверно настроил Вашу видеокарту.

Загрузитесь с Live CD, смонтируйте один из разделов жесткого диска или USB-накопителя и скопируйте туда /etc/X11/xorg.conf. Затем загрузитесь с жесткого диска и сравните «местную» копию xorg.conf с только что сохраненной.

Вероятнее всего, дисковая версия файла использует не тот драйвер (строка Driver в разделе Device) или не загружает GLX-модуль. Прежде чем менять что-либо в этом файле, сделайте резервную копию: вы ведь не хотите усугубить ситуацию.

«Правильный» драйвер для Вашей карты – i810, хотя сработает все, что будет найдено в версии файла с Live CD. Модуль GLX загружается включением следующей строки в секцию Module xorg.conf:

Load “glx”

Если обе эти проблемы устранены, а OpenGL все же не работает, следует пройтись по обеим версиям файла и выяснить, чем они отличаются. А можно просто заменить дисковый вариант версией с Live CD, ведь она рабочая. НВ

9. Непостоянство dev

Вопрос: В одном из ваших прошлых номеров рассказывалось, как настроить GPRS-соединение в Linux. Помимо прочего, там предлагалось создать символьную ссылку вроде ln -s /dev/ttyACM0 /dev/modem. Действительно, это помогает. Но после перезагрузки ссылка исчезает. А недавно я столкнулся еще и с тем, что Nero Linux 3 требует доступа к устройству /dev/sg0. Выставляю права, но после перезагрузки они опять сбрасываются: как я понимаю, это происходит из-за динамической природы /dev. Собственно сам вопрос: а как сделать так, чтобы после перезагрузки не приходилось вновь производить вышеуказанные манипуляции? Евдокимов А.В.

Ответ: Динамическим каталогом /dev в Linux 2.6 заведует программа udev. В Сети доступно обширное руководство по написанию правил udev (правда, на английском языке) - http://reactivated.net/writing_udev_rules.html. Чтобы сделать символьную ссылку /dev/modem постоянной, можно использовать правило:

KERNEL==”ttyACM0”, SYMLINK+=”modem”

Для sg0 можно попробовать следующее:

KERNEL==”sg0”, MODE=”0666”

Правила udev добавляются в специальный файл – обычно он называется /etc/udev/rules.d/10-local.rules. Два последних компонента пути могут зависеть от дистрибутива, но “local” и “rules” в имени файла присутствуют обязательно. Не вносите собственные правила в другие файлы udev – это может привести к проблемам. ВС

10. Гауссу посвящается

Вопрос: У меня возникла следующая задача, которую, как мне кажется, решить довольно легко. Необходимо дать всем файлам в одном каталоге случайные названия (можно и цифровые), но сохранить расширение. Хотелось бы, чтобы это был простенький скрипт на 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}. ВС

11. Раздвоение рабочего места

Вопрос: Только что приобрел новый LCD-монитор на замену старому CRT. У моей видеокарты Nvidia есть два видеовыхода – так, значит, можно подключить к карте оба монитора и растянуть мой рабочий стол KDE на них? У меня Gentoo 2006.1, видеокарта Nvidia FX5200. Гарри Лич [Harry Leach]

Ответ: Ответ: да. Существует стандартный метод комбинации двух экранов в один X-дисплей, называемый Xinerama. Обычно он используется с двумя видеокартами, но у Nvidia есть драйверы, обладающие функцией под названием TwinView, которая позволяет отображать два экрана с одной видеокарты, каждый на отдельном выходе, сохраняя при этом совместимость с Xinerama.

Настроить TwinView (и Xinerama) несложно, при условии, что у вас есть фирменные драйверы Nvidia, а не свободный драйвер nv. Сначала убедитесь в том, что X работает с Nvidia-драйвером: самый очевидный показатель этого – появление логотипа Nvidia при запуске X. Затем запустите nvidia-settings из терминала root. В Gentoo это отдельный пакет, поэтому найдите его, если еще этого не сделали. Выберите X Server Display Configuration (Настройка дисплея X-сервера) в списке слева – вы должны увидеть оба дисплея, хотя один из них может быть помечен как отключенный. Если один из дисплеев недоступен, нажмите кнопку Detect Displays (Найти дисплеи), выделите дисплеи по очереди и установите для каждого требуемое разрешение. Лучше выставить одинаковые разрешения экрана, но любой оконный менеджер, понимающий Xinerama, управится и с разными разрешениями.

Теперь настройте Position (Расположение) для каждого экрана. Для максимальной управляемости можно делать это в абсолютных величинах, но лучше бы настроить дисплеи так, чтобы один находился Right Of (Справа) от другого, а второй, соответственно, слева. Нажмите кнопку Save To X Configuration File (Сохранить изменения в файле настройки X), выйдите из учетной записи и перезапустите X.

Вы должны увидеть рабочий стол, растянутый на два монитора, но для окончательной доводки понадобится еще кое-что. Необходимо убедиться, что все приложения скомпилированы с поддержкой Xinerama. Если xinerama еще нет во флагах USE, то отредактируйте /etc/make.conf и добавьте его туда, затем скомпилируйте заново нужные вам программы:

emerge --update --deep --newuse --ask world

Конечно, это долго, но зато по окончании процесса можно перезапустить KDE и приступить к настройке дисплеев по своему вкусу. Так, рабочий стол можно украсить едиными обоями, растянутыми на два экрана – или использовать разные для каждого монитора. Панель задач оставить на одном экране – или растянуть на оба. Раздел Multiple Monitors (Мониторы) в настройках рабочего стола позволяет указать поведение окон и выбрать дисплей по умолчанию для открытия новых окон. Найдите в этом разделе свой LCD-монитор.

Может пригодиться параметр Special Window Settings (Особые оконные настройки) меню Advanced (Дополнительно), доступного по правому щелчку на заголовке окна. Он позволяет изменить стандартный порядок работы с окнами приложений. Удобно и на одном дисплее, но особую актуальность приобретает на двух. Например, я открываю «холст» GIMP на одном экране, а панель инструментов – на другом, чтобы не мешала редактировать изображение. НБ

Безопасная связь

Вопрос-победитель (английская версия)

Вопрос: Наш почтовый сервер обслуживается Postfix, а клиенты пользуются либо Outlook Express, либо серверным приложением SquirrelMail. Все работает отлично, и только клиенты нашей локальной сети могут обмениваться почтой с внешним миром.

Недавно мы приняли сотрудника, которому необходим доступ в Сеть со смартфона. Без проблем, мы открыли IMAP для его папок, и он может пользоваться SMTP-сервером Postfix для отправки сообщений – но только локальным адресатам (мы не хотим стать ретранслятором для спама). В идеале нам хотелось бы, чтобы этот сотрудник мог посылать сообщения не только по нашей сети. В какую часть Postfix нужно зайти, чтобы разрешить только ему обмениваться почтой с другими доменами изнутри $my_networks? Действующие почтовые правила должны оставаться неизменными. Крейг Родуэй [Craig Rodway]

Ответ: Решение заключается в SMTP-авторизации, при ко торой пользователи проходят проверку перед отправкой сообщений. Postfix можно настроить так, чтобы он принимал сообщения только авторизованных пользователей.

Для авторизации Postfix использует Cyrus-SASL, поэтому убедитесь в том, что она установлена, а служба saslauthd запускается при загрузке системы.

Чтобы настроить Postfix на использование Cyrus-SASL, отредактируйте /etc/Postfix/main.cf и убедитесь в том, что mydomain, myhostname и mynetworks настроены правильно. Теперь добавьте в конец файла следующие строки:

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,check_relay_domains

Четвертая строка необязательна. Она нужна для некоторых версий Outlook Express и Microsoft Exchange. Если ваш сотрудник будет пользоваться лишь смартфоном, то без нее можно обойтись. Перезапустите Postfix или заставьте его обновить конфигурацию – и любой зарегистрированный пользователь вашей сети сможет пользоваться SMTP-сервером отовсюду, настроив свою почтовую программу на использование SMTP-авторизации. Пользователи вашей сети смогут посылать почту, не меняя почтовых настроек.

По этому вопросу есть подробное HOWTO, доступное на http://Postfix.state-of-mind.de/patrick.koetter/smtpauth. Оно касается и вопроса использования TLS для шифрования подключений между пользователем и сервером. Это необходимо, так как в противном случае ваши пользователи будут вынуждены отправлять пароли открытым текстом.

SASL можно использовать и для авторизации изнутри сети. Например, можно настроить Postfix для школьной сети так, что все пользователи смогут обмениваться сообщениями внутри сети, но только учителя смогут отсылать почту вовне. МС

Пожиратель трафика

Вопрос-победитель (русская версия)

Вопрос: Как узнать, какие программы используют подключение к Интернету (или к любому другому сетевому интерфейсу)? Я использую Mandriva 2007, в Интернет выхожу через модем. Если верить окну «Статистика KPPP», что-то закачивается на мой компьютер, даже если я не запустил ни одного приложения. asg128

Ответ: Быть может, ваши опасения и необоснованны – протокол PPP предусматривает обмен служебными пакетами между вашим компьютером и провайдером, поэтому незначительный трафик может существовать даже при отсутствии «полезной» нагрузки: закрытом браузере, почтовом клиенте и т.п. Не исключено также, что Mandriva просто загружает списки обновлений. В любом случае, проверить, какие программы используют соединение с Интернетом, можно командой netstat -ap, желательно – из root-терминала. Найдите в ее выводе секцию “Active Internet Connections”: PID и имя программы отображаются в последней колонке. Имейте в виду, что если вам действительно не повезло подцепить rootkit, он, скорее всего, не появится в выводе netstat. ВС


Краткая справка об… X-пробросе

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

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.

Mac OS тоже использует X на своих дисплеях, поэтому вы можете видеть окна Mac-программ на Linux-мониторах, и наоборот.

Часто задаваемые вопросы… Что такое LDAP?

Это не просто телефонный справочник!

  • Опять какое-то сокращение? Ну и что оно означает?

Оно означает Lightweight Directory Access Protocol (Облегченный протокол доступа к каталогам).

  • Как обычно, это мне ни о чем не говорит. Поясните!

LDAP – это протокол для обслуживания и изменения информации в каталогах через сетевое подключение.

  • Типа Yellow Pages в Интернет?

Вроде того. Каталог LDAP может быть любым набором логически и иерархически организованных данных. Телефонный справочник – подходящий пример: данные там состоят из имен, адресов и телефонных номеров, упорядоченных по алфавиту. Или по категориям, как в Yellow Pages.

  • Так это телефонная книга онлайн?

Это может быть и телефонной книгой, а может содержать любой другой набор упорядоченных данных; например, число компьютеров в сети, товары и цены на них, каталоги документов… словом, все, что поддается структурной организации. Это даже не обязательно онлайн-структура. Большинство LDAP-серверов работает в локальных сетях или на отдельных машинах. Вряд ли ваша компания захочет распространять сведения о себестоимости продаваемой продукции через Интернет.

  • Похоже, что каталог LDAP – один из видов базы данных?

Сходство есть, но неполное. LDAP не предназначен для работы со сложными наборами данных и запросами, отсюда и термин «Облегченный». Продолжая тему, PostgreSQL или Oracle тяжеловаты для хранения списка офисных сотрудников и их добавочных телефонных номеров. LDAP для этого вполне достаточно.

  • Полагаю, его и настроить проще?

Верно полагаете. Особенно после некоторой тренировки. LDAP не база данных SQL, поэтому кое-что придется изучить, но документация подробна и снабжена множеством шаблонных схем. Погодите! Что еще за схемы? Схема определяет строение каталога, атрибуты, которые может иметь каждая запись. Похоже на описание таблицы в SQL.

  • Ну, создал я каталог LDAP, и как теперь им пользоваться? Наверное, нужно специальное ПО?

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

  • А как же встроенные адресные книги, которыми обычно пользуются почтовые программы?

Они и есть встроенные: работают лишь с одним почтовиком. А можно иметь централизованный источник информации, в котором почтовые программы будут искать адреса, через Samba можно будет проводить авторизацию пользователей… словом, это единый источник сведений, который можно использовать так, как вам нравится (или – как велит сисадмин).

Персональные инструменты
купить
подписаться
Яндекс.Метрика