Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курушин.docx
Скачиваний:
4
Добавлен:
25.11.2019
Размер:
37.49 Кб
Скачать

3. Реализовать Shell-программу, выполняющую функции сервера, способного выполнять команды:

auth user pass — авторизация, user и pass хранятся в файле pass в каталоге запуска программы

put — передать текст на английском языке.

trans — перевести текст.

exit — выход

help — справка по командам.

1. Shell-программа читает текстовый файл на русском языке и, используя словарь формата:

english_word0 русское_слово0

english_word1 русское_слово1

english_word2 русское_слово2

переводит его на английский язык. Словоформы не учитываются, лексические и грамматические правила — тоже.

2. Усложнить программу из задачи №1 так, чтобы она могла обучаться новым словам (через диалог с пользователем)

3. Реализовать Shell-программу, выполняющую функции сервера, способного выполнять команды:

auth user pass — авторизация, user и pass хранятся в файле pass в каталоге запуска программы

put — передать текст на русском языке.

trans — перевести текст.

exit — выход

help — справка по командам.

1. Shell-программа подсчитывает количество и выводит список всех файлов (без каталогов) в случайном порядке, начиная с каталога, имя которого задано конфигурационным файлом Shell-программы (.config в каталоге пользователя)

2. Shell-программа обрабатывает результат вывода предыдущей программы и решает задачу поиска каталога с количеством файлов, отличающимся от максимального не более чем на N.

3. Реализовать Shell-программу, выполняющую функции сервера, способного выполнять команды:

auth user pass — авторизация, user и pass хранятся в файле pass в каталоге запуска программы

list — показать список файлов в каталоге запуска программы

info file — напечатать сведения о файле, владелец, размер, время создания

put file1 file2 file_n — передать файлы, указанные в строке на сервер, данные поступают через STDIN. Признак конца очередного файла — «.».

exit — выход

help — справка по командам.

1. Shell-программа выводит текущую дату в формате DD-MM-YYYY и сообщает, попадает ли она в указанный интервал.

2. Shell-программа обрабатывает текстовый файл формата:

YYYY-MM-DD service message # дата, имя службы, сообщение

2010-09-09 kernel system restarted

2010-10-10 security пользователь admin вошел в систему с хоста 192.168.0.10

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

Вызов программы:

prog kernel 2010-01-01 2011-02-03

prog security 2010-01-01 2011-02-03

3. Используя утилиту netcat реализовать простейший http-клиент.

Программа должна принимать аргумент — url файла и сохранять его в каталоге запуска под

случайным именем.

1. Напишите программу, которая выводит на экран числа от 1 до случайного числа в диапазоне [100,200]. При этом вместо чисел, кратных трем, программа должна выводить слово «Fizz», а вместо чисел, кратных пяти — слово «Buzz». Если число кратно и 3, и 5, то программа должна выводить слово «FizzBuzz». Язык программирования — Unix Shell.

2. Проанализировав вывод задачи 1 установите:

- количество четных чисел

- количество чисел, кратных 3 и/или 5

- максимальное число, кратное 5

3. Используя утилиту netcat реализовать простейший ftp-клиент.

Программа должна принимать аргумент — имя каталога и сохранять его листинг в каталоге запуска под

случайным именем.

1. Напишите программу, которая выводит на экран числа от 1 до случайного числа в диапазоне [20,200]. При этом вместо чисел, оканчивающихся на 3, программа должна выводить слово «foo», а вместо чисел, начинающихся с 2 — слово «bar». Если выполняются оба условия, программа должна выводить слово «foo|bar». Язык программирования — Unix Shell.

2. Проанализировав вывод задачи 1 установите:

- количество нечетных чисел

- количество чисел, не начинающихся с 2

- максимальное число, кратное 3

3. Используя утилиту netcat реализовать простейший smtp-клиент.

Программа должна принимать аргумент — e-mail и отправлять на этот адрес список процессов, работающих в данный момент времени.

1. Составить программу нахождения корней квадратного уравнения «a⋅x² + b⋅x + c = 0».

Программа принимает аргументы вида «a=x b=y с=z». Язык программирования — Unix Shell.

2. Из множества уравнений вида «a⋅x² + b⋅x + c = 0» shell-программа выбирает те, у которых хотя-бы один из корней соответствует указанному.

3. Написать сервер, решающий квадратные уравнения.

Протокол:

LOGIN name, pass ← вход в систему, если авторизация не верна, выдать ошибку 1

STORE A B C ← запомнить коэффициенты

SOLVE ← решить уравнение с известными коэффициентами, если коэффициенты не даны, выдать ошибку 2

SOLVE A B C ← решить уравнение с указанными коэффициентами

