OS_LR1_2_3_4_5 (Задания к лабораторным работам), страница 2

2016-04-06СтудИзба

Описание файла

Файл "OS_LR1_2_3_4_5" внутри архива находится в папке "Задания к лабораторным работам". Документ из архива "Задания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "операционные системы" из 8 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "операционные системы" в общих файлах.

Онлайн просмотр документа "OS_LR1_2_3_4_5"

Текст 2 страницы из документа "OS_LR1_2_3_4_5"



Пара шаблон-действие имеет вид:

шаблон { действие }

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

Как уже упоминалось, шаблоны представляют собой произвольные логические комбинации (с использованием !, ||, && и круглых скобок) относительных выражений и расширенных регулярных выражений. Относительным называется любое из следующих выражений:

выражение оператор_отношения выражение

выражение оператор_сопоставления регулярное_выражение

выражение in имя_массива

(выражение, выражение, ... ) in имя_массива



где оператор_отношения представляет собой один из шести операторов отношения в языке C, а оператор_сопоставления - это либо ~ (содержит), либо !~ (не содержит). Выражением может быть арифметическое выражение, относительное выражение, специальное выражение переменная in массив или их логическая комбинация.

В шаблонах расширенные регулярные выражения необходимо заключать в косые черты (/). Отдельное регулярное выражение в шаблоне применяется ко всей строке. Расширенные регулярные выражения могут также использоваться в относительных выражениях. Шаблон может состоять из двух шаблонов через запятую; в этом случае действие выполняется для всех строк между соответствующей первому шаблону и следующей соответствующей второму шаблону.

Специальные шаблоны BEGIN и END можно использовать для получения управления перед чтением первой входной строки и после прочтения последней входной строки, соответственно. Эти ключевые слова нельзя сочетать с другими шаблонами.

Для задания разделителя полей можно использовать расширенное регулярное выражение, используя опцию -F разделитель или присваивая выражение встроенной переменной FS. По умолчанию, начальные пробелы в строках игнорируются, а поля разделяются произвольным количеством пробелов и/или символов табуляции.

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

Имеются и другие встроенные переменные:ARGC количество аргументов командной строки

ARGV массив аргументов командной строки

ENVIRON массив переменных среды; в качестве индексов используются имена переменных

FILENAME имя текущего входного файла

FNR порядковый номер текущей записи в текущем файле

FS регулярное выражение, задающее разделитель входных полей (по умолчанию - пробелы и символы табуляции)

NF количество полей в текущей записи

NR порядковый номер текущей записи

OFMT выходной формат для чисел (по умолчанию - %.6g)

OFS разделитель выходных полей (по умолчанию - пробел)

ORS разделитель выходных записей (по умолчанию - новая строка)

RS разделитель входных записей (по умолчанию - новая строка)

SUBSEP разделитель нескольких индексов (по умолчанию - символ с кодом 034)



Разделители, задаваемые с помощью опции -F или переменных OFS, ORS и FS, могут содержать символы дополнительного набора. Действие представляет собой последовательность операторов. Имеются следующие операторы:

if ( выражение ) оператор [else оператор]

while ( выражение ) оператор

do оператор while ( выражение )

for ( выражение ; выражение ; выражение ) оператор

for ( переменная in массив ) оператор

delete массив[индекс] # удаление элемента массива

break

continue

{ [оператор] ... }

выражение # обычно, переменная = выражение

print [список_выражений] [>выражение]

printf формат [, список_выражений] [>выражение]

next # пропустить оставшиеся шаблоны для этой строкиexit [выражение] # пропустить остальные входные

# строки; выражение задает

# код возврата



return [выражение]

Операторы заканчиваются точкой с запятой, новой строкой или закрывающей фигурной скобкой. Пустой список_выражений означает всю входную строку. Выражения будут иметь строковые или числовые значения, в зависимости от строения, и строятся с использованием операторов +, -, *, /, %, ^ и конкатенации (выполняемой при записи подряд). В выражениях также можно использовать операторы ++, --, +=, -=, *=, /=, %=, ^=, >, >=, <, <=, ==, !=, ?:. Переменные могут быть скалярами, элементами массивов (записывается как x[i]) или полями. Переменные инициализируются пустыми строками или нулями. Индексами массивов могут быть любые строки, не обязательно только числовые; это позволяет реализовать ассоциативную память. Допускается использование нескольких индексов, например [i,j,k]; составные элементы конкатенируются, разделяясь значением встроенной переменной SUBSEP. Строковые константы берутся в двойные кавычки (""), причем в них распознаются стандартные управляющие символы языка C.



