BASH Programming - Введение

         

Информация о ISP


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

Demon Internet (demon.co.uk)

Easynet TBA

Netcom

PowerTech, Schibstednett, Telenor Online

Primenet TBA

Stanford

Если вы знаете, где еще можно найти информацию о ISP, пожалуйста, напишите.



Как автоматизировать процедуру соединения?


Автоматизированная обработка новостей и почты в Linux делается легко.

Во-первых, надо создать /usr/lib/ppp/ppp-on, который устанавливает соединение с ISP. Часто этот файл содержит только:

/usr/sbin/pppd

В /etc/ppp/options указываются такие спецификации:

connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript" crtscts modem defaultroute asyncmap 00000000 user dirk /dev/modem 38400

Для завершения соединения, используйте соответственнно файл /usr/lib/ppp/ppp-off.

Проверив функциональные возможности этих двух скриптов, теперь нужно написать скрипты, которые выполняют другие задачи. Скрипт для забора email был описан выше, и мы поместим его в /home/dirk/pop.

Скрипт обмена почтой может быть потом выполнен как /root/mail:

#! /bin/sh # # exchange mail # 10 minutes timeout: TIMEOUT=600 DT=10

# kick sendmail: sendmail -q &

# retrieve mail: su dirk -c /home/dirk/pop



# wait for sendmail to terminate: t=0 while ! mailq | grep -q "Mail queue is empty"; do t=$[$t+$DT] if [ $t -gt $TIMEOUT ] ; then echo "sendmail -q timeout ($TIMEOUT).." exit 1 fi sleep $DT done

exit 0

Скрипт обмена новостями может быть записан как /usr/lib/news/news:

#!/bin/sh # # обмен новостями # должен быть запущен от пользователя news: cd /usr/lib/news

#обновить исходящие пакеты (C News): /usr/lib/newsbin/input/newsrun < /dev/null

#обмен новостями: /usr/lib/newsbin/newsx acme news.acme.net

#и обработать пришедшие пакеты: /usr/lib/newsbin/input/newsrun < /dev/null

Скрипт, соединяет различные составляющие и куски, и может быть размещен как /root/news+mail:

#!/bin/sh # # обмен новостями и почтой # должен запускаться от root # if ! /usr/lib/ppp/ppp-on; then exit 1 fi trap "/usr/lib/ppp/ppp-off" 1 2 3 15

#обмен почтой и новостями /root/mail & su news -c ~news/news wait

#отсодиниться.. /usr/lib/ppp/ppp-off

#обновить исходящие пакеты (C News):: su news -c /usr/lib/newsbin/input/newsrun < /dev/null &

exit 0

Легко добавить расширение к вышеприведенному скрипту для установления соединения, если имеется почта и новости для отправки. Давайте назовем его /root/news+mail.cond, и имейте в виду, что имя спула исходящих новостей должно быть исправлено на значение в вашей системе:


#!/bin/sh # # exchange news и email, only if outgoing news или mail # (C News spool) if [ -s /var/spool/news/out.going/acme/togo ] ! ( mailq | grep -q "Mail queue is empty"); then /root/news+mail fi

Осталось только задать время, когда все это запускать. Это делается использованием команды crontab -e от имени root. Давайте назначим обмен почтой и новостями на 07:00 утра и затем каждые четыре часа отправку почты и новостей:

00 7 * * * /root/news+mail 00 11,15,19,23 * * * /root/news+mail.cond

Удостоверьтесть, что каждый компонент тщательно проверен, прежде чем начнете использовать их вместе. Позже можно добавить несколько других задач, таких как установка времени дня (используя ntpdate) и автоматическое обновление (зеркалирование) локально разрабатываемых файлов WWW и FTP на ISP (используя make и ftp).

ALT: В зависимости от предпочтений, также возможно поключить какой-либо процесс. При каждом поднятии PPP, запускается скрипт /etc/ppp/ip-up. Здесь можно добавить команды для запуска процедуры обмена почтой и новостями. См. man pppd для подробностей.