Коды ответов сервера:

0 ← нет ошибки

1 ← ошибка авторизации

2 ← не указаны коэффициенты

3 ← синтаксическая ошибка

1. Составить программу нахождения корня уравнения «a⋅x + b = 0».

Программа принимает аргументы вида «a=x b=y». Язык программирования — Unix Shell.

2. Из множества уравнений вида «a⋅x + b = 0» shell-программа выбирает те, у которых корень соответствует указанному.

3. Используя утилиту netcat реализовать простейший smtp-клиент.

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

x@a. … .z, где x,a и z — имена файлов из каталога /usr/bin. Примеры имен:

a2ping@a2p.2to3

2to3@autopano.asy.arch

и т.п.

ПРИМЕЧАНИЕ!!! При тестировании программы отправку более 1 e-mail имитировать!

1. Средствами Shell и Zenity реализовать файловый менеджер со следующими функциями:

- просмотр содержимого каталога,

- переименование выбранного файла,

- удаление файла с запросом.

2. В некотором файле группы строк разделены шаблонами X001, X002 и т.д.

Необходимо извлечь данные, находящиеся между метками X00* в разные файлы,

соответствующие указанным в шаблонах номерам.

3. файловый менеджер из з. 1. дополнить функцией ftp-клиента.

Клиент должен поддерживать просмотр списка файлов удаленного сервера, загрузку и отправку файлов.

1. Средствами Shell и Zenity реализовать файловый менеджер со следующими функциями:

- просмотр содержимого каталога,

- смена каталога,

- удаление файла с запросом.

2. В некотором файле группы строк разделены e-mail-адресами (name@server.org).

Необходимо извлечь данные, находящиеся между метками адресами и имитировать отправку их по е-mail.

3. Файловый менеджер из з. 1. дополнить функцией smtp-клиента.

Клиент должен поддерживать авторизацию, просмотр «адресной книги» и отправку файлов по e-mail (необходимо base64-кодирование).

ПРИМЕЧАНИЕ!!! При тестировании программы отправку более 1 e-mail имитировать!

1. При помощи утилиты Zenity реализовать аналог архиватора WinZip с функциями выбора каталога для архивации, архивации (использовать zip или tar) и распаковки архивов.

2. В некотором файле группы строк разделены e-mail-адресами (name@server.org).

Необходимо извлечь данные, находящиеся между метками адресами и разложить их по каталогам, указанным в имени пользователя (name).

3. Дополнить архиватор из п.1. функцией приема или отправки файлов на ftp-сервер.

ПРИМЕЧАНИЕ!!! При тестировании программы отправку более 1 файла имитировать!

1. Используя утилиту Zenity реализовать программу, «предсказывающую будующее», т.е. отвечающую на вопросы пользователя «да», «нет» или «нет ответа». Вероятность каждого ответа: 1/3. Ответ выбирается случайным образом.

2. Расширить функционал программы из з. 1, добавив проверку на наличие в вопросе слов «почему», «когда», «сколько» и т.п. В случае наличия вопросительных слов в предложении, введенным пользователем, программа должна отвечать «нет ответа».

3. Используя алгоритм из зз. 1 и 2 и утилиту netcat реализовать сервер предсказаний.

1. На языке unix shell написать программу, которая переводит имена файлов текущего каталога в латиницу.

2. Имеется html-документ — результат поиска в Google.  Необходимо выделить из него ссылки на первые 5 ресурсов и загрузить все изображения, размером более чем 64x64 пикселя, расположенные по этим ссылкам.

3. Написать программу — простейший ftp-клиент. Программа должна опрашивать все узлы указанной сети и сообщать о наличии в ней ftp-серверов с публичным доступом.

1. На языке unix shell написать программу, которая переводит имена подкаталогов текущего каталога в латиницу.

2. Имеется html-документ — результат поиска в Yandex.  Необходимо выделить из него ссылки на первые 5 ресурсов и загрузить все изображения, размером более чем 64x64 пикселя, расположенные по этим ссылкам.

3. Написать программу — простейший samba-клиент. Программа должна опрашивать все узлы указанной сети и сообщать о наличии в ней узлов с публичным доступом.

1. На языке unix shell написать программу, которая заменяет имена файлов текущего каталога на их md5-сумму:

kartinko.jpg —> aab9fa58b9b58f00d1e6b037dc94c1c0.jpg

animashka.gif —> 4dbb610d0b0157c163a47d346d4c9e2c.gif

Cуффикс файла сохраняется

2. Имеется html-документ — результат поиска в  Bing.  Необходимо выделить из него ссылки на первые 5 ресурсов и загрузить все изображения в формате png, размером более чем 64x64 пикселя, расположенные по этим ссылкам.

