Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> документация —> FreeBSD —> MPD —> 3. Работа mpd

3. Работа mpd


3.1 Активизация mpd

   Mpd активизируется путём первой установки ваших конфигурационных файлов, и затем, работает.
mpd [ опции ] [ конфигурация ]

   Если конфигурация задана в конандной строке, то mpd просматривает mpd.conf для соответствующей метки, и выполняет соответствующие команды (до первой пустой строки). Если конфигурация не задана, mpd ищет конфигурацию назначенную по умолчанию. Если и она не найдена, то никакие команды из mpd.conf не выполняются
   Mpd может быть запущен как в интерактивном режиме или в фоне как демон. В интерактивном режиме mpd принимает команды набранные в консоле.
   Mpd имеет следующие опции для коммандной строки. Каждая опция имеет короткую, символьную форму, так же как эквивалентную длинную форму.

  • -b --background - Запуск в фоне
  • -d --directory [директория] - Эта опция позволяет Вам определять различные каталоги для mpd, где хранятся конфигурационные файлы. Значения по умолчанию: /usr/local/etc/mpd.
  • -f --file [имя файла]Определяет начальный конфигурационный файл, кроме значения по умолчанию, mpd.conf.
  • -p --pidfile [имя файла] - Mpd до старта открывает и блокирует файл, и записывает в него ID процесса. Если иной mpd уже запущен, то второй не запустится. Значение по умолчанию: /var/run/mpd.pid.
  • -k --kill - C этой опцией, mpd перед запуском попытается убить любой существующий mpd процесс перед началом нового запуска. Предыдущий процесс, должен иметь записаный свой ID процесса в PID файл /var/run/mpd.pid (или другой файл, который вы определили в опции --pidfile).
  • -s --syslog-ident [индификатор] - Mpd обычно логгирается через syslog(3) с идентификатором mpd. Эта опция позволяет Вам изменять этот идентификатор.
  • -v --version - Выводит на дисплей номер версии mpd и выходит.
  • -h --help - Выводит на дисплей сообщение о использовании и выходит.

       Mpd отвечает на следующие сигналы, в то время как он запущен:
  • SIGTERM - Попытаться корректно завершить все активные подключения и выйти.
  • SIGUSR1 - Этот сигнал заставляет mpd инициализировать подключение с активным в настоящее время узлом. Если mpd уже пытается соединиться, этот сигнал не имеет никакого эффекта.
  • - SIGUSR2 - Этот сигнал имеет противоположный эффект, а именно, это заставляет mpd закрывать активную в настоящее время связь. Если связь находится уже в закрытом состоянии, этот сигнал не имеет никакого эффекта.

    3.2 Формат конфигурационного файла

       Mpd, при работе, использет четыре конфигурационных файла. Эти файлы описаны ниже.

    3.2.1 Основные свойства

       Для всех файлов конфигурации, истинны следующие вещи:

  • Любую строку, где первый символ представлен как символ (#), считают комментарием и игнорируют.
  • Строки могут быть цитированы при использовании двойных ковычек ("). Строка будет декодирована согласно нормальным правилам Языка C.

    3.2.2 mpd.conf и mpd.links

       Файлы mpd.conf и mpd.links имеют общую простую структуру. Ввод состоит из метки, сопровождаемой последовательностью mpd команд. Метка начинается в первом столбце и заканчивается символом двоеточия (:). Команды, обычно, выравниваются символом табуляции (это не обязательно требуется), и продолжаются построчно после ввода метки, на следующих строках. Метка заканчивается после первой пустой строчки.
       Вот - пример mpd.conf, котомый содержит единственную метку config1, которая определяет единственную связку myisp, содержа две связи modem1 и modem2:
    #
    # конфигурационный файл mpd.conf 
    #
    
    config1:
    	new myisp modem1 modem2
    	set auth authname "mylogin1"
    	set iface enable on-demand
    	set iface addrs 1.2.3.4 5.6.7.8
    	set iface route default
    	set iface idle 300
    	link modem1
    	set modem var $Telephone "123-4567"
    	link modem2
    	set modem var $Telephone "123-4567"
    

       Соответствующий пример mpd.links мог бы выглядеть так:
    #
    # конфигурационный файл mpd.links
    #
    
    # мой внутренний модем который представлен как COM3
    modem1:
    	set link type modem
    	set modem device /dev/cuaa2
    
    # мой внешний модем который представлен как COM2
    modem2:
    	set link type modem
    	set modem device /dev/cuaa1
    

       Замете, что номер телефона для соединения для каждой связи, установлен в mpd.conf вместо mpd.links, потому что он является определенным для метки config1. C другой стороны, устройство последовательного порта - свойства связи и не зависят от конфигурации; следовательно это установлено для каждой связи в mpd.links.

    3.2.3 mpd.secret

       Этот файл соделжит пару логин, пароль для подключения, по паре на одну строчку. Каждая пара может иметь дополнительный третий параметр, который является адресом IP с опциональной сетевой маской. Это используется когда необходимо определенному узлу присвоить определенный IP адрес. Мы ограничим допустимые IP адреса, которые мы назначим для узла сети, чтобы уложиться в пределах указанного диапазона.
       В примере ниже, мы определяем две учетные записи поставщика интернета, которые мы используем для подключения к интернету. Кроме того, мы имеем трех друзей, которым разрешено соединяться с нами, и мы хотим ограничить IP адреса которыее мы позволим им использовать. Наконец, пароль последнего пользователя ищется с помощью внешней программы.
    #
    # конфигурационный файл mpd.secrets
    #
    
    # две учетные записи поставщика интернета
    mylogin1    password1
    mylogin2    "Xka \r\n"
    
    # три друга
    bob         "akd\"ix23"   192.168.1.100
    jerry       "33dk88kz3"   192.168.1.101
    phil        "w*d9m&_4X"   192.168.1.128/25
    
    # внешний пароль, доступный через программу
    gregory     "!/usr/local/etc/mpd/get_passwd.sh" 
    

       Здесь, bob и jerry должны вести переговоры с 192.168.1.100 и 192.168.1.101, соответственно, в то время как phil может использовать любой адрес от 192.168.1.128 до 192.168.1.255.
       Первый символ "!" показывает что пароль для пользователя gregory не хранится в файле mpd.secret. Вместо этого, названная программа выполняется с провами пользователя, указанным как дополнительный параметр (в этом случае это выглядило бы так, "/usr/local/etc/mpd/get_passwd.sh gregory"). Командная сторка так же может включать дополнительные аргументы. Эта программа должна напечатать пароль в виде обычного текста для заданного пользователя в одну одну линию на стандартный вывод, и после этого закончить свое выполнение. Mpd блокируется для выполнения этой операции, так что она должна быстро ответить и, затем, выйти. Если есть ошибка, то программа должна печатать пустую сторочку, или ничего.
       Как специальный случай, если имя пользователя в файле mpd.secret представлено в виде "*", то это страка должна быть последней, и имя пользователя может соответвовать любому имени пользователя. Это можно использовать для определения правильности введенного имени пользователя. Этот подстановочный знак, работает только для "!".
       Полная длина выполняемой комманды должна быть меньше 128 символов. Программа выполняется от имени того пользователя, от которого запущен mpd, который, обычно, root, таким образом основная проблема может быть с выполнением сценария как root, т.е., позаботтьтесь, чтобы скрипт нельзя было читать и изенять всем. Стандартный ввод и стандартный поток ошибок наследуются от родительского процесса mpd. Отметтьте, что любые дополнительные аргументы будут видны пользователям локальной машины запустившим ps(1). (прим. lissyara: на этот случай, вообще-то, есть переменные sysctl, отвечающие за видимость процессов другими пользователями - security.bsd.see_other_gids и security.bsd.see_other_uids)

    3.2.4 mpd.script

       Этот файл имеет формат, подобный mpd.conf и mpd.links, но он содержит команды сценария чата, вместо mpd команд. Каждая строка содержит единственную команду, и метки идентифицируют отправные точки и/или подпрограммы в сценарии. В отличие от mpd.conf и mpd.links, пустая строка не заканчивает обработку команд.
       Смотрите скриптинг чата для полного его описания.

    3.3 Интерфейс командной строки mpd

       После соединения к порту telnet, mpd предосталяет интерфейс командной строки. Тут могут быть введены команды mpd, для конфигурирования различных слоёв, и проверки статуса заданных связок и связей. Команды доступные в интерфейсе командной строки - те же самые, что и доступны в конфигурационных файлах mpd.conf и mpd.links.
       В любой момент времени, тут всегда активные связки и активные связи в этой связке. Они показываются в подсказке командной строки. Вот - пример работающего mpd с конфигурацией в mpd.conf, которая задаёт связку myisp, содержащую две связи - modem1 и modem2:
    $ mpd config1
    Multi-link PPP for FreeBSD, by Archie L. Cobbs.
    Based on iij-ppp, by Toshiharu OHNO.
    mpd: pid 1419, version 4.0 (root@fish.alkar.net 15:29 15-Dec-2006)
    [myisp] ppp node is "mpd771-myisp"
    [myisp] using interface ng0
    

       В это время, mpd прочитал и выполнил все команды ассоциированные с конфигурацией config1, которая задаёт связку myisp. Когда связка создана, mpd логгирует сообщение, показывающее имя ассоциированного netgraph ng_ppp(4) узла, и системный интерфейс (mpd автоматически выбирает один, если точно не сказано какой использовать). В этом случае, mpd771-myisp - узел netgraph, и ng0 - интерфейс.
       Для управления mpd во время работы, вы можете подключиться к консоли telnet ьзвЖ
    > telnet 0 5005
    Trying 0.0.0.0...
    Connected to 0.
    Escape character is '^]'.
    Multi-link PPP for FreeBSD, by Archie L. Cobbs.
    Based on iij-ppp, by Toshiharu OHNO.
    
    Username: Admin
    Password: 
    mpd: pid 1419, version 4.0 (root@fish.alkar.net 15:29 15-Dec-2006)
    
    [modem1]
    

       Подсказка [modem1] показывает текущую активную связь (modem1). Любая специфичная для связки команда, введённая в этой точке, применяется к modem1.
       Для изменения активноq связи, или связки, используйте команду link или bundle:
    [modem1] link modem2
    [modem2]
    

       Теперь, любые введённые команды применяются к myisp или modem2, соответственно. Технически, это работает таким же способом как и в mpd.conf. Также, если изменение связи требует соответствующего изменения связки, mpd также делает и это.
       Доступные команды описаны в следующей части. Когда mpd работает, для получения дополнительной информации о специфической команде может использоваться help:
    [modem2] help show
    Commands available under "show":
     bundle   : Bundle status                ccp      : CCP status
     ecp      : ECP status                   eap      : EAP status
     events   : Current events               ipcp     : IPCP status
     ipv6cp   : IPV6CP status                iface    : Interface status
     routes   : IP routing table             layers   : Layers to open/close
     phys     : Physical device status       link     : Link status
     auth     : Auth status                  radius   : RADIUS status
     lcp      : LCP status                   mem      : Memory map
     mp       : Multi-link status            console  : Console status
     globals  : Global settings              types    : Supported device types
     version  : Version string
    [modem2]
    

       Mpd позволяет вам использовать лишь преффикс команды, когда продолжение команды не неоднозначно:
    [modem2] b
    Defined bundles:
            Bundle         Links
            ------         -----
            myisp          modem2[DOWN]
    [modem2] s
    s: ambiguous command
    

    =============
    translated by Abigor
    verifying by lissyara





  •  

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0383 секунд
    Из них PHP: 33%; SQL: 67%; Число SQL-запросов: 54 шт.
    Исходный размер: 33560; Сжатая: 8805