ALT: Также возможно автоматически поднимать PPP при обнаружении трафика. Есть много элегантных решений, но они сильно зависят от правильной настройки, которая должна помочь избежать частых (и дорогостоящих) установлений соединений. Больше информации можно почерпнуть на:



Утилита diald доступна на:



В других местах можно обнаружить и другие варианты создания PPP-сессий.


Как мне бродить по Интернет?


Если вас больше интересует текствое содержание, вам пригодится Lynx Web-браузер. Он находится на:

Если у вас установлен X-windows, вы можете использовать множество графических браузеров. Chimera находится на:

Mosaic:

Mozilla (Netscape):

Эти браузеры постоянно обновляются и доступны во всех версиях.

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



Как мне подсоединиться к остальному миру?


Предполагается, что мы уже имеем установленные модули сетевого программного обеспечения (напр., часть N-серии Slackware), и что вы используете последовательный порт /dev/modem.

Настройка по умолчанию позволяет обращаться к /dev/modem только как пользователь root.

Чтобы напрямую подсоединиться к shell ISP и поэкспериментировать над процессом соединения, вы можете использовать программу minicom. Она прекрасно подходит для этой цели.



Как мне узнать побольше?


В Linux Documentation Project есть книга, называемая Linux Network Administrator's Guide от Olaf Kirch - прекрасное руководство для тех, кто устанавливает и делает что-то, относящееся к TCP/IP и Internet:

Документaция, которая поставляется с каждым программным пакетом обычно содержит всю детальную информацию, которая вам нужна. man-страницы - первое место, в которое надо заглянуть. Для примера попробуйте:

man pppd

Также вы можете найти некоторую документaцию на определенные программы в каталоге /usr/doc, хотя он не всегда хорошо структурирован.

Весьма рекомендуются следующие HOWTO:

Installation-HOWTO дает основы.

NET-2-HOWTO очень глубокое описание установки и настройки программного обеспечения поддержки сети. Многое из описанного в нем уже должно быть сделано, если вы используете стандартный дистрибутив Linux (например, Slackware, RedHat, Debian). Тем не менее многие главы по настройке и поиску проблем окажутся весьма полезными.

Mail-HOWTO объясняет как настроить различные утилиты. Хотя, многое из этого делается при инсталляции Linux.

News-HOWTO для установки (conventional) news spool.

Tiny-News обрисовывает другой путь обмена новостями.

PPP-HOWTO хорошее описание проблем, с которыми вы можете столкнуться при настройке PPP соединения.

Serial-HOWTO содержит все, что вам нужно знать об установке последовательных портов.

Mail-Queue расскажет вам как настроить отправку через sendmail так, чтобы удаленная почта ставилась в очередь, а локальная доставлялась немедленно.



Как настроить C News?


Здесь описано решение на базе ньюссервера C News и протоколе NNTP. C News предназначался для несколько других целей, но его гибкости хватает и для нашей ситуации. Также можно использовать более свежий продукт - сервер новостей INN, но он может требовать большее количество ресурсов. В любом случае не вздумайте ставить их обоих одновременно; они не дружат друг с другом.

Критично, что обработка новостей делается от имени пользователя news, и все конфигурационные файлы находятся в каталоге /usr/lib/news. Один из способов сделать это, при регистрации как root выполнить su news; cd.

Самые важные настроечные файлы это:

active - краткое описание активных групп новостей. Он обновляется командой addgroup, например, addgroup comp.os.linux.networking y.

организация может быть указана по вашему усмотрению в поле заголовка Organization: , в нашем случае:

Dirk Gently's Holistic Detective Agency

почтовое имя в нашем случае acme.net.

whoami установливает имя вашего сайта в Path: . В установке, описанной здесь, с использованием NewsX, это имя никогда не выйдет за пределы машины, так что можете установить его так, как вам нравится, если только уверены, что оно уникально.

