Интерпретатор команд shell
Shell - одна из наиболее важных и сложных программ операционной системы UNIX. Она обеспечивает интерфейс "пользователь-ядро" и выполняет следующие функции:
интерпретация команды;
обработка имен файлов, определенных через метасимволы;
осуществление переадресации в/в;
создание среды пользователя;
поддержка командного языка;
Интерпретация команды - проверка команды на синтаксис, если команда набрана не правильно shell выдаст сообщение об ошибке.
Интерпретатор shell разрешает использование большого набора метасимволов, для сокращения записи имен файлов.
Пример:
Пусть в текущем каталоге находится пять файлов: fl...f5, требуется распечатать содержимое этих файлов.. Осуществить это можно следующей командой: Prflf2f3f4f5
Вывести содержимое файлов данного каталога можно, используя метасимвол «*» (произвольная строка символов). Эту запись можно трансформировать:
prf* или prf[1 2 3 4 5] или рг *[1 2 3 4 5]
При этом файл может располагаться в любом каталоге.
Указав в [ ] последовательность цифр или букв символов, можно указать альтернативный символ подстановки.
Метасимвол «?» - соответствует единственному произв. символу.
Осуществление переадресации в/в: если требуется, интерпретатор shell легко перераспределяет устройство в/в.
Перераспределение вывода происходит командами: >, »:
Is > fde.txt - результатом выполнения команды будет являться запись в file.txt. Если файла не было, он автоматически создается, если был - его предыдущее значение будет уничтожено.
Чтобы добавлять в конец уже существующего файла определяется операция слабой переадресации »:
Пример:
cat al.c a2.c> temp, с -al.c и a2.c объединяются и записываются в temp.с
cat al.c a2.c » temp, с с -al.cn а2.с объединяются и записываются в конец temp, с (если файл уже существовал, если нет - файл будет создан).
Совершенно аналогично переадресация ввода < mail tt0l tty02 tty03 < let все данные из let поступят на все три терминала
Shell допускает объединение нескольких команд в конвейер для их совместного последовательного выполнения. В этом случае информационная связь между командами осуществляется через межпроцессный канал. Результат выполнения одной команды сразу поступает на вход другой.
Пример:
who > temp
выводится список пользователь в алфавитном порядке
sort < temp
С помощью операций и/или можно формировать условную последовательность выполнения. Например: ее а.с && a.out. По сути конвейер является простейшей программой на командном языке. Shell позволяет объединять команды в программы и интерпретировать их как единое целое.
Пример:
С помощью операции &&, || можно формировать условные последовательности: gec-о а.ехе а.с && Ja.exe
Условная последовательность выполнится, если не будет обнаружена синтаксическая ошибка.
Пример:
who | sort - выдает список пользователей в алфавитном порядке через ls -a | wc-l - выдает количество файлов в текущем каталоге. ls | pr -s - выдает список пользователей в алфавитном порядке
Создание среды пользователя: Для каждого пользователя shell организует доступ к любой команде. Поддержка командного языка: для эффективного взаимодействия команд в рамках программ на командных языках интерпретатора разрешает использование специальных переменных, обычно идентификаторов, которые объявляют и инициализируют присваиванием и которым присваивается значение. =0= $ или %. Помимо переменных, вводимых пользователем shell позволяет использовать такие как =0= # - число аргументов выполнения команды и содержит все необходимые синтаксические конструкции: операторы циклов, условные операторы, операторы переключения и т.д. для полноценного написания программ.
Пример:
Напечатать имена трех файлов каталога is - 40 являются объектными и по объему не превышают некоторой заданной величины:
###
cd.. /home/is - 40 3 - директория /home/is - 40 - текущая files =4s *.o' - присваивается список имен объектных файлов {Is *.oj
for i in Sfiles - переменной i последовательно присваиваются имена файлов и списка, определяющий его размер do
n=size $
if test $ n -lt $ 1; then echo $ i - проверяется не превосходит ли размер установленного значения передаваемого в качестве первого внешнего аргумента
fi
done ### - It - меньше - le - меньше или равно - eq – равно -gl - больше или равно -gt - больше -pе - не равно
Соединение системы установки с помощью конкретного аппаратного интерфейса. Ethernet,Arcnet,TokenRing
Команда ifconfig позволяет конфигурировать сетевые интерфейсы, а команда route обеспечивает маршрутизацию.
При каждом запуске системы сетевые интерфейсы и таблицы маршрутизации конфигурируются заново следовательно для каждого интерфейса команды ifconfig и route записываются в файл инициализации:
/etc/rcd/init. d/inet
ifconfig имеет вид:
1/со_интерфейс_хост_сеть_флаг_адрес_опции
host- свидетельствует о том, что данный IP является адресом хост-машины
net- значит чисто домашний IP, является адресом сети.
Опции:
[-] broadcast - широковещательный адрес сети. Минус значит отмену широковещательной рассылки.
netmask - IP маска сети.
mtu n - максимальное число байтов за одну передачу по данному интерфейсу
interface - имя сетевого интерфейса
ФУР ~ задает имя поддерживаемого семейства адресов
up - активизирует интерфейс
down - деактивизирует интерфейс
[-] агр - активизирует/останавливает работу протокола агр
[-] trailers - включает/выключает режим использования завершителей в Ethernet-кодах
[-] allmulty - включает/выключает режим при котором все поступающие кадры отслеживаются на уровне ядра системы
dstaddr адрес - IP адрес конечного пункта соединения типа точка-точка.
pointtopoint адрес - работа в режиме точка-точка.
Если адрес указан то он присваивается удаленной системе
hw - устанавливает физический адрес интерфейса
Примеры:
ifconfig ethO 192.168.0.1 broadcast 192.104.244.137 netmask 255.255.255.0
ifconfig piipO 199.35.209.72 pointtopoint 204.166.254.14 (конфигурация интерфейса plip, соединение компьютера с адресом 199.35.209.72 с компьютером с адресом 204.166.254.14)
plip - межсетевой протокол для параллельного канала.
Slip - межсетевой протокол для последовательного канала.
Ррр - точка - точка
Двухточечные протоколы для двухсторонней связи (по телефонной линии и др.) ifconfig lo 127.0.0.1 (процедура конфигурации закольцовывающего интерфейса)
ifconfig полезна для проверки статуса.
Пакет являющийся частью передаваемых по пути к пункту назначения проходит по определенному маршруту. Маршрут определяет начальную точку процесса передачи пакета и показывает куда система должна передать пакет, чтобы он достиг пункта назначения
Маршрутизация бывает статическая и динамическая
Маршруты содержатся в файле:
/proc/net/route
Его можно посмотреть: Destimation Gateway Genmask Flags MSS Window Use Iface loopback * 255.0.0.0 v 1936 0 12 lo
miem.edu.ru * 255.255.255.0 v 1936 OOethO
Destination - IP адрес конечного пункта;
Gateway - IP адрес(хост имя шлюза, использованного на данном маршруте (* - шлюз не используется));
Genmask - маска есть;
flags - тип/состояние маршрута;
U – активный;
Н – хост;
М – модифицированный;
G – шлюз;
D – динамический;
MMS - максимальное количество данных за один раз;
Window - максимальное количество данных которое принимающая сторона может принять;
Use - количество пакетов по данному маршруту;
Iface - тип интерфейса на данном маршруте.
В файле маршрутизации должна содержаться хотя бы одна запись IP должен быть указан в файле до того как интерфейс будет задействован.
Адрес вводится с помощью команды route add адрес.
add имеет несколько спецификаторов
Если вводится статический маршрут, то эти спецификаторы нужны для ввода таких параметров как маска сети шлюз интерфейс адрес пункта назначения и т.д.
Если интерфейс уже сконфигурирован, то вся необходимая информация будет взята из данных конфигурации интерфейса.
Если система подключена к сети, в файле маршрутизации должна быть сделана хотя бы одна запись, задающая маршрут по умолчанию пункт назначения пункт назначения задается ключевым словом default.
Route -net 192.168.0.1 удаляет один из существующих маршрутов.
Контроль за состоянием сети
ping - позволяет проверить наличие доступа к любому хост-компьютеру в сети.
ping хост-имя [флаги]
netstat - позволяет получить в режиме реального времени информацию о состоянии сетевого соединения а так же статистические данные и таблицу маршрутизации
netstat без опций список сетевых соединений системы. Сначала активные TCP - соединения, а затем активные гнезда домена типа UNIX. Гнезда этого домена заняты процессами обеспечивающими установление соединение системы с другими системами
netstat опции:
-а - информация о всех гнездах + гнезда работающие только на прием -/ - информация обо всех сетевых устройствах -п - ip адреса удаленной и локальной системы -г - хранящаяся в ядре таблица маршрутизации —t - информация только о TCR гнездах и работающих на прием -и - информация только о UDP гнездах -х - информация только о доменных гнездах -о - информация о количестве повторно переданных байтов и состояние таймера
Протокол SLIPи РРР
Для подсоединения к телефонным линиям используют протоколы SLIP(Serial Line Internet Protocol) и PPP(Point-to-Point Protocol)
Чтобы установить соединение по одному из этих протоколов необходимо активировать поддержку TCP/IP и конфигурировать закольцовывающий интерфейс
Надо выяснить IP серверов доменных имен и ввести их в файл /etc/ resolve, conf
ррр соединение устанавливается с помощью программы pppd. Она конфигурирует соединения и устанавливает лимиты mtu и получает IP адреса.
Сначала надо установить соединение с удаленной хост-системой с помощью программы chat, а потом сконфигурировать его с помощью команды pppd.
Синтаксис pppd:
pppd опции имя устройства скорость локальный удаленный адреса опции pppd
Имя устройства - это имя устройства для uon&Ma(/dev/can-0-3)
Скорость - speed число -скорость передачи данных в бодах
Опции: asyncmap карта - задает карту символов которая определяет какие управляющие символы не должны быть переданы в виде символов, а должны передаваться как байтовые escape.
Connect(connect команда) - используется для соединения указанной команды (обычно команда chat) auth- требование аутентификации удаленной системы defaultroute - устанавливает по умолчанию маршрут к удаленному хост-компьютеру
crtscts - используется для аппаратного управления потоком
xonxoff- используется программным управлением потоком
disconnect команда - выполнение команды после того как ррр разорвал соединение
mtu - задание величины максимального принимаемого блока
netmask маска - задание маски сети ррр
noipdefault-выявление значения ip адресов выделенных провайдером. Осуществляется для поиска в потоке данных поступающих из удаленной машины локальных и удаленных IP адресов для данного сеанса связи.
Опция эта обязательна для установления соединения при динамических IP адресах.
Passive - ожидание установления соединения в случае невозмоности установления немедленного соединения
Silent - ожидание установления соединения с удаленным хостом
Modem - управление модемом
Пример:
pppdconnect 'chat-fconf.chat' dev/cual 57600 199.35.209.72:163.179.4.22 mru 1500 defaultroute crtscts modem
Программа использует удаленный и локальный адрес для установления статического соединения. Если провайдер предоставляет только динамические адреса то:
pppd connect 'chat-j con/.chat' dev/cual 57600
После действие pppd во время работы можно в файле: /var/log/messanges
Chat-сценарии
Для установления соединения "chat" должна получить всю информацию о нем: номер телефона, регистрационное приглашение, идентификатор пользователя, приглашение для ввода пароля, пароль, строку инициализации модема. Для этого создается файл с необходимой информацией.
Чат-сценарий состоит из одной строки разбитой на сегменты, соответственно этапам соединения. Каждый сегмент состоит из пары ожидание-ответ. В ответ обычно приходит строка подтверждения соединения или скорость передачи в бодах. После строки соединения удаленной системы посылает в регистр приглашение. "login:"
В ответ высылается идентификатор пользователя после чего ожидается запрос пароля.
Пример сценария:
conf.chat
ABORT 'NO CARRIER' ABBORT BUSY
AT\&FZVIL0
OK ATDP1216323
CONNECT \n Login: m521 Password: mypass
Многие удаленные системы в случае установления проблем соединения начинают сообщать об ошибках. Для выявления такого сообщения можно воспользоваться строкой управления с ключевым словом ABORT
Поверяется получение ответов "по carrier" или "busy". Если они не обнаружены, соединение не установиться.
NFS (Network File Systems) - обеспечивает доступ к файловой системе
REX (Remote Execution Facility) - позволяет выполнять команды на удаленной машине
NLM (Network Lock Manager) - обеспечивает синхронизацию доступа к разделенным файлам
NIS (Network Information Service) - используется для централизованного администрирования доступа в сети
Основные компоненты NS (Network Services) - набор сетевых программ, средств позволяющих объединить компьютеры разных архитектур. Включает в себя:
NFT (Network File Transfer) - обеспечивает передачу файлов между компьютерами в сети VT3K - обеспечивает работу в режиме виртуального терминала
Работа в сети по протоколу TCP/IP
FTP - передача файлов по сети
Подкоманды:
open (сетевое имя машины) - установить сеанс связи с указанной машиной
close - завершить сеанс связи
disconnect - завершить сеанс связи без выхода из ftp
bye; quit - завершить сеанс связи и выйти из команды ftp
ascii - установить режим передачи текстовых файлов
binary - установить режим передачи двоичных файлов
get удаленный файл [локальный файл]
recv - копирование файла с удаленной машины на локальную
mget - копирование нескольких файлов с удаленной машины на локальную
put локальный файл [удаленный файл] - копирование файлов с локальной машины на удаленную
mput локальные файлы - копирование нескольких файлов с локальной машины на удаленную
append локальный файл [удаленный файл] - добавление файла с локальной машины в конец файла на удаленную машину
/ [команда[аргументы]] - выполнить команду shell на локальной машине
cd директория - сменить рабочий каталог на удаленной машине
led директория - сменить рабочий каталог на локальной машине
dir [удаленная директория] [локальный файл] - записать содержимое удаленной директории в локальный файл
Is //
mdelete [удаленные файлы] - удаление файлов на удаленной машине
delete [удаленные файлы/удаленная директория] - удаление файлов/директорий на удаленной машине
mkdir - создание директории на удаленной машине
Пример:
ftp> put
(local) ? а: \ olga. с
(удаленная машина)? olga.с Telnet
telnet - работа с удаленной машиной в режиме виртуального терминала(/е/ие? [сетевое имя]) Синтаксис основных подкоманд:
open [сетевое имя машины]- установление связи с указанной машиной
close — завершить сеанс связи без выхода из команды telnet
quit — завершить сеанс связи с выходом из telnet
/ [команда[аргументы]] - выполнить команды shell на локальной машине
Поддержка в Unixсетевого обмена
В основном все UNIX системы рассчитаны на работу в сетях, в которых используются протоколы tcpMp (transport control protocol/internet protocol).
tcp - протокол отправления передачи ip - протокол отвечающий за маршрутизацию
Протоколы используемые в сетях:
Udp (User datagram protocol) - протокол пользовательских дейтаграмм
Аrр - протокол разрешения адресов (определяет физические адреса сетевых интерфейсов по unix адресам)
Dns - протокол преобразования доменных имен (преобразует доменные хост-имена в ip адреса)
ICMP (internet control message protocol) - межсетевой протокол управляющих сообщений, осуществляет выдачу сообщений,
позволяющих корректировать маршрутизацию.
RIP (Routing Inform protocol) - протокол маршрутной информации, определяет маршрутизацию.
OSPF (Open short Path First) - более эффективный чем rip (протокол первого кратчайшего пути)
RARP - протокол обратного разрешения адресов (по физическому адресу определяет ip)
ftp (file transfer protocol) - протокол пересылки из одной системы в другую по средствам протокола tcp.
tftp - -//- с использованием udp.
telnet - протокол прикладного уровня для обеспечения интерактивного доступа к ресурсам удаленного компьютера.
SMTP (Simple Mail Transport Protocol) - упрощенный протокол передачи почты между системами.
HTTP (Hyper Text Transport Protocol) - протокол обмена гипертекстовой информацией, т.е. документами HTML (используется
веб серверами; http клиент - браузер).
POP - протокол почтового обмена (протокол получения электронной почты с почтовых серверов).
EGP - протокол внешнего шлюза (маршрутизация по внешним сетям).
GGP - межшлюзовый протокол (маршрутизация при пересылке инфы между Интернет шлюзами).
IGP - протокол внутреннего шлюза (маршрутизация для внутренних сетей).
NFS - сетевая файловая система (позволяет монтировать фс на удаленных машинах).
NIS - сетевая информационная служба (обеспечивает сетевую поддержку функционирования пользователей).
Rpc дистанционный вызов процедуры (позволяет программам на удаленных системах связываться между собой).
snmp - протокол управления сетью (выдает сообщения о состоянии и конфигурации протоколов tcp\ip ).
bootp - протокол начальной загрузки (обеспечивает запуск системы по информации сетевого сервера).
ip адрес состоит из 4 сегментов чисел, разделенных точками. Одна из частей - адрес сети (первые 3 сегмента), другая для обозначения конкретного хост компьютера в этой сети (последний сегмент). Кроме ip адреса необходимо знать:
1. адрес сети ip (*. *. *. 0)
Сетевая часть ip адреса хост машины + 0. Система определяет адрес сети по адресу хост машины с помощью маек сети путем поразрядной операции «и» (поразрядное сложение).
2. широковещательный адрес (*. *. *.255)
Позволяет системе посылать сообщения всем системам сети одновременно. Его легко определить как (*.*.*.255, Машинная часть в нем устанавливается равной 255.
Пример:
192.168.14.30
192.168.14.255
3. адрес шлюза (*. *. *. 1) если есть
Шлюз - один из компьютеров сети, обеспечивающий взаимодействие с другими сетями. Все соединения из данной сети с какой-либо другой сетью осуществляются через этот шлюзовой компьютер. Как правило адрес шлюза имеет ту же сетевую часть адреса что и хост компьютер, но в его машинной части стоит 1. Во многих сетях, включая Интернет, есть компьютеры, которые работают как серверы доменных имен (позволяют преобразовывать доменные имена сетей и хост машин в ip адреса). Это позволяет идентифицировать компьютер не пользуясь ip адресом. Обычно dm серверов несколько, узнать их адреса можно у провайдера или администратора.
Доменное имя состоит из 2х частей: хост имени и имени домена. Хост - имя - собственное имя компьютера, а домен обозначает сеть, частью которой этот компьютер является. Домены обычно имеют расширение которым обозначается страна или ориентация сети.
4. маска сети
Используется для получения адреса сети, к которой подключен данный компьютер сети. При определении маски сети адрес хост компьютера выступает в качестве трафарета. Все числа в сетевой части устанавливаются равными 255, а в машинной части становится 0. (255.255.255.0)
5. Адрес сервера имен (DNS)
Адресов обычно несколько. Их можно узнать у провайдера или системного администратора.
Настройка и поддержка работы сети в ОС UNIX
Адрес сети, ip адрес компьютер, широковещательный адрес, адрес шлюза, адрес сервера имен и маска сети вводятся во время инсталляции системы. Они автоматически заносятся в соответствующие конфигурационные файлы:
1) /etc/hosts - отвечает за связь хост имен с ip адресами.
Сначала ведение списка хост имен с адресами ip было обязанностью всех компьютеров сети. Этот список до сих пор хранится в файле /etc/hosts. За ведение этого списка отвечал системный администратор. Вследствие большого объема сетей функции преобразования доменных имен в ip адреса были переданы серверам доменных имен. Тем не менее файл /etc/hosts продолжает использоваться для хранения доменных имен и ip адресов хост машин, соединение с которыми устанавливается наиболее часто, т.е. это своеобразная КЭШ память системы. Перед тем как обращаться к серверу имен система будет обращаться к файлу /etc/hosts и искать в нем ip адрес заданного ей доменного имени. Первоначально в /etc/hosts всегда будет присутствовать запись для локального компьютера localhost с ip адресом 127.0.0.1 Это зарезервированный ip адрес, который позволяет пользователям системы связываться друг с другом в локальном режиме («закольцованный интерфейс»)
Пример:
127.0.0.1 turtle, trek.com
192.168.0.14 rose.miem.ru
2) /etc/networks - связь доменных имен с адресами сетей.
В файле /etc/networks содержатся доменные имена и ip адреса сетей, с которыми есть соединение loopback 127.0.0.0 miem.ru 192.168.0.0
В файле/etc/rc.d/init.d/inetl находятся команды, обеспечивающие конфигурирование сетевого соединения. Многие записи в этом файле автоматически создаются при использовании команды netcfg (netconfig) и конфигурировании сетевого соединения в процессе инсталляции. В этом же файле находятся и команды ifconfig и route, заданное хост имя системы, адрес сети и все другие необходимые адреса, этот файл можно редактировать.
3) /etc/hostname - содержит хост имя вашей системы.
В файле etc/hostname содержится хост имя вашей системы. Этот файл можно редактировать при помощи iftconfig.
/etc/rc.aVinit.d/inet - содержит команды конфигурирования сетевого интерфейса при начальной загрузке.
/etc/host, conf- содержит опции конфигурирования
/etc/resolv.conf - содержит список серверов доменных имен.