LXF123:Ответы

Материал из Linuxformat.

Версия от 07:07, 21 сентября 2010; Crazy Rebel (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Ответы

Есть вопрос по Open Source? Пишите нам по адресу answers@linuxformat.ru

1 Интернет без интернета

В Пытался попасть в Интернет с помощью телефонного соединения из Ubuntu 9.04. После поиска на форумах я попробовал установить Gnome-PPP и wvdial, но пакетный менеджер захотел дополнительно скачать еще 6 файлов из репозитория Ubuntu. То есть получается порочный круг: пакеты нужны для настройки Интернета, а без Интернета — не получить пакетов! Я скачал пакеты вручную с другого компьютера, но где их разместить в Ubuntu так, чтобы их нашел пакетный менеджер?

Генри Монкур [Henry Moncur]

О Здесь два пути решения, и один из них Вы прошли почти до конца. Вместо того, чтобы скачивать файлы вручную, отметьте нужные для установки пакеты в Synaptic и затем выберите пункт Создать сценарий закачки пакетов в меню Файл [File > Generate Package Download Script]. Создастся скрипт, который можно запустить на другом компьютере с Linux. Сохраните его на флэшке – например, как gnome-ppp.sh; подключите флэшку к другому компьютеру, перейдите командой cd в каталог на флэшке, запустите скрипт

sh gnome-ppp.sh

и все необходимые Вам файлы будут загружены на флэшку. Подключив ее снова к своему компьютеру, выберите в окне менеджера Synaptic в меню Файл пункт Добавить закачанные пакеты [File>Add Downloaded Packages] и укажите путь до каталога на флэшке, содержащего закачанные файлы. Synaptic заберет их все.

Для компьютера без интернет-соединения это единственная возможность, но телефонное соединение можно наладить с базового установочного диска Ubuntu, поскольку в его состав включен стандартный PPP, работающий из консоли – Gnome-PPP служит для него графической оболочкой.

Запускаем терминал и вводим:

sudo pppconfig

Появится программа конфигурации, с помощью которой можно настроить интернет-соединение. Для навигации по опциям используйте клавиши со стрелками, для выбора – пробел, а для передвижения к кнопкам OK и Отмена [Cancel] – клавишу табуляции. Также не забудьте отметить опцию создания конфигурационных файлов на последнем экране настроек. Как только программа создаст профиль с именем Вашего провайдера, можно подключаться и отключаться от Интернета с помощью команд pon и poff – например, так:

sudo pon myisp

Это выглядит не так симпатично, как в Gnome-PPP, но работает абсолютно так же, плюс теперь Вы также можете установить и Gnome-PPP, если на практике предпочитаете использовать графический интерфейс. ПХ

2 Будем игнорировать

В Нет ли способа отключить автомонтирование конкретного внешнего диска USB в Ubuntu 9.04? Монтировать остальные USB-приводы я хотел бы как обычно.

Sjhawk, вопрос с форума

О Раньше подобные задачи решались с помощью написания правил udev с заданием конкретного имени устройства, а затем менеджеру томов или программе автоматического монтирования передавалась установка игнорировать его. Теперь же достаточно один раз велеть HAL не обращать внимания на устройство. Это означает, что udev создаст файл устройства, но HAL никак не будет обрабатывать эту информацию. Преимущество данного метода в том, что он работает на всех системах, независимо от используемого менеджера томов. Но если, по-Вашему, писать правила для udev – это головная боль, значит, Вы никогда еще не редактировали файлы политики HAL. Они хранятся в /etc/hal/fdi/policy, и можно изменить существующий файл preferences.fdi или создать отдельный файл для этой задачи с нуля.

Простейший способ отличить нужный Вам привод ото всех остальных – это воспользоваться его UUID (универсальным уникальным идентификатором, Universally Unique Identifier). Если в своем Ubuntu Вы когда-нибудь просматривали файл /etc/fstab, Вам уже знакомы эти идентификаторы. Для начала найдем параметры HAL для Вашего привода – подключайте его и смотрите, какое имя он получит, выполнив в терминале команду mount и взглянув на последнюю строчку. При единственном внутреннем накопителе это скорее всего будет /dev/sdb1. Теперь вводим

hal-find-by-property ----key block.device ----string /dev/sdb1

что покажет список всех идентификаторов HAL для устройств, содержащих key block.device со значением /dev/sdb1. В действительности оно должно быть одно, например, /org/freedesktop/Hal/devices/volume_uuid_623C_6219_0. Теперь предложим это значение утилите lshal, которая покажет все HAL-свойства нужного устройства. Нас интересует volume.uuid, поэтому запустим

lshal ----show /org/freedesktop/Hal/devices/volume_uuid_623C_6219_0 | grep volume.uuid

и поместим полученное значение в файл FDI в /etc/hal/fdi/policy:

<?xml version=”1.0encoding=”UTF-8?>
 <deviceinfo version=”0.2>
 <device>
 <match key=”volume.uuid”string=”623C_6219”>
 <merge key=”volume.ignore” type=”bool”>true</merge>
 </match>
 </device>
 </deviceinfo>

При редактировании уже существующего preferences.fdi' просто используйте фрагмент от <device> до </device> и поместите его перед </deviceinfo>. Это дает проверку volume.uuid относительно заданной строки. В положительном случае для volume.ignore добавляется (сливается) новый ключ, со значением true. Человеческим языком это можно выразить так: если UUID имеет значение, которые Вы хотели бы пропустить, то этот том нужно проигнорировать и ничего из него не передавать менеджеру томов. Чтобы HAL подхватил новую настройку, его нужно перезапустить. Сделать это можно из Настройки служб [Service Manager], но поскольку у нас уже есть открытый терминал, то просто введем:

sudo /etc/init.d/hal restart

Есть надежда, что когда HAL будет повсеместно заменен на DeviceKit, процесс в целом станет гораздо проще. НБ

3 Rip, rip, rip

В Для резервного копирования множества DVD на моем домашнем сервере я использую DVD::Rip. Для каждого диска операция длится примерно 2 часа 20 минут, но меня не устраивает сам процесс настройки. Можно ли запускать операцию автоматически с помощью скрипта?

Bobthebob123, вопрос с форумов

О Есть обходный путь для решения этой проблемы с помощью того же DVD::Rip. Сначала пройдите весь процесс с первым DVD до того момента, когда будете готовы нажать пункт меню Transcode. Далее выбираем Показать команды Transcode [Show Transcode Commands] из меню Отладка [Debug], делаем щелчок правой кнопкой мыши и выбираем Выделить все [Select All], затем копируем и вставляем в любимом текстовом редакторе. Нужные нам две команды – rip и transcode. Каждая из них должна быть одной строкой, так что если в редакторе они заняли по несколько – подправьте. Третьей командой добавляем eject, сохраняем файл в виде, скажем, ripdvd.sh и запускаем его:

sh ripdvd.sh

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

Но, возможно, Вам больше подойдет программа AcidRip. Опции ее аналогичны параметрам DVD::Rip, а для перекодирования используется Mencoder. Главное, что здесь имеется возможность создать очередь перекодирования и экспортировать ее в сценарий оболочки. Если места на диске у Вас достаточно, эффективнее будет переносить каждый нужный трек в обычном DVD-формате (MPEG2) и затем с помощью AcidRip массово переконвертировать все эти файлы. Отдельные треки с DVD проще всего копировать в MPlayer; команда

mplayer dvd://1 -dumpstream -dumpfile firsttrack.mpg

перенесет первый трек с DVD в файл. Повторите операцию для всех нужных треков, затем поочередно выберите каждый трек в AcidRip, настройте параметры – обычно после первого DVD этого не требуется – и нажмите кнопку Очередь [Queue]. После добавления можно либо нажать кнопку Пуск [Start] и оставить компьютер работать на ночь, либо же нажать кнопку Экспорт [Export], чтобы записать команды в скрипт ~/acidrip.sh. Запустите его для обработки файлов. ГМ

4 Документация OOo

В У меня проблемы с краткосрочной памятью, и мне хотелось бы распечатать для себя некоторые инструкции для OpenOffice.org — например, как заменять заголовки строк и столбцов метками. Есть ли простой способ собрать воедино страницы только с той информацией, которая мне нужна?

Артур Грин [Arthur Green]

О Доступ к документации OpenOffice.org можно получить через меню Справка [Help]. Хотя существуют способы получить документацию и в других форматах – их мы сейчас опишем – для Вас это может стать хорошим выбором. Там есть встроенный поиск, который нельзя воспроизвести в печатной документации, и можно распечатать отдельные страницы. Более значимой для Вас может оказаться возможность сделать закладку на конкретных страницах или разделах, и таким образом получить список страниц, к которым Вам нужно обращаться. Вкладка Закладки [Bookmarks] вполне может стать Вашим личным оглавлением.

Также на официальном сайте OpenOffice.org, http://documentation.openoffice.org, доступна документация в других форматах, хотя и не настолько полная, как встроенная справка. Можно найти PDF’ы и wiki-страницы, описывающие различные компоненты семейства OpenOffice.org, а также несколько FAQ и руководств, хотя свежайший PDF по Calc представляет собой неполное руководство по OpenOffice.org 2.0.

Наиболее гибкой альтернативой будет собрать Ваше собственное руководство в формате PDF на основе инструмента Collections, описанного в wiki по адресу http://wiki.services.openoffice.org/wiki/Help:Collections. Зайдите на http://wiki.services.openoffice.org/wiki/Documentation и поищите нужные документы. При прочтении страницы обратите внимание на пункт меню слева – Создать книгу [Create A Book]. Щелкните на Добавить страницу в книгу [Add Wiki Page], чтобы добавить текущую страницу к Вашей выборке. После добавления хотя бы одной страницы появляется ссылка Показать книгу [Show Collection], ведущая на страницу, где можно рассортировать то, что Вы выбрали: переставить страницы местами, собрать их в главы и скачать собранную вами книгу в формате PDF или Open Document. Кроме того, файл формата Open Document можно перед отправкой на печать отредактировать в OOWriter. НБ

5 Мини-сервер почты

В Пытаюсь настроить удаленный хост для отсылки файлов журналов через Mail, Mailx или Mutt на базе Cron, скажем, раз в неделю или в месяц. Настроить Cron не проблема, но мне нужна помощь с почтой.

В настоящее время у меня установлен Exim4 в Ubuntu 9.04, и требуется помощь с настройкой пересылки почты через моего провайдера. Любой совет будет очень кстати, поскольку найденные мной источники с документацией противоречат друг другу. Все, что мне нужно — это отправлять почту из скрипта или из консоли.

Munkyn, вопрос с форума

О Если Вам достаточно передачи почты через почтовый сервер вашего провайдера, то нет нужды использовать полнофункциональный агент передачи сообщений (MTA). Существует пара минимальных ретрансляторов, созданных именно для этого. Они не занимаются локальной доставкой или приемом почты с других серверов – они только передают почту на нужный почтовый сервер, например, почтовый сервер Вашего провайдера.

У каждого из этих «посредников» есть свои преимущества и недостатки. Первым в списке идет SSMTP, разработка которого сейчас, похоже, приостановлена. Вдобавок он не очень хорошо отрабатывает ошибки: в случае сбоя программа способна сообщить об успешной отправке. С другой стороны, поддерживаются шифрованные соединения SSL/TLS, что может оказаться важным, если Вы работаете через беспроводное соединение с ноутбука и не хотите, чтобы кто-то пронюхал Ваши почтовые реквизиты. Агент Nullmailer выполняет аналогичные задания, активно разрабатывается и выдает более точную информацию о результатах попытки отправки почты, но не поддерживает шифрованные соединения. Каждая из программ предоставляет замену для Sendmail, а Nullmailer работает еще и как почтовый демон. Обе доступны в репозиториях Jaunty и ставятся из Synaptic.

Чтобы работать с SSMTP, просто отредактируйте файл /etc/ssmtp/ssmtp.conf. Нам нужны всего две настройки: для Mailhub укажите адрес почтового сервера вашего провайдера, а для Root – адрес, на который будет приходить почта для пользователя root (почта, настроенная, например, в задачах Cron). Если сервер провайдера вместо 25‑го порта использует какой-то другой, внесите это в настройки Mailhub, например:

mailhub=mail.myisp.net:465
root=me@myisp.net

Nullmailer использует несколько файлов в /etc/nullmailer, по одной настройке в каждом, а именно:

  • Adminaddr Адрес, на который приходит почта для root
  • Defaultdomain Домен, добавляемый к адресам, состоящим только из хоста
  • Me Полное имя хоста компьютера, на котором запущенNullmailer
  • Remotes Один или несколько серверов, используемых для отправки почты

Формат файла remotes таков:

address protocol options

Значением address может быть домен или IP-адрес, protocol – это почти всегда SMTP, а options нужны для указания порта, отличного от используемого по умолчанию или авторизации пользователя. Пример правильных настроек:

mail. example.com smtp
mail.example.com smtp ----port 465
mail.example.com smtp ----user=michael ----pass=peekaboo

В Nullmailer нужно также настроить запуск службы при загрузке. Теперь осталось сделать выбор между Mailx или Mutt – а о доставке почты пусть заботится Ваш провайдер. НБ

6 Grep — выборка по дате

В Я настроил задачу для Cron, которая запускает Bash-скрипт для проверки состояния одного сервера — место на диске, загрузка и так далее — а затем отсылает результаты мне. Для поиска в журнальных файлах в скрипте используется grep, а для вывода строчек, содержащих определенную информацию — cat.

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

Дэвид [David]

О Чтобы извлечь данные из начала каждой строки и преобразовать их во временную отметку UNIX, которую можно сравнить с точкой отсчета, воспользуйтесь awk. Обработка требует времени, и для экономии ресурсов запускайте ее после того, как отработает grep:

#!/bin/sh
 DAYS=7
 FROM=$(($(date +%s) - 86400 * $DAYS))
 grep нужная_информация /var/log/messages | while read LINE; do
 DATE=$(date -d “$(echo $LINE | awk{print $1, $2, $3})” +%s)
 if [[ $DATE -gt $FROM ]]; then делайте_что_вам_нужно_с $LINE
 fi
 done

Здесь мы устанавливаем срез даты на основе значения, установленного для DAYS (86400 секунд – это один день). Затем читается каждая строка в выводе grep и используется awk, чтобы забрать первые три значения, разделенные пробелами. Стандартный формат строки syslog выглядит так:

Jun 26 12:30:37 zaphod dhcpcd[4037]: eth0:renewing lease of 192.168.1.1

поэтому awk вернет Jun 26 12:30:37. Echo | awk заключены в $(...), которое выполняет содержащуюся в них команду и вместо него будет подставлен вывод этой команды. Со строкой из примера эта команда будет выглядеть так:

DATE=$(date -d “Jun 26 12:30:37” +%s)

В результате %s команда date выводит дату в формате Unix, то есть количество секунд, прошедших с 1 января 1970 года, а внешний $(...) означает, что это значение передается переменной DATE, которая здесь равна 1246015837. Теперь мы просто сравниваем это со значением FROM, чтобы увидеть, не является ли этот фрагмент журнала более свежим, и обрабатываем его при положительном результате.

Вместо $(...) для подстановки можно использовать обратные кавычки, но мы используем $(...) по двум причинам. Во-первых, это лучше читается. Во-вторых, $(...) можно вложить, а обратные кавычки – нет.

Несколько более читаемым (за счет некоторого снижения скорости выполнения) код можно сделать, разделив все команды таким образом:

DATESTR=$(echo $LINE | awk{print $1, $2, $3})
 DATENUM=$(date -d “$DATESTR” +%s)
 if [[ $DATENUM -gt $FROM ]]; then

Применяйте наиболее подходящий вам вариант. ПХ

  • Купить электронную версию
  • Подписаться на бумажную версию