sys управляет выборкой и дальнейшим распространением новостей. Допустим, что ISP в нашем случае добавляет acme.net к Path, и, что он единственный наш поставщик новостей. Данный пример в действительности говорит о том, что мы будем принимать все, что приходит, и, что мы отсылаем новости только на acme.net, который прежде не видели и первоначально отправляли на наш собственный сайт. В этой упрощенной установке мы допустим, что все группы приходят из одного источника. /all определяет дистрибуцию, и должно быть включено. Буква F говорит о том, что все (указатели на) исходящие новости будут складываться в файл.

ME:all/all:: acme/acme.net:all,!junk/all:FL:

Должен быть создан подкаталог для исходящих новостей, в нашем случае:

mkdir /var/spool/news/out.going/acme

mailpaths управляет отправкой сообщений в модерируемые группы, хотя эта задача обычно оставляется на усмотрение ISP.


C News нуждаются в определенной доле ежедневного внимания со стороны администратора, но его действия могут быть определены один раз и для всех командой crontab -e для пользователя news. Далее показано как может выглядеть эта установка; она может быть настроена как вам угодно:

# maintain incoming и outgoing batches 10,40 * * * * /usr/lib/newsbin/input/newsrun

# expire C News, once a day 30 0 * * * /usr/lib/newsbin/expire/doexpire

# monitor и report if needed 00 2 * * sat /usr/lib/newsbin/maint/addmissing 40 3 * * * /usr/lib/newsbin/maint/newswatch 50 3 * * * /usr/lib/newsbin/maint/newsdaily

newsrun перемещает входящие и исходящие статьи (дважды в час), doexpire будет удалять утаревшие статьи (каждую нось в 00:30), а три последние команды выополняют различные административные и корректирующие ошибки функции.

Нужно также удостовериться, что при запуске машины все чисто. От пользователя root, добавьте строку в /etc/rc.d/rc.local:

su news -c /usr/lib/newsbin/maint/newsboot

News могут обрабатываться программой NewsX, извлекающей новости с NNTP-сервера. Программа может быть найдена на:

Or:



Установка NewsX предельно проста. Установка в классическом случае:

make su make install exit

Для приведенной установки все, что вы должны сделать - это создать группы, которые вы хотите читать, используя команду "addgroup".

Чтобы выбрать статьи, пользователь news выдает следующие команды (при установке связи по PPP, или аналогичной -):

newsrun newsx acme news.acme.net newsrun

Опция -d дает непрерывную распечатку экрану. За подробной информацией обратитесь к документации NewsX.

NewsX будет также заботиться о регистрации исходящих новостей.

Для управления удалением статей при их устаревании требуется файл explist, требуется. Комментарии в этом примере должны объяснить, что мы делаем:

# hold onto history lines 14 days, nobody gets >120 days /expired/ x 14 - /bounds/ x 0-1-120 -

# retain these for 2 months comp.sources,comp.os.linux.all x 60 -

# noise gets thrown away fast junk,control x 2 -

# default: 14 days, no archive all x 14 -

ALT: В маленьком спуле новостей, не требуется частое управление группами новостей. Полезность трафика изменяется в широких пределах. Основная задача состоит в определении, какие статьи отбросить, а какие группы создать автоматически. Чтобы гарантировать, что управляющие сообщения, содержащие новую группу, не создадут у нас беспорядок, в файле, называемом newgroupperm определяется, что именно мы позволяем:

comp.os.linux tale@uunet.com yv all any nq

В этом примере, будут созданы все группы в иерархии comp.os.linux (y), и пользовательские новости будут сообщаться (v). Все остальные будут молча (q) проигнорированы (n). Последняя строка нужна, если вы хотите создавать все группы вручную.

ALT: Альтернатива NewsX - suck, или slurp совместно с postit. Slurp использует NNTP NEWNEWS, который может работать с несколькими серверами.


Как настроить Leafnode?


Другое решение состоит в установке интегрированного пакета leafnode. Он выполняет все задачи, требуемые для персонального спула новостей, и легко настраивается. Доступен на:

Как для C News, вся обработка новостей ведется от пользователя news.

Домашний каталог для leafnode /usr/lib/leafnode. Для установки введите:

cd /usr/lib/leafnode tar -xzvf leafnode-0.8.tgz cd leafnode-0.8 make su make install

