Переменные языка shell
Язык shell позволяет работать с переменными (без предварительного объявления). Имена переменных начинаются с буквы и могут включать буквы и цифры. Обращение к переменным начинается со знака $.
Пример. Переход к начальному каталогу пользователя. cd $HOME
Оператор присваивания
Присвоение значений переменным осуществляется с помощью оператора ‘=’ без пробелов.
Пример. s=Hello
echo $s
Вычисление выражений
Осуществляется с помощью команды expr и операторов:арифметических логических
+ сложение = равно
- вычитание !- не равно
\* умножение \< меньше
/ деление \<= меньше или равно
% остаток от деления \> больше
\>= больше или равно
Результат операций сравнения - вывод 1 (true) или 0 (false). Все операторы и имена переменных должны отделяться друг от друга пробелами.
Пример. a=5 b=12
a=’expr $a + 4’
d=’expr $b - $a’
echo $a $b $d
Будет выведено: 9 12 3
Условные выражения
Ветвление вычислительного процесса осуществляется с помощью оператора if:
if список_команд1
then список_команд2
[else список_команд3]
fi
Список_команд - это одна или несколько команд (для задания пустого списка используется двоеточие - ‘:’). Список_команд1 предает оператору if код возврата последней команды из списка. Если он равен 0, то выполняются команды из списка_команд2, таким образом нулевой код возврата эквивалентен значению «истина». В противном случае выполняются команды из списка_команд3, если он существует.
Проверка условия может осуществляется с помощью команды test. Аргументами этой команды могут быть имена файлов, числовые и нечисловые строки. Она используется в следующих режимах:
· проверка файлов: test -ключ имя_файла
Ключи: -r файл существует и доступен для чтения;
-w файл существует и доступен для записи;
-x файл существует и доступен для исполнения;
-f файл существует и имеет тип ‘-‘, т.е. это обычный файл;
-s файл существует, имеет тип ‘-‘ и не пуст;
-d файл существует и имеет тип ‘d‘, т.е. это каталог.
· сравнение чисел: test число1 -ключ число2
Ключи: -eq равно;
-ne не равно;
-lt меньше;
-le меньше или равно;
-gt больше
-ge больше или равно.
· сравнение строк:
test [-n] строка строка непуста;
test -z строка строка пуста;
test строка1 = строка2 строки равны;
test строка1 != строка2 строки не равны.
Построение циклов
В языке shell есть три типа циклов: while, until и for.
· цикл while:
while список_команд1{;|перевод строки}
do список_команд2{;|перевод строки}
done
В условии учитывается код возврата последней выполненной команды из списка_команд1, при этом 0 интерпретируется как «истина».
цикл until:
until список_команд1{;|перевод строки}
do список_команд2{;|перевод строки}
done
Проверка условия выполняется перед выполнением цикла. Учитывается код возврата последней выполненной команды из списка_команд1, при этом цикл выполняется до тех пор, пока код возврата не примет значение «истина».
цикл for:
for переменная [in список_значений]{;|перевод строки}
do список_команд{;|перевод строки}
done
Переменной присваивается значение очередного слова из списка_значений и для этого значения выполняется список_команд. Количество итераций равно количеству цепочек символов в списке_значений, разделенных пробелами. Если слово in и список_значений опущены как необязательные, то переменной поочередно присваиваются значения параметров, переданных при запуске данной программы. В качестве списка можно использовать шаблоны имен файлов, тогда интерпретатор превращает этот шаблон в требуемый синтаксисом список имен файлов, удовлетворяющий шаблону. Пример. Печать списка имен текстовых файлов из текущего каталога. list=`ls *.txt`
for val in $list
do
echo «$val»
done
23 Сетевое и системное администрирование при проектировании систем обработки данных
Чтобы компьютерная сеть могла эффективно выполнять свои функции, необходимо централизованно контролировать состояние основных её элементов, выявлять и разрешать возникающие проблемы, выполнять анализ производительности и планировать развитие сети и др. Эти виды работ являются основными задачами администрирования сетей.
Администрирование – процедуры управления, регламентирующие некоторые процессы или их часть. Как правило, оно фиксирует и руководит процессами и ситуациями, нуждающимися в ограничениях или целевом управлении.
Построение компьютерных сетей вызвало необходимость управления (администрирования) ими и созданными на их основе компьютерными вычислительными и информационными системами. В результате появилось системное администрирование.
Сетевое администрирование (Network Management) возникает, когда у администратора сети появляется потребность и возможность оперировать единым представлением сети, как правило, это относится к сетям со сложной архитектурой. При этом осуществляется переход от управления функционированием отдельных устройств к анализу трафика в отдельных участках сети, управлению её логической конфигурацией и конкретными рабочими параметрами, причём все эти операции целесообразно выполнять с одной управляющей консоли. Задачи, решаемые в данной области, разбиваются на две группы:
1. Контроль за работой сетевого оборудования,
2. Управление функционированием сети в целом.
Конечной целью управления сетью является достижение параметров функционирования ИС, соответствующих потребностям пользователей. Пользователи оценивают работу ИС не по характеристикам сетевого трафика, применяемым протоколам, времени отклика серверов на запросы определённого типа и особенностям выполняемых сценариев управления, а по поведению приложений, ежедневно запускаемых на их настольных компьютерах.
Общая тенденция в мире сетевого и системного администрирования – перенос акцентов с контроля за отдельными ресурсами или их группами, с управления рабочими характеристиками ИС на максимальное удовлетворение запросов конечных потребителей информационных технологий способствовала появлению концепции динамического администрирования.
Такой подход предполагает, прежде всего, наличие средств анализа поведения пользователей, в ходе которого выявляют их предпочтения и проблемы, возникающие в повседневной работе. Результаты, полученные на этом этапе, должны послужить отправной точкой для активного управления взаимодействием между основными объектами администрирования – пользователями, приложениями и сетью. Эти факторы дают основание полагать, что на смену сетевому и системному администрированию придёт управление приложениями и качеством сервиса, независящее от используемых вычислительных платформ или сетей.
Эволюция концепций администрирования коснулась не только архитектуры систем. Новые проблемы, возникшие в распределённых средах, привели к тому, что на некоторое время сетевое управление стали рассматривать как главную заботу администраторов ИС. Ситуация изменилась когда число распределённых приложений и баз данных, функционирующих в сети, превысило пороговое значение. При этом возросла роль системного администрирования, и неизбежным оказался процесс интеграции системного и сетевого администрирования.
Управление сетью (Network management) – целенаправленное воздействие на сеть, осуществляемое для организации её функционирования по заданной программе. Оно включает следующие процедуры:
¾ включение и отключение системы, каналов передачи данных, терминалов;
¾ диагностика неисправностей;
¾ сбор статистики;
¾ подготовка отчётов и т.п.
С точки зрения модели OSI управление сетью подразделяется на управление:
¾ конфигурацией;
¾ отказами;
¾ безопасностью;
¾ трафиком;
¾ учётом.
Традиционные методы управления основаны на использовании правил. Они предписывают системе управления в компьютерной сети предпринимать определённые действия (например, выдать предупреждающее сообщение на управляющую консоль) при наступлении определённых событий (превышение интенсивностью трафика заранее определённого порогового значения и др.).
Приемлемая в небольших сетях, методология управления на основе правил сталкивается с множеством препятствий в крупных сетях: сетях вычислительных центров и корпоративных информационных сетях (ИС). Основная трудность обусловлена тем, что функционирование мощной вычислительной среды может описываться многими тысячами параметров.
В ОС UNIX, как и в любой другой многопользовательской ОС, обеспечивающей защиту пользователей друг от друга и защиту системных данных от любого непривилегированного пользователя, имеется защищённое ядро, управляющее ресурсами компьютера и предоставляющее пользователям базовый набор услуг. Это не очень чётко структурированный монолит большого размера, поэтому программирование на уровне ядра ОС UNIX продолжает оставаться искусством.
Система обладает свойством высокой мобильности – вся ОС, включая её ядро, сравнительно просто переносится на различные аппаратные платформы. Все части системы, не считая ядра, являются полностью машинно-независимыми. Эти компоненты аккуратно написаны на языке Си, и их перенос на новую платформу обычно требует только перекомпиляция исходных текстов в коды целевого компьютера. Небольшая часть ядра машинно-зависимая. Она написана на смеси языков Си и Ассемблера целевого процессора. При переносе системы на новую платформу требуется переписать эту часть ядра с использованием языка Ассемблера и с учётом специфических черт целевой аппаратуры. Машинно-зависимые части ядра изолированы от основной машинно-независимой части. При хорошем понимании назначения каждого машинно-зависимого компонента переписывание машинно-зависимой части в основном является технической задачей, хотя и требует программистов высокой квалификации.
Средства общения с ядром в ОС UNIX называются системными вызовами.
Для обращения к функциям ядра ОС используют “специальные команды” процессора, при выполнении которых возникает особое внутреннее прерывание процессора, переводящее его в режим ядра. В большинстве современных ОС этот вид прерываний называется “trap” – ловушка. При обработке таких прерываний (дешифрации) ядро ОС распознаёт, что данное прерывание является запросом к ядру со стороны пользовательской программы на выполнение определённых действий, выбирает параметры обращения и обрабатывает его, после чего выполняет “возврат из прерывания”, возобновляя нормальное выполнение пользовательской программы.
Поскольку ОС UNIX стремится обеспечить среду, в которой пользовательские программы полностью мобильны, потребовался дополнительный уровень, скрывающий особенности конкретного механизма возбуждения внутренних прерываний. Он обеспечивается “библиотекой системных вызовов” – обычной библиотекой с заранее реализованными функциями системы программирования языка Си. Внутри любой функции конкретной библиотеки системных вызовов содержится код, являющийся специфичным для данной аппаратной платформы. Каждому возможному прерыванию процессора соответствует фиксированный адрес физической оперативной памяти. Когда процессору разрешается прерваться из-за наличия внутренней или внешней заявки на прерывание, происходит аппаратная передача управления на ячейку физической оперативной памяти с соответствующим адресом. Обычно адрес этой ячейки называется “вектором прерывания”.
Как правило, заявки на внутреннее прерывание (поступающие непосредственно от процессора) удовлетворяются немедленно. ОС должна разместить в соответствующих ячейках оперативной памяти программный код, обеспечивающий начальную обработку прерывания и инициирующий полную обработку.
ОС UNIX требуется общая основа организации сетевых средств, основанных на многоуровневых протоколах. Для решения этой проблемы реализовано несколько механизмов, обладающих примерно одинаковыми возможностями, но не совместимых между собой, поскольку каждый из них являлся результатом индивидуального проекта. Слабая развитость в UNIX подсистемы ввода/вывода потребовала включения потоков, как механизма реализации существующего символьного ввода/вывода. Механизм потоков не навязывает конкретной архитектуры сети и (или) конкретных протоколов. Как любой другой драйвер устройства, потоковый драйвер представляет специальный файл файловой системы со стандартным набором операций: open, close, read, write. В UNIX протокол TCP/IP реализован как набор потоковых модулей плюс дополнительный компонент TLI (Transport Level Interface – интерфейс транспортного уровня). TLI является интерфейсом между прикладной программой и транспортным механизмом. Приложение, пользующееся интерфейсом TLI, получает возможность использовать TCP/IP. Интерфейс TLI основан на использовании классической семиуровневой модели ISO/OSI.
Перед началом работы зарегистрированный пользователь вводит со свободного терминала своё учётное имя (account name) и, возможно, пароль (password). Регистрацию новых пользователей выполняет администратор системы. Пользователь не может изменить своё учётное имя, но может установить и (или) изменить свой пароль. Пароли в закодированном виде хранятся в отдельном файле. Каждому зарегистрированному пользователю соответствует каталог файловой системы, называемый “домашним” (home) каталогом пользователя. При входе в систему пользователь получает неограниченный доступ к этому каталогу и всем содержащимся в нём каталогам и файлам. Он может создавать, удалять и модифицировать каталоги и файлы в его домашнем каталоге. Потенциально он может получить доступ и к другим файлам. Однако такой доступ может быть ограничен, если пользователь не имеет достаточных привилегий.
Ядро ОС UNIX идентифицирует каждого пользователя по его идентификатору (User Identifier, UID) – уникальному целому значению, присваиваемому пользователю при регистрации в системе. Кроме того, каждый пользователь относится к некоторой группе пользователей, также идентифицируемой целым значением (Group Identifier, GID). Значения UID и GID для каждого зарегистрированного пользователя сохраняются в учётных файлах системы и приписываются процессу, в котором выполняется командный интерпретатор, запущенный при входе пользователя в систему. Эти значения наследуются каждым новым процессом, запущенным от имени данного пользователя, и используются ядром системы для контроля правомочности доступа к файлам, выполнения программ и т.д. Ограничения для пользователя касаются: максимального размера файла и числа сегментов разделяемой памяти, максимально допустимого пространства на диске и т.д.
Администратор системы также является зарегистрированным пользователем. Он обладает бóльшими возможностями, чем обычные пользователи. В ОС UNIX ему выделяется одно нулевое значение UID. Пользователь с таким UID называется суперпользователем (superuser) или root. Он имеет неограниченные права доступа к любому файлу и на выполнение любой программы. Кроме того, такой пользователь может осуществлять полный контроль над системой; остановить и даже разрушить её. Супервизор должен хорошо знать базовые процедуры администрирования ОС UNIX. Он отвечает за безопасность системы, её правильное конфигурирование, добавление и исключение пользователей, регулярное копирование файлов и т.д. При этом на него не распространяются ограничения на используемые ресурсы.
После входа пользователя в систему для него запускается один из командных интерпретаторов. Общее название любого командного интерпретатора ОС UNIX – shell (оболочка), поскольку любой интерпретатор представляет внешнее окружение ядра системы. Оболочка – программа, создаваемая для упрощения работы со сложными программными системами. Оболочки преобразуют неудобный командный пользовательский интерфейс в дружественный графический интерфейс или интерфейс типа меню. Обычно оболочка реализуется в виде отдельной программы.
Вызванный командный интерпретатор выдаёт приглашение на ввод пользователем командной строки, которая может содержать простую команду, конвейер команд или последовательность команд. Так будет до тех пор, пока пользователь не завершит сеанс работы путём ввода команды “logout” или нажатия комбинации клавиш “Ctrl-d”.
UNIX первая в истории мобильная ОС, обеспечивающая надёжную среду разработки и использования мобильных прикладных систем. Она представляет и практическую основу для построения открытых программно-аппаратных систем и комплексов. Для производства основанных на этой ОС совместимых ОС необходима стандартизация (интерфейсов) средств ОС на разных уровнях. Одним из ранних стандартов де-факто ОС UNIX явился изданный UNIX System Laboratories (USL) документ System V Interface Definition (SVID). Это не единственный стандарт для ОС UNIX.
Контроль и управление сетью с UNIX-подобной ОС представляют сложную проблему, в решении которой выделяют два основных направления:
- сохранение административной управляемости;
- сохранение технической управляемости.
Административные проблемы обычно связывают с распределением сетевых ресурсов между различными подразделениями и пользователями, координацией их действий в процессе функционирования и развития сети. Ключевым вопросом является способ хранения в системе UNIX указаний о владельце и привилегиях, связанных с файлом. Обычно процесс, запущённый пользователем, имеет привилегии на доступ, принадлежащие этому пользователю. Однако есть системные команды доступа к файлам, к которым администраторы не хотят разрешать доступ пользователя. Администратор ведает всеми вопросами безопасности. Он должен вести постоянное наблюдение (в т.ч. упреждающее администрирование) за изменениями в системе и уметь противодействовать вмешательствам. Основная идея упреждающего администрирования сводится к тому, чтобы, проанализировав поведение АИС или отдельных её компонентов, предпринять превентивные меры, позволяющие не допустить развития событий по наихудшему сценарию. Системные администраторы должны проверять свои системы и смотреть на них с точки зрения нарушителя. Так, для предотвращения возможностей взлома системы, в первую очередь, нельзя оставлять без присмотра суперпользовательский терминал.
Создавать коммерческий UNIX большая и трудоёмкая работа. Часто для этого требуются сотни и даже тысячи программистов, специалистов по тестированию, писателей документации, административного персонала. В фирмах, разрабатывающих коммерческие UNIX, вся система создаётся под жёстким контролем качества. Существует система управления написанием программ, внесением изменений, документированием, информированием о выявленных ошибках и их устранением. Разработчикам запрещено по собственному желанию добавлять какие-либо свойства или менять критически важные коды. Они могут вносить изменения только, как реакцию на выявленные ошибки, документировать вносимые изменения так, чтобы можно было систему при необходимости “вернуть назад”. Каждый разработчик закреплён за одной или несколькими частями системного кода, и только он имеет право исправлять замеченные ошибки. Внутри фирм департаменты контроля качества осуществляют жёсткое тестирование любой новой версии ОС. Разработчики обязаны под контролем устранять выявленные ошибки. Существует сложная система статистического анализа, определяющая, сколько ошибок должно быть устранено, чтобы объявить переход к новой версии.
24 Администрирование в среде UNIX/LINUX проектируемой системы обработки данных
После того как физическая сеть и ИС собраны, администратор должен собственноручно назначить на каждой машине адреса интерфейсам. Обычно это делается с консоли того компьютера, который настраивается для работы в сети. Существует возможность динамической настройки с одного рабочего места всех машин сети. Однако, кроме явных преимуществ, к такого подхода есть срытые недостатки. Главный из них – это учёт статистики работы с каждой из машин системы. При динамическом назначении адресов машина может в разное время получать разные адреса, что не позволяет по адресу проидентифицировать машину. Многие же системы анализа трафика основываются на том, что соответствие между адресом и компьютером неизменно. Именно на этом принципе построены многие системы защиты от несанкционированного доступа.
Другой причиной, заставляющей жёстко назначать адреса компьютерам сети, является необходимость организации информационных сервисов на серверах сети. TCP/IP не имеет механизма оповещения рабочих мест о месте нахождения сервиса. Широковещание вообще не очень распространено в сетях TCP/IP, в отличие от сетей Novell или Microsoft. Каждый хост знает о наличии того или иного сервиса из файла своей настройки (например, указываются шлюз в другие сети или сервер доменных имен), или из файлов настроек прикладного ПО. Так, например, сервер WWW не посылает никакого широковещательного сообщения о том, что он установлен на данном компьютере в данной сети. Преимущество такого подхода заключается в низком трафике, порождаемом сетью TCP/IP. Этот трафик иногда значительно отличается, например, от трафика Novell. Кроме этого практически любое оборудование позволяет фильтровать трафик TCP/IP, что сильно облегчает сегментацию сети и делает её легко структурируемой. Для монтирования удалённой файловой системы нет необходимости в использовать межсетевой протокол для доставки протоколов локальной сети, так как стек TCP/IP сам реализует этот межсетевой обмен.
В рамках организации сети TCP/IP уделяется внимание организации удалённых рабочих мест программистов и других сотрудников, использующих электронную связь для оперативного обмена информацией, доступа к информационным ресурсам, обмена электронной почтой и др. Организовать такие рабочие места в рамках сетей TCP/IP можно без особых проблем.
Подключение локальной сети TCP/IP к Интернет осуществляется через местного провайдера. Обычно это та же организация, у которой был получен блок адресов для локальной сети.
Дата добавления: 2021-09-25; просмотров: 331;