Выражения в квадратных скобках



Правила построения выражений в квадратных скобках не отличаются от BRE.

ERE соответствующие нескольким символам

Следующие правила используются при построении ERE соответствующих нескольким сим-волам:

1. Объединение ERE соответствует объединению последовательностей символов соответству­ющих каждой компоненте ERE. Объединение ERE заключенное в круглые скобки соответ­ствует тому же, чему и без круглых скобок.

2. Когда за ERE соответствующим одному символу или ERE заключенным в фигурные скобки следует знак +, то такое выражение соответствует одному или большему числу последова­тельных включений соответствующих данному ERE.

3. Когда за ERE соответствующим одному символу или ERE заключенным в фигурные скобки следует знак *, то такое выражение соответствует нулю или большему числу последова­тельных включений соответствующих данному ERE.

4. Когда за ERE соответствующим одному символу или ERE заключенным в фигурные скобки следует знак ?, то такое выражение соответствует нулю или одному включению соответ­ствующему данному ERE.

5. Когда за ERE соответствующим одному символу или ERE заключенным в фигурные скобки следует интервальное выражение вида {т}, {т,} или {т,п}, то такое выражение соот­ветствует определенному интервальным выражением числу последовательных включений соответствующих данному ERE.

Альтернативные ERE

Два ERE разделенные символом вертикальной черты (|) соответствуют строке, соответствующей одному из данных ERE.

Приоритеты ERE

[= =] [: :] [• •] \<special character>

[ ]

( )

* + ? {m,n}

л $

I

Привязки ERE

ERE могут быть привязаны к началу и концу строки. Для привязки используются символы Ли $.

1. Знак л, за пределами выражения в квадратных скобках, привязывает начинающееся с него выражение или подвыражение к началу строки.

2. Знак $, за пределами выражения в квадратных скобках, привязывает заканчивающееся им ERE к концу строки.

Утилита grep

Формат командной строки:

grep [-Ecinlv] [-е шаблоны...] [-f файл_шаблонов ]... файл...

Производит поиск в указанных файлах или во входном потоке, отбирая строки в которых име­ется соответствие одному или более из указанных шаблонов. Аргумент шаблоны является спис­ком регулярных выражений разделенных символами новой строки. Аргумент файл_шаблонов определяет файл содержащий список шаблонов. Значения прочих параметров следующие:

-E   использовать расширенные регулярные выражения

-c   вывести только количество строк удовлетворяющих условию

-i   не различать регистр символов

-n   предварить каждую выводимую строку ее номером в файле

-l   вывести только имена файлов содержащих строки удовлетворяющие условию

-v   вывести строки не удовлетворяющие ни одному из шаблонов

Потоковый редактор sed

Формат командной строки:

sed [-n] сценарий [ файл ...]

sed [-n] [-e сценарий ]... [ -f файл_сценария ]... [ файл ...]

Sed — потоковый редактор считывающий строки из текстовых файлов или со стандартного ввода, изменяющий их, в зависимости от команд редактирования указанных в параметре сце­нарий или в файле файл_сценария и выводящий результат на стандартный вывод. Ключ -n подавляет вывод всех строк файла (производимый по умолчанию). Каждый сценарий (параметр сценарий) состоит из команд редактирования (по одной в строке) следующего вида:

[адрес![,адрес3]]команда[аргументы]