Оставаясь пользователем root, измените строку, которая управляет NNTP в /etc/inetd.conf:

nntp stream tcp nowait news /usr/sbin/tcpd /usr/local/sbin/leafnode

Активизация:

killall -HUP inetd

Возвратимся к пользователю news, напечатав exit. В /usr/lib/leafnode/config изменяем строку, которая определяет сервер NNTP. В нашем случае:

server = news.acme.net

Leafnode будет обслуживать себя добавлением следующей команды через crontab -e от пользователя news:

# expire Leafnode, once a day 0 4 * * * /usr/local/sbin/texpire

Обмен новостями производится также от пользователя news следующей командой (PPP поднят и запущен):

/usr/local/sbin/fetch

Пользователи, которые хотят читать новости, должны после этого использовать рецепт "Как мне установить онлайновую читалку новостей?", за исключением того, что их настройки производятся для локальной машины, т.е.:

export NNTPSERVER=localhost

Это должно быть все имеется к этому. Первая выборка посты передаст список доступных групп новостей. Leafnode затем посмотрит, какие группы запрошены пользователями, и соответственно настроится при следующей активизации.

ALT: Альтернатива leafnode - nntpcache. Он доступен на:



Как настроить оффлайновую читалку новостей?


Чтобы читать новости в offline и таким образом сократить счета за телефон и достичь большей гибкости, надо установить локальный news-spool. Это потребует усилий по настройке, и также определенного объема дискового пространства. После первичной настройки все должно более или менее благополучно работать, требуя лишь некоторого внимания время от времени.

Здесь описаны два различных решения.



Как настроить онлайновую читалку новостей?


Пока PPP активен, можно читать новости в онлайне. Есть куча доступных программ. Два примера: rtin и trn.

Чтобы начать читать новости, то в большинстве случаев достаточно сделать (обычно только раз и для всех в файле .profile):

export NNTPSERVER=news.acme.net

Для получения в сообщениях корректного From-address, некоторые программы могут потребовать:

export NNTP_INEWS_DOMAIN=acme.net



Как отправлять и принимать электронную почту?


Самое первое, удостоверьтесь, что sendmail уcтановлен. Sendmail сортирует внутреннюю и исходящую почту, и держит ее в буфере до тех пор, пока не появится возможность для ее отправки.

Sendmail основывается на настройках в /etc/sendmail.cf. Подходящий для клиентов ISP пример может быть найден на:

Он основан на procmail, как агенте доставки, но может быть легко изменен для пользователя.

Если требуется иметь официальный домен для исходящей почты, то в /etc/sendmail.cf надо указать:

# who I masquerade as (null for no masquerading) DMacme.net

Эта установка позволяет вам иметь ваше имя локально таким же, как у вашего ISP. Sendmail сейчас настроен для отправки почты прямо получателю. Для избежания продолжительных и повторяющихся соединений в тех случаях, когда соединение для приема почты медленное и непостоянное, обычно используют ISP как накопитель почты. Это можно сделать указанием спецификации DS:

# "Smart" relay host (may be null) DSmail.acme.net

Заметьте, что sendmail чувствителен к обработке символов табуляции в файле sendmail.cf. Вы можете использовать редактор vi, чтобы убедиться, что символы табуляции не подменяются на другие.

Прием почты часто может быть выполнен через протокол POP3, который может быть инициализирован при каждом соединении. Скрипт для проверки этого:

sendmail -q popclient -3 -v mail.acme.net -u dirk -p "PrettySecret" \ -k -o /usr/spool/mail/dirk

Этот скрипт может быть запущен после установления PPP-сессии. Заметьте, что это только тест, поэтому удостоверьтесь, что местный почтовый ящик не затрагивается при выполнении этого скрипта. Опция -k говорит, что почта остается в почтовом ящике ISP, и вы просто получаете копию ее. Как только убедитесь, что скрипт работает корректно, можете удалить эту опцию.

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

Более безопасная и лучшая версия этого скрипта находится на:

Эта версия скрипта требует установленного procmail, который находится на:




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