3. Написать программу — простейший smb-клиент. Программа должна опрашивать указанный узел и возвращать список ресурсов.

1. shell-программа определяет формат файолв текущего каталога и изменяет их суффиксы в соответствии с форматом:

abcdef.xxx —> abcdef.xxx.png, т.к. формат этого файла — png.

qwerty.yyy —> qwerty.yyy.doc, т.к. формат этого файла — Micrsoft Word Document.

2. Имеется access_log веб-сервера Apache. Определить самый длинный путь по сайту и представить его графически в нотации DOT (graphviz).

graph a {

  a -> b;

  b -> c;

  c -> d;

}

отдельно приложить файл с "легендой" a:index.html, b:about.html и т.п.

3. Построить карту локальной сети в нотации DOT (graphviz). Центральный узел — ваш.

Длинна дуг между узлами пропорциональна расстоянию до остальных узлов сети, определяемому по задержке ping.

1. На языке unix shell написать программу, которая переводит имена подкаталогов текущего каталога в с русского на английский, используя словарь вида:

русское слово<tab>английское слово

Словоформы не учитывать.

2. Имеется текст на английском языке, составленный из предложений вида:

подлежащее сказуемое дополнение [другие члены предложения].

Составить словарь словоформ этого текста, используя нечеткий поиск на базе n-грамм (утилита agrep)

и построить семантическую сеть в формате dot (graphviz)

digraph a {

  "подлежащее" -> "дополнение" [label="сказуемое"];

  . . .

}

3. Написать сканер портов. Программа должна сообщать об открытых портах на исследуемой системе, отождествляя порт с протоколом.

1. На языке unix shell написать программу, которая переводит имена подкаталогов текущего каталога в с английского на немецкий, используя словарь вида:

english<space>german

Словоформы не учитывать.

2. Имеется программа на языке java, состоящая из нескольких классов.

Построить диаграмму наследования классов в формате dot (graphviz)

graph a {

  "Class A" -> "Class B" [label="extends"];

  . . .

}

3. Написать программу подбора паролей к ftp-серверу.

ПРИМЕЧАНИЕ!! На реальных ftp-cерверах не тестировать, установить свой.

1.  На языке unix shell написать программу, которая архивирует все подкаталоги текущего каталога.

somedir1 —> somedir1.zip

somedir2 —> somedir2.tar

Способ архивации закодирован в файле .config в каталоге (zip, tar, …)

2. Имеется журнал ошибок веб-сервера Apache (error_log).

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

Для отрисовки гистограммы использовать SVG.

3. Используя traceroute (tracepath) и сведения о диапазоне IP-адресов нарисовать топологию сети в формате dot.

Пример:

traceroute to 195.19.160.1 (195.19.160.1), 64 hops max, 52 byte packets

 1  192.168.0.1 (192.168.0.1)  0.385 ms  0.229 ms  0.193 ms

 2  195.19.161.100 (195.19.161.100)  0.715 ms  0.860 ms  0.740 ms

 3  ats-sw4-vl509.pstu.ac.ru (195.19.164.108)  0.844 ms  0.802 ms  0.834 ms

 4  serv1.pstu.ac.ru (195.19.160.1)  0.918 ms  0.584 ms  0.564 ms

traceroute to ya.ru (213.180.204.3), 64 hops max, 52 byte packets

 1  192.168.0.1 (192.168.0.1)  0.381 ms  0.222 ms  0.208 ms

 2  195.19.161.100 (195.19.161.100)  0.701 ms  0.948 ms  0.726 ms

 3  ats-sw4-vl509.pstu.ac.ru (195.19.164.108)  0.832 ms  0.851 ms  0.787 ms

 4  ats-gw2-f1.0.30.pstu.ru (195.19.176.65)  0.754 ms  0.580 ms  0.601 ms

 5  ats-gw1.pstu.ru (195.19.164.69)  0.763 ms  0.850 ms  0.724 ms

digraph g {

 "192.168.0.1" -> "195.19.161.100" [ label = "0.740 ms" ]

 "195.19.161.100" -> "195.19.164.108" [ label = "0.834 ms" ]

 "195.19.164.108" -> "195.19.160.1" [ label = "0.564 ms" ]

 "195.19.164.108" -> "195.19.176.65" [ label = "0.601 ms" ]

 "195.19.176.65" -> "195.19.164.69" [ label = "0.724 ms" ]

 "195.19.164.69" -> "194.226.222.169" [ label = "0.884 ms" ]

}

Однотипные маршруты исключать.

1. На языке unix shell написать программу, которая архивирует все подкаталоги текущего каталога.

somedir1 —> somedir1.zip