Оператор print выдает аргументы в стандартный выходной поток или в файл, если указано >выражение, или по конвейеру, если указано |команда. Аргументы разделяются текущим разделителем выходных полей и завершаются разделителем выходных записей. Оператор printf форматирует свой список_выражений в соответствии с указанным форматом (см. fprintf(3S)). Встроенная функция close(выражение) закрывает указанный файл или поток, задаваемый выражением.



Математические функции atan2, cos, exp, log, sin, sqrt являются встроенными.



Другие встроенные функции включают:gsub(for, repl, in) работает аналогично sub (см. ниже), но заменяет последовательные вхождения регулярного выражения (как команда глобальной подстановки в ed).

index(s, t) возвращает позицию первого вхождения строки t в строке s, или 0, если такой подстроки в s нет.

int усекает до целого значения.

length(s) возвращает длину в байтах аргумента, рассматриваемого как строка, или длину входной строки, если аргумент не указан.

match(s, re) возвращает позицию вхождения регулярного выражения re в строке s, или 0, если такого выражения в строке нет. Переменная RSTART устанавливается в начальную позицию соответствующей подстроки (которая совпадает с возвращаемым значением), а переменная RLENGTH устанавливается равной длине соответствующей подстроки.

rand случайное число в диапазоне (0, 1).

split(s, a, fs) разбивает строку s на массив элементов a[1], a[2],... a[n] и возвращает их количество - n. В качестве разделителя используется регулярное выражение fs или разделитель полей FS, если аргумент fs не задан.

srand устанавливает базовое значение (seed) для функции rand

sprintf(fmt, expr, expr,...) форматирует выражения в соответствии с форматом fprintf(3S), задаваемым аргументом fmt, и возвращает получившуюся в результате строку.

sub(for, repl, in) подставляет строку repl вместо первого вхождения регулярного выражения for в строку in и возвращает количество подстановок. Если строка in не указана, awk выполняет подстановки в текущей записи ($0).

substr(s, m, n) возвращает n-символьную подстроку строки s, начиная с позиции m.

Поддерживаются также следующие встроенные функции ввода/вывода:

close(имя_файла)

закрывает файл или поток с именем имя_файла.

cmd | getline

направляет выходной поток команды cmd функции getline; каждый последующий вызов getline возвращает следующую строку из выходного потока cmd.

getline

устанавливает $0 в следующую входную запись из текущего входного файла.

getline <файл

устанавливает $0 в следующую запись из файла.

getline x

устанавливает значение переменной x.

getline x <файл

устанавливает x значение следующей записи из файла.

system(команда)

выполняет команду и возвращает ее код возврата.



Все формы функции getline возвращают 1 в случае успешного чтения, 0 - в случае конца файла и -1 в случае ошибки.



awk также позволяет создавать функции, определяемые пользователем. Такие функции можно определять (в позиции шаблона пары шаблон-действие) следующим образом

function имя(аргументы,...) { операторы }

или

func имя(аргументы,...) { операторы }

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



ПРИМЕРЫ

Выдать строки длиннее 72 символов:

length > 72

Выдать первые два поля в обратном порядке:

{ print $2, $1 }

То же, но входные поля разделены запятой и/или пробелами и символами табуляции:

BEGIN { FS = ",[ \t]*|[ \t]+" }

{ print $2, $1 }

Просуммировать первый столбец, выдать сумму и среднее значение:

{ s += $1 }

END { print "sum is", s, " average is", s/NR }

Выдать поля в обратном порядке:

{ for (i = NF; i > 0; --i) print $i }

Выдать все строки между парами шаблонов start/stop:

/start/, /stop/

Выдать все строки, первое поле в которых отличается от первого поля предыдущей строки:

$1 != prev { print; prev = $1 }

Имитировать команду echo(1):

BEGIN {

for (i = 1; i < ARGC; i++)

printf "%s", ARGV[i]

printf "\n"

exit

}

Выдать файл, заполняя номера страниц, начиная с 5:

/Page/ { $2 = n++; }

{ print }

Если эта программа находится в файле по имени prog, следующая команда распечатает файл input, пронумеровав его страницы начиная с 5:

awk -f prog n=5 input.



  1. Разработка ПО

Полнофункциональной оболочки для программирования на языках в данной версии ОС не установлено. Для ввода программного кода используются редакторы vi, emac, встроенный редактор mc.

Компилятором для ЯВУ Си является программа gcc. В простейшем случае( в рамках лабораторной работы) для компиляции программы достаточно набрать.

gcc

Выходной исполняемый файл будет называться a.out.

Не забывайте, что для запуска программы из текущей директории надо набирать ./a.out





  1. Задание

Создать файл-сценарий «убивающий» ранее запущенный процесс.

1. Ввести программу в файл:

main() {for(;;);}

2. Скомпилировать программу компилятором gcc.

3. Используя команды grep и awk написать сценарий, «убивающий» процесс a.out.

4. Запустить программу в фоновом режиме или с параллельного терминала.

5. Запустить файл-сценарий, убивающий процесс.

6. Убедиться, что процесс завершен.





Лабораторная работа N3

Цель работы: закрепление материала

Выполнение работы

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

Другие необходимые подсказки, пояснения и примеры программ к этой работе вы найдете в ЛР 1 и 2.



  1. Задание



a. Создать файл-сценарий реализующий сохранение текущего состояния системы, а именно:

- список запущенных процессов

- список загруженных модулей

- список файлов в каталогах /bin, /sbin, /

- содержимое файла /etc/inittab



b. Создать файл-сценарий реализующий восстановление состояния системы, а именно:

- при обнаружении нового процесса следует послать сигнал о завершении

- при обнаружении нового модуля его следует выгрузить

- при обнаружении новых файлов в каталоге /bin, /sbin, / их следует удалить

- при изменении файла inittab его следует переписать



с. Создать файл-сценарий эмулирующий действия деструктивных программ:

- запустить программу в фоновом режиме

- переписать эту программу в каталоги /bin, /sbin, /

- удалить файл /etc/inittab





Лабораторная работа N4

Цель работы: усвоение основ работы с сетевыми протоколами верхнего уровня.

Выполнение работы

Компьютерная сеть (вычислительная сеть, сеть передачи данных) — система связи двух или более компьютеров и/или компьютерного оборудования (серверы, маршрутизаторы и другое оборудование).

Данные от компьютера к компьютеру передаются по протоколам – набор правил, форматов, структур данных. Минимальная единица передачи данных – пакет. Существующее множество протоколов делится по уровням. Самый низкий уровень обрабатывается аппаратурой, поддерживающий сеть (Ethernet, RS-232). Самый высокий – обеспечивает интерфейс с пользователем (Telnet, FTP, SSH). Протоколы различных уровней «набиваются» друг в друга как матрешки, обеспечивая надежность доставки пакета и понятный интерфейс.

Каждый компьютер в сети имеет свой адрес на уровне протоколов Ehternet – МАС адрес, IP – IP адрес. На программном уровне, обычно, оперируют IP адресом.

IP адрес состоит из 4 байтов. Для удобства байты переведены в десятичную систему и разделены точками.

127.0.0.1—127.255.255.255 — зарезервированный диапазон IP-адресов для обозначения т. н. «локального хоста», то есть для сети, состоящей из только одного компьютера. Как правило, используется всего один адрес — 127.0.0.1, который устанавливается на специальный сетевой интерфейс «внутренней петли» («loopback») в сетевом протоколе TCP/IP. В Unix-подобных системах данный интерфейс обычно именуется «loX», где X — число, либо просто «lo». При установке соединений в этой вырожденной «сети» присутствует только один компьютер, при этом сетевые протоколы выполняют функции протоколов межпроцессного взаимодействия.

Использование адреса 127.0.0.1 позволяет устанавливать соединение и передавать информацию для программ-серверов, работающим на том же компьютере, что и программа-клиент, независимо от конфигурации аппаратных сетевых средств компьютера (не требуется сетевая карта, модем, и прочее коммуникационнное оборудование, интерфейс реализуется при помощи драйвера псевдоустройства в ядре операционной системы). Таким образом, для работы клиент-серверных приложений на одном компьютере не требуется изобретать дополнительные протоколы и дописывать программные модули.

  1. ifconfig

Команда ifconfig используется для конфигурирования сетевых интерфейсов ядра. Она используется на этапе загрузки для настройки интерфейсов при необходимости. После этого она обычно используется только при отладке или настройке производительности системы. Если аргументы не переданы, ifconfig выдает информацию о состоянии активных интерфейсов. Если указан один аргумент интерфейс, выдается информация только о состоянии этого интерфейса; если указан один аргумент -a, выдается информация о состоянии всех интерфейсов, даже отключенных. Иначе команда конфигурирует указанный интерфейс. Полное описание параметров команды можно посмотреть набрав man ifconfig





  1. FTP

FTP (англ. File Transfer Protocol — протокол передачи файлов) — протокол, предназначенный для передачи файлов в компьютерных сетях. FTP позволяет подключаться к серверам FTP, просматривать содержимое каталогов и загружать файлы с сервера или на сервер; кроме того, возможен режим передачи файлов между серверами.

Работы с удаленным сервером осуществляется с использование команд, описанных в документации.

Для запуска сервера используется команда:

ftpd

Для соединения с сервером используется команда:

ftp :@

  1. Условный оператор