Заметьте, что когда мы прямо используем procmail, как в этом случае, ситуация несколько отличается от описанной в документации на procmail Файл .forward не требуется, и также нам не нужен .procmailrc. Последний нужен только для сортировки почты.

Интерфейс пользователя для чтения и отправки почты может быть найден в программах типа Pine или Elm.

ALT: Для обычного клиента ISP, работающего по коммутируемой линии, нет необходимости иметь активным sendmail демон. Чтобы сократить потребление ресурсов можно закомментировать строку запуска sendmail, которая обчно находится в /etc/rc.d/rc.M.

ALT: Вместо sendmail может использоваться более простой smail. Он очень хорошо описан в (также как и другие полезные вещи) в Руководстве Сетевого Администратора Linux.

ALT: Для создания sendmail.cf есть пакет m4. Он прекрасно подходит для модификации существующей конфигурации.

ALT: Есть менее гибкие, но более простые альтернативы. Pine может быть запусщен в неинтерактивном режиме на указываемый в настройках промежуток времени, например. Можно даже использовать новые версии некоторых веббраузеров.

ALT: Многим энтузиастам нравится примочка Gnus к Emacs, которая работает с почтой и новостями. Дополнительная информация на:



ALT: Альтернативный pop-клиент - это pop-perl5. Доступен на:




Новые версии этого документа


Новые версии этого документа будут периодически поститься в comp.os.linux.answers. Они также будут поступать на различные анонимные FTP-сайты, которые собирают такую информацию, включая:

Вдобавок вы наверняка найдете этот документ на домашней странице Linux WorldWideWeb через:

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



О каких других вещах я должен знать?


Различные сообщения об ошибках в системе обычно будут выдаваться в виде внутреннего email. Чтобы гарантировать, что их можно будет прочесть, нужно создать /etc/aliases. Не забудьте выполнить команду newaliases при каждом изменении этого файла. Пример, подходящий в большинстве случаев:

PostMaster: root ftp: root news: root usenet: root FaxMaster: root fax: root WebMaster: root MAILER.DAEMON: root

Многие программы для Linux могут быть надены на Sunsite, который обычно весьма загружен. Однако существует куча зеркал, и вам стоит попытаться выйти на зеркало поближе к дому, например,

Если вам пришлось перейти из Yarn, он должен быть преоразован в стандартные почтовые ящики, используя yarn2mf, который доступен:



Основная настройка


Настройка машины для использования в сети должна производиться от root. Первым делом удостоверьтесь, что файл /etc/hosts.deny содержит строки:

ALL: ALL

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

ALL: LOCAL

или что тоже самое:

ALL: 127.0.0.1

В последующем, заметьте, предполагается соединение по PPP с динамическим IP адресом. Если вы имеете фиксированный адрес, то в настройках будут некоторые изменения.

Прекрасно иметь имя у машины, имя, которое пользователь с динамическим IP может действительно выбрать таким, каким пожелает. Введите имя в /etc/hostname:

roderick

Следующий шаг - установка сервера имен в /etc/resolv.conf:

search . nameserver 193.212.1.0

Сервер имен должен быть указан числовым IP адресом, и отличается для каждого ISP. Если требуется, вы можете прописать до трех различных серверов. Они будут опрашиваться в том порядке, в каком вы их указали.

Если вы хотите иметь возможность использовать имена типа somemachine как сокращение для somemachine.acme.net, вы должны заменить первую строку на:

search acme.net

Определенный минимум настройки также требуется для /etc/hosts. Большинство пользователей смогут управлять:

127.0.0.1 localhost 0.0.0.0 roderick

Пользователь с фиксированным адресом очевидно должен вместо 0.0.0.0 указать свой фиксированный адрес.

Аналогично минимальный /etc/networks:

loopback 127.0.0.0 localnet 0.0.0.0

Также вы можете установить ваш внешний почтовый домен в /etc/mailname:

acme.net

Имя пользователя и пароль для ISP должны быть указаны в /etc/ppp/pap-secrets

dirk * PrettySecret

Для тех ISP, которые используют CHAP вместо PAP, имя файла будет /etc/ppp/chap-secrets.