somedir2 —> somedir2.tar

Способ определяется случайно (zip, tar, …)

2. Имеется журнал ошибок веб-сервера Apache (error_log).

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

Для отрисовки гистограммы использовать gnuplot.

3. Используя утилиту nmap просканировать локальную сеть и определить порты, открытые на узлах сети.

Результат представить в виде графа:

digraph g {

 "ваш_ip" -> "192.168.0.23" [ label = "время сканирования" ]

 "192.168.0.23" -> "25" [ label = "SMTP ]

 "192.168.0.23" -> "22" [ label = "SSH" ]

 … … …

}

При отсутствии доступной для сканирования сети, можно использовать сервис nmap-online.com и сканировать собственный компьютер.

1. На языке unix shell написать программу, которая масштабирует все картинки JPEG текущего каталога до 1024x768 и создает индексный html-файл.

Использовать пакет netpbm.

2. Используя нечеткий поиск (n-граммы, agrep) составить словарь (полнотекстовый индекс) html-файла.

html-тэги — удалить.

3. Реализовать простейший поисковый сервер, способный обходить сеть, собирать файлы, индексировать их,

генерировать графическое представление html и предоставлять полнотекстовый поиск.

В качестве БД использовать простые текстовые файлы.

Оптимальность алгоритма, скорость работы и нормализация данных не имеют значения.

1. На языке unix shell написать программу, которая масштабирует все картинки JPEG текущего каталога до 32x32

и создает индексный html-файл со ссылками на картинки полного размера.

Использовать пакет netpbm.

2. Используя нечеткий поиск (n-граммы, agrep) составить словарь (полнотекстовый индекс) odf-файла.

html-тэги — удалить.

3. Используя flood-ping исследовать пропускную способность локальной сети в разных направлениях.

Отчет представить в виде графика. По оси абсцисс отложить время задержки пакета, по оси ординат,

количество компьютеров, имеющих близкое время. Для построения графика использовать gnuplot.

1. На языке unix shell написать программу, которая прерывает все процессы, имя которх начинается

с буквы «a» и PID которых > 1024.

ПРИМЕЧАНИЕ!!! При отладке программы прерывание процессов имитировать.

2. Сгенерировать html-отчет о процессах, выполняемых системой. Отчет должен иметь вид таблицы:

Processes: 77 total, 4 running, 2 stuck, 71 sleeping, 415 threads

Load Avg: 0.28, 0.21, 0.21  CPU usage: 1.31% user, 1.31% sys, 97.36% idle

SharedLibs: 5100K resident, 6228K data, 0B linkedit. MemRegions: 18472 total, 1259M resident, 32M private, 459M shared.

PhysMem: 828M wired, 2142M active, 600M inactive, 3570M used, 515M free.

VM: 154G vsize, 1041M framework vsize, 2118843(0) pageins, 31910(0) pageouts.

Networks: packets: 959253/815M in, 720612/182M out. Disks: 339129/11G read, 435830/10G written.

PID    COMMAND      %CPU TIME     #TH  #WQ  #POR #MREG RPRVT  RSHRD  RSIZE  VPRVT  VSIZE  PGRP  PPID  STATE    UID

32199  top          4.3  00:00.42 1/1  0    24   36    1424K  252K   2020K  17M    2378M  32199 32194 running  0

32194  bash         0.0  00:00.01 1    0    17   24    432K   244K   1096K  17M    2378M  32194 32193 sleeping 501

32193  login        0.0  00:00.64 1    0    22   56    560K   252K   1680K  19M    2379M  32193 32190 sleeping 0

32190  Terminal     3.5  00:01.02 5    1    111- 214   4388K+ 36M    14M+   73M    2777M  32190 110   sleeping 501

32117  ocspd        0.0  00:02.61 3    1    50   66    4612K  304K   5276K  79M    2447M  32117 1     sleeping 0

(вывод команды top вашей системы).

Для столбцов и ячеек использовать тэги <div>.

3. Используя генератор из задачи №2 создать веб-службу, управляющую процессами сервера.

Должна поддерживаться отправка сигналов 9, 15, 18 и 19 и автообновление списка.

1. На языке unix shell реализовать fork-бомбу (саморазмножающийся процесс).

ПРИМЕЧАНИЕ!!! При отладке программы использовать ulimit.

2. Сформировать html-отчет об открытых TCP-портах.

Отчет должен содержать # порта, PID, состояние порта и имя процесса.

Для индикации состояния порта использовать цветовое кодирование средствами css3.

3. Используя отчет из з. №2 создать веб-службу управления сервером.

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

- трассировка (strace) выбранного процесса

- прерывание выбранного процесса

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]