Условные операторы предоставляют возможность решить, выполнять действие или нет; решение принимается при вычислении значения выражения.

Существует большое количество форм условных операторов. Элементарная форма - это

if выражение then оператор

,где 'оператор' выполняется только в том случае, если 'выражение' имеет значение "истина". '21' - "истина".

Существуют другие формы условных операторов, такие как:

if выражение then оператор1 else оператор2.

Здесь 'оператор1' выполняется, если 'выражение'- истина; в противном случае, выполняется 'оператор2'.

Синтаксис:

Элементарная конструкция оператора 'if' в bash выглядит следующим образом:

if [выражение];

then

code if 'выражение' is true.

fi

Пример: элементарный образец условного оператора if .. then

#!/bin/bash

if [ "foo" = "foo" ]; then

echo-выражение вычислилось как истина

fi

Если выражением внутри квадратных скобок является истина, то выполняемый код находится после слова 'then' и перед словом 'fi', которое обозначает конец исполняемого при выполнении условия кода.

Пример: элементарный пример условного оператора if .. then ... else

#!/bin/bash

if [ "foo" = "foo" ]; then

echo-выражение вычислилось как истина

else

echo-выражение вычислилось как ложь

fi

Пример: условные операторы с переменными

#!/bin/bash

T1="foo"

T2="bar"

if [ "$T1" = "$T2" ]; then

echo-выражение вычислилось как истина

else

echo-выражение вычислилось как ложь

fi



  1. Цикл

Цикл for предоставляет возможность выполнять последовательные действия над "словами" в строке.

Цикл while выполняет кусок кода, если тестируемым выражением является истина; и останавливается при условии, если им является ложь (или внутри исполняемого кода встречается явно заданное прерывание цикла).

Пример цикла for

1: #!/bin/bash

2: for i in $( ls ); do

3: echo item: $i

4: done

Во второй строке i представляется в качестве переменной, которая получает различные значения, содержащиеся в $( ls ).

При необходимости третья строка могла бы быть длиннее; или там могло бы находиться несколько строк перед done (4-я строка).

'done' (4-я строка) показывает, что код, в котором используется значение $i, заканчивается и $i получает новое значение.

В Linux имеется программа seq, которая воспринимает в качестве аргументов два числа и выдает последовательность всех чисел, расположенных между заданными. С помощью этой команды можно заставить for в bash работать точно так же, как аналогичный оператор работает в обычных языках программирования. Для этого достаточно записать цикл for следующим образом:

for a in $( seq 1 10 ) ; do

cat file_$a

done

Эта команда выводит на экран содержимое 10-ти файлов: "file_1", ..., "file_10".

#!/bin/bash

for i in `seq 1 10`;

do

echo $i

done

Пример цикла while:

#!/bin/bash

COUNTER=0

while [ $COUNTER -lt 10 ]; do

echo The counter is $COUNTER

let COUNTER=COUNTER+1

done

  1. Задание

a. Создать файл-сценарий настройки и запуска FTP сервера и сетевого интерфейса.

b. Создать текстовый файл с набором паролей - не менее 10.

Пример файла:

rootroot

qwerty

1qazxsw2

useruser

toor

c. Создать файл-сценарий соединяющийся с помощью FTP клиента к FTP серверу, расположенному по адресу 127.0.0.1. В качестве имени пользователя использовать “root”, в качестве пароля – последовательно подставлять слова из текстового файла, созданного в п.2 задания.

В случае удачного соединения файл-сценарий должен выгрузить сам себя в папку ftp:#/bin и загрузить файл /etc/shadow







Лабораторная работа N5

Цель работы: закрепление основ работы в ОС Linux.

Выполнение работы

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

Для задержки выполнения сценария используйте команду sleep. Для обеспечения цикличности — for. Команда goto «метка» — отсутствует.

Другие необходимые подсказки, пояснения и примеры программ к этой работе вы найдете в ЛР 1, 2 и 4.





1. Задание

a. Создать файл-сценарий настройки и запуска FTP сервера и сетевого интерфейса.

b. Создать файл с Вашей фамилией и произвольным содержанием

с. Создать файл-сценарий с циклической периодичностью соединяющийся с помощью FTP клиента к FTP серверу, расположенному по адресу 127.0.0.1. В качестве имени пользователя использовать “root”, в качестве пароля «toor». С FTP сервера следует скачать один файл с Вашей фамилией. Запустить редактор vi для просмотра с Вашей фамилией файла. В списке процессов может находится только один редактор vi. Цикличность соединения с сервером dв секундах равна числу букв в Вашей фамилии.

Эта работа является заключительной.

Следующее занятие 18 мая, лекция.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее