Авторизация



Написание сценариев и программ оболочек

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

Оценить
(0 голоса)
Простейшим условным выражением в командном процессоре Bourne является двойной амперсанд (&&). Если две команды разделяются двойным амперсандом, то вторая команда выполняется только в том случае, когда первая возвращает нулевой код завершения (свидетельство успешного выполнения команды). Далее приведен соответствующий пример: Is -Id /usr/bin > /dev/null && echo "Directory Found" Если каталог /usr/bin существует, то на экране отображается сообщение Directory Found (каталог найден). Противоположностью по отношению к двойному амперсанду является двойная вертикальная черта (||).Если две команды разделяются двойной вертикальной чертой, то вторая команда выполняется только в том случае, когда первая возвращает ненулевой код завершения (свидетельство аварийного завершения команды). Далее приведен соответствующий пример:…
Оценить
(0 голоса)
В командном процессоре Bourne имеются специальные программы true и false. Единственной функцией программы true является возвращение логического значения true (истина - нулевое значение) для кода завершения, или статуса выхода. Аналогично, функцией программы false является возвращение логического значения false (ложь - ненулевое значение) для статуса выхода. Ниже приведен соответствующий пример: True && echo True Система отвечает словом True. А теперь другой пример: False || echo False Система отвечает словом False. Проверки истинности и ложности будут рассмотрены позднее при обсуждении условных выражений if и while. Условные выражения && и || удобны при создании простых сценариев, однако иногда требуется дополнительная функциональность. Для таких…
Оценить
(0 голоса)
В предыдущем примере использовалась встроенная команда if test |-f /tmp/errlog] для оценки условного выражения. Сердце любой управляющей конструкции - это проверка некоторого условия. В программах оболочки команда test обычно применяется для выполнения различных проверок и для определения, существует ли конкретный файл или каталог. Программа test выполняет три типа проверок: Она может проверять файлы на предмет конкретных характеристик, таких как тип файла и полномочия доступа к нему. Она может выполнять сравнение строк. Она может проводить сравнение чисел. Программа test отражает успех или неудачу проведенной ею проверки с помощью кода завершения (статуса выхода). Программа test оценивает некоторое выражение и, если результатом оценки…
Оценить
(0 голоса)
Цикл while постоянно повторяет совокупность команд до тех пор, пока выполняется некоторое условие. Синтаксис цикла while выглядит следующим образом: while condition-list do commands done Прежде всего выполняется condition-list. Если он возвращает статус выхода true, тогда выполняется список команд do, и все начинается сначала. Если же список condition-list возвращает статус выхода false, то выполнение условной конструкции завершается. Приведенный далее пример демонстрирует, как работает цикл while. Данная программа проверяет, существует ли файл /tmp/errlog. Если указанный файл не существует, то программа выходит из цикла. Если же этот файл существует, то программа выводит на печать некоторое сообщение и выполняется повторно через каждые пять секунд…
Оценить
(1 голос)
Любой хороший язык программирования предоставляет поддержку функций. Функция - это связка операторов, которая выполняется как группа. Такие связки выполняются точно также, как и "обычная" команда, и используются для выполнения часто повторяю щихся задач. Преимуществом функции является то, что она держится в основной памяти компьютера, поэтому выполняется значительно быстрее, чем сценарий, который должен быть загружен с диска. Текущая версия командного процессора Bourne поддерживает функции; в более старых его версиях такая поддержка отсутствовала. Синтаксис функций командного процессора выглядит следующим образом: name () ( command-list ) Приведенный выше пример командного синтаксиса определяет функцию, имеющую имя name. Телом данной функции является список команд command-list,…
Оценить
(0 голоса)
Создание ваших собственных команд с помощью сценариев и программ оболочек представляет собой мощный и гибкий инструмент, помогающий выполнять задачи системного администрирования. Прежде всего, необходимо выбрать тот командный процессор, использование которого для вас наиболее удобно. Свой выбор вы можете сделать между оболочками Bourne, bash, С, tcsh или Korn. При этом, однако, важно отметить, что многие системные администраторы выбирают командный процессор Bourne, поскольку он широко распространен и доступен. В настоящей главе были описаны переменные командного процессора. В качестве системного администратора вам предстоит регулярно устанавливать и использовать такие переменные. Большинство применяемых вами программ Solaris и сторонних разработчиков будут ориентироваться на эти переменные. Если…
Оценить
(0 голоса)
•    Сценарий оболочки, или командного процессора •    Исполнительный бит •    Ограниченная версия командного процессора •    J-оболочка •    Командный процессор С •    Командный процессор Korn •    Командный процессор Bourne •    Переменная командного процессора •    Взятие в кавычки •    Встроенные команды оболочки •    Условные выражения командного процессора •    Статус выхода •    Цикл •    Функция оболочки
Оценить
(0 голоса)
При выполнении настоящего упражнения вам предстоит отображать на экране и устанавливать переменные командного процессора Bourne. Оцениваемое время: 10 минут 1.   Убедитесь, что вы находитесь в среде командного процессора Bourne, для чего введите команду /sbin/sh. Проверьте, что вы находитесь в среде командного процессора Bourne, для чего отобразите значение переменной $SHELL: echo $SHELL 2.   Выведите на печать значения переменных окружения вашей среды: env 3.   Выведите на печать значения локальных переменных вашей среды: set 4.   Перейдите в ваш исходный каталог: cd $НОМЕ
Оценить
(0 голоса)
Напишите сценарий командного процессора Bourne по имени searchl, предлагающий пользователю ввести некоторую строку, поиск которой будет выполняться во всех файлах пользовательского каталога. Выведите на экран имена всех файлов, которые содержат данную строку. Оцениваемое время: 15 минут 1.   Находясь в собственном каталоге, воспользуйтесь редактором vi для создания текстового файла с именем searchl, который должен включать в себя следующие элементы: #!/bin/sh echo "Please enter a string to search for: '' read string echo The following files contain the string $string: grep -1 $string * 2.   Установите полномочия исполнения для данного файла: chmod 744 searchl 3.   Выполните вновь созданный файл следующим образом: ./searchl…
Оценить
(0 голоса)
Приведенное далее упражнение демонстрирует, как использовать в сценарии условное выражение case. Данный сценарий будет выводить на экран список опций, из которых пользователь будет делать свой выбор. В зависимости от выбранной опции будет выполняться конкретная команда. Оцениваемое время: 15 минут 1.   Находясь в собственном исходном каталоге, воспользуйтесь vi для создания текстового файла с именем options, который должен включать в себя следующие элементы: #!/bin/sh echo Please enter the letter next to the \ command that you want to select: echo 'a date' echo 'b Is' echo ’с who' read choice case $choice in a)   date;; b)   Is;; c)   who; ; *) echo…