допускаются пробельные символы перед первым адресом и перед командой. В нормальном режиме sed циклически копирует входную строку в рабочую область (в случае, если там ничего не осталось от предыдущей команды), применяет к ней последовательно все команды сценария, чьи адресные выражения содержат данную строку, выводит результат на стандартный вывод (если не указан ключ -n) и очищает рабочую область. Некоторые команды используют область сохранения, чтобы запомнить всю рабочую область или ее часть для последующего использова­ния. Рабочая область и область сохранения способны хранить не менее 8192 байт. Адрес либо пустое поле, либо десятичное число, означающее номер входной строки, либо знак доллара ($ ), соответствующий последней строке, либо контекстный адрес (который состоит из регулярного выражения предваренного и заканчивающегося некоторым ограничителем, обычно косой чертой. Командная строка не содержащая адреса применяется к каждой строке. Командная строка со­держащая один адрес применяется к каждой строке соответствующей адресу. Командная строка содержащая два адреса применяется ко всем строкам начиная с соответствущей первому адре­су и заканчивая соответствующей второму. Начиная с первой строки, следующей за указанным диапазоном sed снова проверяет строки на соответствие первому адресу и, в случае нахождения соответствия, процесс повторяется.

Команды могут применяться к строкам не входящим в диапазон при помощи команды отри­цания !.

Sed поддерживает базовые регулярные выражения со следующими дополнениями:

• В контекстных адресах, конструкция cREc, где c любой символ, отличный от обратной косой черты и символа новой строки, идентична /RE/.

Последовательность \n соответствует символу новой строки.

В следующем списке команд, максимальное число адресов для команды определено после­довательностями [0addr], [1addr] и [2addr]. Аргумент text состоит из одной или более строк. Каждый символ новой строки должен быть предварен обратной косой чертой. Прочие символы новой строки удаляются.

[2addr]command-list

Выполнять command-list, для указанных строк.

[1addr]a\text

Вывести текст перед обработкой указанной строки.

[2addr]b [метка]

Перейти к команде :, содержащей указанную метку. Если метка пуста, перейти в конец сценария.

[2addr ]c\text

Удалить рабочую область. При пустом или одном адресе или в конце двухадресного диапазона вывести текст.

[2addr]d

Удалить рабочую область.

[2addr]D

Удалить начало рабочей области, до первого перевода строки включительно.

[2addr]g

Заменить содержимое рабочей области содержимым области сохранения.

[2addr]G

Добавить к содержимому рабочей области символ новой строки с последующим содер­жимым области сохранения.

[2addr]h

Заменить содержимое области сохранения содержимым рабочей области.

[2addr]H

Добавить к содержимому области сохранения содержимое рабочей области.

[1addr]i\text

Вывести текст.

[2addr]l

Вывести содержимое рабочей области, заменяя символы табуляции, перевода строки, обратной косой черты и т.п. на пары символов \,\a ,\b ,\f ,\r ,\t ,\v. Прочие непечатные символы заменяются трехзначными восьмеричными числами предваренными обратной косой чертой.

[2addr]n

Вывести содержимое рабочей области на стандартный вывод и считать в рабочую об­ласть следующую входную строку.

[2addr]N

Добавить к содержимому рабочей области следующую входную строку. При этом из­меняется текущий номер строки.

[2addr]p

Вывести рабочую область на стандартный вывод.

[2addr]P

Вывести начало рабочей области, до первого символа новой строки на стандартный вывод.

[1addr]q

Перейти в конец сценария и выйти.

 [2addr]r rfile

Скопировать содержимое файла rfile на стандартный вывод до обработки следующей входной строки.

[2addr]s/reg-exp/replacement/flags

Подставить replacement вместо подстрок рабочей области, соответствующих регулярно­му выражению reg-exp. Вместо косой черты можно использовать любой другой символ. Символ амперсенда & в replacement будет заменен строкой, соответствующей регуляр­ному выражению. Символы \n, где n цифра, будут заменены соответствующей обратной ссылкой. Могут использоваться следующие флаги:

n Заменять n-ое вхождение регулярного выражения.

g Заменить все вхождения регулярного выражения.

p Выводить содержимое рабочей области если произведена замена.

w wfile

Добавить содержимое рабочей области в файл wfile если произведена замена.

[2addr]t [label]

Перейти к команде :, содержащей метку label, если с момента последнего чтения входной строки или последнего выполнения команды t в буфере выполнялись подстановки. Если метка опущена, перейти в конец сценария.

[2addr]w wfile

Добавить содержимое рабочей области к файлу wfile.

[2addr]x

Обменять содержимое рабочей области и области сохранения.

[2addr]y/string1/string2/

Заменить все включения символов содержащихся в строке string1 соответствующими символами строки string2. Строка string1 не должна содержать повторяющиеся симво­лы, длины строк должны совпадать.

[2addr]!command

Применить команду только к тем строкам, которые не принадлежат указанным адресам.

[0addr]: label

Команда ничего не делает. Содержит метку, на которую можно перейти командами b и t.

[1addr]=

Выводит номер текущей строки.

[0addr]

Пустая команда.

[0addr]#

Символ # и остальные, до конца строки, игнорируются (комментарий).

Практическое задание

1. Скопируйте в домашний каталог файл /home/labs/text.txt

2. Выведите в файл отчета все строки файла text.txt содержащие слово "Благозвон". До­бавьте к файлу отчета количество найденных строк.

3. Добавьте к файлу отчета все строки файла text.txt, которые начинаются с буквы "Б" (возможно после нескольких пробелов).

4. Добавьте к файлу отчета все непустые строки файла text.txt, не содержащие русскую букву "а" (в любом регистре).

5. Добавьте в файл отчета имена файлов каталога /home/labs, которые содержат слово "include".

6. Используя редактор sed замените в файле text.txt все слова Снарк на СНАРК. Результат сохраните в файле snark.txt.

7. Проанализируйте сценарий /home/labs/sed1.sh и формат файла /home/labs/rfc-index.txt. Запустите сценарий несколько раз указывая в качестве аргумента целое число от 1 до 3000.

8. При помощи sed выведите из файла /etc/passwd идентификаторы пользователей и их имена, разделенные символом табуляции, в формате:

 

0 root

1 daemon

2 operator ...

Вывод должен быть отсортирован по идентификатору пользователя. Результат добавьте к файлу отчета.

9. Напишите сценарий для sed, который будет менять местами каждые две строки файла.
Возможно sed прийдется запускать с ключом -n.

10. Если Вам не удалось выполнить предыдущее задание, обратите внимание на файл /home/labs/rev.sed.

11. Напишите сценарий для редактора sed, который будет добавлять:

 

(a) В начало файла строку "<html><body>".

(b) В начало всех строк начинающихся словом "Приступ" строку "<H2>", а в конец строку "</H2>".

(c) В конец всех остальных строк "<br>".

(d) К концу последней строки "</body></html>"

Результат работы сценария сохраните в файле snark.html в каталоге public_html домашнего каталога (каталог потребуется создать). Сценарий сохраните под именем sed1 в домашнем каталоге.

 

Лабораторная работа № 10 Использование пакета OpenSSH

Генерация RSA ключа

Для генерации ключа используется утилита ssh-keygen. По умолчанию утилита гене­рирует RSA ключ. При указании аргумента -d генерируется DSA ключ. Секретный ключ защищается паролем и сохраняется в файле .ssh/identity, открытый ключ сохраняет­ся в файле .ssh/identity.pub. Открытый ключ необходимо, затем, скопировать в файл .ssh/authorized_keys в домашнем каталоге пользователя на удаленной машине (т.е. на той машине, на которую пользователь собирается заходить с других компьютеров).

 

Задание 1:    Сген ерируйте RSA

ключ, скопируйте

файл .ssh/ identi ty .pub в файл

.ssh/authorized

_keys (Поскольку у Вас

один и тот же домашний

каталог на всех

машинах,

то данная операция

аналогична копированию

файла на удален

ную машину).

       
                       

Вход на удаленную машину

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

ssh [-l имя_пользователя] [хост|пользоатель@хост] [команда]

Если имя пользователя не указано, то используется имя пользователя запустившего про­грамму ssh. Если не указана команда, то запускается командный интерпретатор пользователя, указанный в файле /etc/passwd.

Задание 2:Зайдите на любую другую машину при помощи команды ssh.

Использование ssh-agent

Программа ssh каждый раз запрашивает пароль пользователя, которым защищен секретный ключ. Для того, чтобы пароль не запрашивался постоянно, а сохранялся в памяти для после­дующего использования, служит программа ssh-agent. Программа создает локальный сокет UNIX и сообщает его другим приложениям при помощи переменных окружения. Режим доступа к сокету устанавливается таким образом, что чтение данных из сокета может производить только создавший его пользователь1. Синтаксис программы:

ssh-agent [-k] [комада]

Программа создает сокет, устанавливает переменные окружения и порождает процесс определен­ный командой. Этот процесс и его дочерние процессы наследуют переменные окружения указы­вающие на созданный сокет и на номер процесса ssh-agent. Для использования ssh-agent в текущем процессе можно выполнить команду:

eval ‘ssh-agent‘

Ключ -k используется для завершения программы ssh-agent.

Для добавления ключей в хранилище ssh-agent используется команда ssh-add:

ssh-add [-ld] [file...]

Команда читает указанный файл, содержащий секретный ключ пользователя, запрашивает у пользователя пароль к ключу и передает ключ программе ssh-agent. Если файл ключа не указан, то программа использует файл .ssh/identity. Если в командной строке указан

________________________________________

1Данное ограничение не действует на пользователя root

 

аргумент -l, то команда ssh-add выводит список ключей. Если указан аргумент -d, то команда удаляет ключ из хранилища ssh-agent.

Задание 3:Запустите программу ssh-agent при помощи команды eval ‘ssh-agent‘, добавьте в хранилище свой ключ. Зайдите при помощи программы ssh на другой компьютер.

Удаленный запуск программ

При запуске программы на другом компьютере программа ssh перенаправляет стандартные ввод и вывод программы на локальный компьютер. Это делает возможным включение команд запускаемых на удаленной машине в конвейеры выполняемые на локальной машине. Например:

ssh it-1 cat /var/log/messages | grep sshd | \ ssh cat >/tmp/ttt

Задание 4:Выполните команду ls /etc на компьютере nix, отсортируйте результат на любом другом компьютере и сохраните результат в файле отчета.


Дата добавления: 2018-04-05; просмотров: 318; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!