Наконец, надо описать процедуру соединения, которая производится перед инициализацией PPP проделать. Это делается в /etc/ppp/chatscript:

TIMEOUT 5 "" ATZ OK ATDT12345678 ABORT "NO CARRIER" ABORT BUSY ABORT "NO DIALTONE" ABORT WAITING TIMEOUT 45 CONNECT "" TIMEOUT 5 "name:" ppp


Содержимое можно настроить по-своему. Телефонный номер в третьей строке, конечно, должен быть заменен на ваш. Некоторым пользователям может понадобиться заменить строку инициализации модема ATZ на более соответствующую их модему. Последняя строка указывает, что в ответ на приглашение name: надо ответить ppp. Другие системы могут иметь другие процедуры входа в систему.

Чтобы проинициировать звонок, PPP-протокол может быть активизирован командой:

exec pppd connect \ 'chat -v -f /etc/ppp/chatscript' \ -detach crtscts modem defaultroute \ user dirk \ /dev/modem 38400

Сейчас мы должны войти в сеть и оставаться на линии до тех пор, пока не нажмем Ctrl-C. Любые сообщения, отражающие состояние соединения, добавляются в системный журнал. Чтобы прочесть их попробуйте:

tail /var/adm/messages

Пока PPP поднят, вы напрямую подключены к Интернет, и можете использовать программы типа ftp, ncftp, rlogin, telnet, finger итд. Все эти программы являются частью пакета network.

Также информация о PPP также доступна в:

/usr/lib/ppp/README.linux

/usr/lib/ppp/README.linux-chat

Наконец, дополнительное слово о безопасности. Файл /etc/inetd.conf содержит список всех сервисов, которые ваша машина обслуживает внешне. Файлом /etc/hosts.deny мы запретим внешний доступ. Для нужных сервисов доступ можно позволить файлом /etc/hosts.allow. Локальный трафик может быть разрешен:

ALL: LOCAL

См. также man 5 hosts_access.

Маленькое замечание: Существует определенное недопонимание по поводу имен протоколов POP. Определения в /etc/services обычно такие:

pop2 109/tcp pop-2 # PostOffice V.2 pop3 110/tcp pop-3 pop # PostOffice V.3

ALT: Вместо chatscript можно использовать намного более гибкий dip. Но не одновременно с diald.

ALT: Счастливчики, имеющие постоянное TCP/IP соединение через, например, Ethernet, могут спокойно пропустить все, что касается, PPP, и сосредоточиться на вопросах установки их сетевых адаптеров.

ALT: У некоторых может не быть доступа через PPP, но может быть SLIP, для которого поддержка такая же, как для PPP. Другая возможность - UUCP. Другие могут иметь только новости и почту. Описание для варианта с почтой находится на:



Также возможна программа TERM. Почитайте Term-HOWTO.


Это описание создано как ответ


Это описание создано как ответ на вопросы пользователей о том, как можно настроить доступ к ISP (Internet Service Provider) по коммутируемой линии в Linux.
Чтобы помочь тем, кто впервые подключает свои машины с Linux к ISP, я попытался охватить как можно больше информации. Этот подход неизбежно приводит приводит к созданию определенных пересечений с другими Linux Howto-документами и LDP книгами. Ссылки на эти документы сделаны для лучшего понимания и подробного изложения.
Множество существующей документaции рассчитано на опытных пользователей с с большим опытом работы, и новички часто имеют проблемы при изучении такого рода информации.
Для простоты, примеры даны относительно следующих установок:
Учетная запись пользователя: dirk
Пароль: PrettySecret
Провайдер Интернет: acme.net
Почтовый сервер: mail.acme.net
Сервер новостей: news.acme.net
Сервер имен: 193.212.1.0
Телефон провайдера: 12345678
Наш dirk будет звонить со своей машины roderick.
Все вышеприведенные установки должны быть соотвественно заменены вашими собственными значениями. Чаще всего пользователям требуется внести минимальные изменения для подключения к различным ISP. Я постараюсь разрешить проблемы, которые вы можете встретить.