diff --git a/module1/01_bash/solutions.md b/module1/01_bash/solutions.md index 8fa243d..90dabfd 100644 --- a/module1/01_bash/solutions.md +++ b/module1/01_bash/solutions.md @@ -1,14 +1,15 @@ # Решения -# 1 -Вы в директории /home/stud/data. Какая из команд переместит вас в домашнюю директорию? +## 1 +Вы в директории `/home/stud/data`. Какая из команд переместит вас в домашнюю директорию? ``` 3 cd /home/stud 5 cd ~ +7 cd ~/data/.. 8 cd 9 cd .. ``` -# 2 +## 2 Создайте файл dummy в /tmp. Попробуйте удалить его указав флаг -i для команды rm. В чём отличие удаления файла с этим флагом и без него? ``` mkdir /tmp/dummy @@ -20,13 +21,13 @@ rm -r /tmp/dummy ``` Отличие в запросе подтверждения действия. -# 3 +## 3 Создайте папку backup в домашней директории. Одновременно скопируйте файл .bashrc в /tmp/ и в backup с помощью cp. ``` $ mkdir ~/backup $ cp .bashrc ~/backup; cp .bashrc /tmp/ ``` -# 4 +## 4 Повторите структуру директории: ``` mkdir project @@ -48,7 +49,7 @@ mkdir backup mkdir shared ``` -# 5 +## 5 Скопируйте файлы экспериментов в backup, но распределите по папкам разные типы файлов. .data в backup/dataset, dat-calibration в backup/calibration, логи в backup/logs. В shared поместите все файлы, созданные 23 числа в папку 23day. Напишите команды в двух вариантах: с относительными путями и с абсолютными. ``` @@ -67,25 +68,25 @@ cp $PD/raw/*-exp?-calibration.dat backup/calibration cp $PD/raw/*.log ./backup/logs/ ``` -# 6 +## 6 Посчитайте количество строк в файле /var/log/messages. ``` sudo wc -l /var/log/messages sudo cat /var/log/messages | wc -l ``` -# 7 +## 7 Инициализируйте файл head_tail_messages с помощью команды head из строк в /var/log/messages, затем добавьте в head_tail_messages последние 23 строки из /var/log/messages. ``` sudo head /var/log/messages > head_tail_messages sudo tail -n 23 /var/log/messages >> head_tail_messages ``` -# 8 +## 8 Создайте псевдоним "dc", который разрешается в команду "cd" для случаев опечатки. ``` alias dc=”cd” ``` -# 9 +## 9 Прочитайте мануал `man ls` и напишите `ls` команду, которая выводит список файлов в следующем виде: * список файлов включает скрытые, @@ -95,14 +96,16 @@ alias dc=”cd” ``` ls -caht или ls -cahtl ``` -# 10 + +## 10 Запишите в переменную среды PATH значение "". Как это повлияло на выполнение команд? Перезайдите по ssh и попробуйте вызывать любую команду заново. Сохранились ли изменения? ``` export PATH=”” следствие: ни один исполняемый файл системой теперь не находится после переподключения система вернулась в прежнее состояние ``` -# 11 + +## 11 Модифицируйте команду так, чтобы у директорий в начале названия присутствовал глобальный индекс idx. ``` idx=0; @@ -118,7 +121,8 @@ done ``` idx=-1; for species in cubane ethane methane; do for temperature in 25 30 37 40; do mkdir $idx-$species-$temperature; ((idx+=1)); done; done ``` -# 12 + +## 12 (*) Напишите команду или сценарий для рекурсивного поиска самого последнего измененного файла в каталоге. В общем, можете ли вы перечислить все файлы по давности? Плохое решение @@ -134,23 +138,26 @@ find ./ -type f -printf "%T+ %H%P\n" 2>/dev/null | sort -r %H - путь к директории, в которой файл найден, %P - имя файла. -# 13 +## 13 Напишите цикл, который проходит по списку файлов в текущей директории и выводит полный путь к директории и имя файла. ``` for f in $(ls); do echo $(pwd)/$f; done ``` -# 14 + +## 14 Выведите результат сложения 10 и 4 с помощью bash синтаксиса для арифметических операций. ``` echo $((10 + 4)) ``` -# 15 + +## 15 Выведите результат умножения двух переменных с помощью bash синтаксиса для арифметических операций. ``` a=1; b=2; echo $((a*b)) ``` -# 16 + +## 16 Напишите команду, которая рекурсивно находит все HTML-файлы в папке и запаковывает их в tar.gz архив. Ваша команда должна работать, даже если в файлах есть пробелы. ``` find . -type f -name "*.html" -print0 | xargs -0 tar cfz htmls.tar.gz -``` +``` \ No newline at end of file diff --git a/module1/01_bash/tasks.md b/module1/01_bash/tasks.md index 7212bab..35a7678 100644 --- a/module1/01_bash/tasks.md +++ b/module1/01_bash/tasks.md @@ -1,6 +1,6 @@ # Задания -# 1 +## 1 Повторите структуру директории с помощью команд `mkdir` и `touch`: ``` project/ @@ -25,7 +25,7 @@ project/ `-- path ``` -# 2 +## 2 Вы в директории `/home/stud/project/`. Какая из команд переместит вас в домашнюю директорию? ``` 1 cd . @@ -39,40 +39,40 @@ project/ 9 cd .. ``` -# 3 +## 3 Перейдите в папку `backup`. Используя команду `cp`, выполните следующие действия одной строкой: - скопируйте два файла: `.bashrc` и `.bash_profile` в папку `backup`, - скопируйте файл `.bashrc` в две директории: `/tmp/` и `shared`. -# 4 +## 4 Создайте файл `dummy` в `/tmp`. Попробуйте удалить его указав флаг `-i` для команды `rm`. В чём отличие удаления файла с этим флагом и без него? -# 5 +## 5 Скопируйте файлы экспериментов в `backup`, но распределите их по папкам. Файлы с расширением `.datа` в `backup/data`, файлы с расширением `.calib` в `backup/calibration`, логи `.log` в `backup/logs`. В `shared` поместите все файлы, созданные 23 числа в папку `23day`. Напишите команды в двух вариантах: с относительными путями и с абсолютными и проверьте, что их выполнение даёт одинаковый результат. -# 6 +## 6 Посчитайте количество строк, слов и символов в файле `/var/log/dpkg.log`. -# 7 +## 7 Инициализируйте файл `head_tail_messages` с помощью команды `head` из строк в `/var/log/dpkg.log`. Затем добавьте в `head_tail_messages` последние 23 строки из `/var/log/dpkg.log`. -# 8 +## 8 Постройте конвейр с помощью оператора `|`, который считывает содержимое `/var/log/dpkg.log`, находит только строки содержащие слово `perl`, сохраняет результат в файл `/tmp/perl_pkgs` и одновременно выводит в консоль количество найденных строк. -# 9 +## 9 Выполните две команды: `head /nonexistent; echo Ok` и `head /nonexistent && echo Ok`. В чём отличие в поведении? -# 10 +## 10 Оператор `||` похож на оператор ИЛИ в программировании. Что вы ожидаете увидеть при запуске `mkdir test || echo Ok`? Проверьте так ли это. -# 11 +## 11 Создайте псевдонимы: `dc`, `chomd` которые разрешаются в команды: `cd`, `chmod` чтобы наконец решить проблему опечаток. Создайте псевдоним `ls` для команды `ls -alF` и `cdw` для команды `cd /home/stud/project/`. Проверьте работу псведонимов. Удалите псевдоним `ls` командой `unalias`. Проверьте, что выдача соответствует оригинальной команде `ls`. -# 12 +## 12 Прочитайте мануал `man ls`. Напишите `ls` команду, которая выводит список файлов в следующем виде: - список файлов включает скрытые, - размер файла указан с метрическими приставками (e.g. 454M вместо 454279954), @@ -88,13 +88,13 @@ drwxr-xr-x 5 user group 160 Jan 14 09:53 . drwx------+ 47 user group 1.5K Jan 12 18:08 .. ``` -# 13 +## 13 Попробуйте вывести содержимое переменной среды `HOME` с помощью `echo` в одинарных и двойных кавычках. В чём разница? -# 14 +## 14 Запишите в переменную среды `PATH` значение `""`. Как это повлияло на выполнение команд? Перелогиньтесь и попробуйте вызывать любую команду заново. Сохранилиcь ли изменения? -# 15 +## 15 C помощью bash синтаксиса для арифметических операций выведите результат: - сложения 10 и 4, - умножения 10 на 4, @@ -102,7 +102,7 @@ C помощью bash синтаксиса для арифметических Сохраните результат операции `a % b` в переменную `c`, где `a` и `b` результаты любых предыдущих двух операций. Выведите `с`. -# 16 +## 16 Выполните в терминале следующую команду в директории `/tmp`: ``` for species in cubane ethane methane; @@ -115,10 +115,10 @@ done ``` Что в результате вы видите в консоли? Модифицируйте команду так, чтобы у директорий в начале названия присутствовал глобальный индекс `idx`. На каждой итерации внутреннего цикла `idx` должна увеличиваться на единицу. -# 17 +## 17 Напишите цикл, который проходит по списку файлов в текущей директории и выводит полный путь к директории и имя файла. -# 18 +## 18 Далее поработайте с командой `watch date`. Команда `watch` вызывает периодически переданную ей команду в качестве аргумента. Это удобно для организации простого мониторинга. Первый раз вызовите команду и отправьте процессу сигнал `SIGINT` комбинацией клавишь `Ctrl+C`. @@ -129,8 +129,8 @@ done *man страницы: kill, signal* -# 19 +## 19 Напишите команду, которая рекурсивно находит все HTML-файлы в папке и упаковывает их в `tar.gz` архив. Используйте `find` и `xargs`. Ваша команда должна работать, даже если в файлах есть пробелы (подсказка: используйте `null` разделитель). -# 20 +## 20 (*) Напишите команду или сценарий для рекурсивного поиска самого последнего измененного файла в каталоге. В общем, можете ли вы перечислить все файлы по давности? \ No newline at end of file diff --git a/module1/02_vim_regexp_dataprocessing/1_vimtutor_ru.md b/module1/02_data_analysis/1_vimtutor_ru.md similarity index 99% rename from module1/02_vim_regexp_dataprocessing/1_vimtutor_ru.md rename to module1/02_data_analysis/1_vimtutor_ru.md index 1194763..54857cd 100644 --- a/module1/02_vim_regexp_dataprocessing/1_vimtutor_ru.md +++ b/module1/02_data_analysis/1_vimtutor_ru.md @@ -194,16 +194,12 @@ ** Наберите d$ для удаления текста до конца строки. ** 1. Нажмите , чтобы перейти в обычный режим. - 2. Переместите курсор вниз, к строке помеченной --->. - 3. Переместите курсор к концу правильной строки (ПОСЛЕ первой точки). - 4. Наберите d$ для удаления остатка строки. ---> Кто-то набрал окончание этой строки дважды. окончание этой строки дважды. - 5. Чтобы лучше разобраться в том, как это происходит, переходите к Уроку 2.3. ``` @@ -264,11 +260,8 @@ d объект для упрощения сделать возможным удаление строки набором двух d. 1. Переместите курсор вниз, ко второй строке фразы. - 2. Наберите dd для удаления строки. - 3. Теперь переместитесь к четвёртой строке. - 4. Наберите 2dd для удаления двух строк. ---> 1) Летом я хожу на стадион, @@ -377,13 +370,9 @@ d объект [число] c объект ИЛИ c [число] объект 2. Объекты также совпадают: w (слово), $ (конец строки) и т.п. - 3. Переместите курсор вниз, к строке помеченной --->. - 4. Перейдите к первой ошибке. - - 5. Наберите c$ и отредактируйте первую строку так, чтобы она совпадала со - второй, после чего нажмите . + 5. Наберите c$ и отредактируйте первую строку так, чтобы она совпадала со второй, после чего нажмите . ---> Конец этой строки нуждается в помощи, чтобы стать похожим на второй. ---> Конец этой строки нуждается в помощи команды c$ . @@ -402,7 +391,6 @@ d объект [число] c объект ИЛИ c [число] объект Теперь переходите к следующему уроку. - ``` # Урок 4 diff --git a/module1/02_vim_regexp_dataprocessing/2_regexptutor_ru.md b/module1/02_data_analysis/2_regexptutor_ru.md similarity index 99% rename from module1/02_vim_regexp_dataprocessing/2_regexptutor_ru.md rename to module1/02_data_analysis/2_regexptutor_ru.md index 24dabc6..15dc56d 100644 --- a/module1/02_vim_regexp_dataprocessing/2_regexptutor_ru.md +++ b/module1/02_data_analysis/2_regexptutor_ru.md @@ -1,5 +1,4 @@ -Добро пожаловать в задания https://regexone.com! -Уроки переведены и адаптированы под выполнение в vim. +Задания взяты с ресурса https://regexone.com. Уроки переведены и адаптированы под выполнение в vim. ## Урок 0: Введение и азбука @@ -40,7 +39,7 @@ найдите abc ``` ---- + ## Урок 1½: 123-е @@ -66,7 +65,7 @@ найдите цифры в define "123" найдите цифры в var g = 123; ``` ---- + ## Урок 2: Точка @@ -93,7 +92,7 @@ найдите ?=+. пропустите abc1 ``` ---- + ## Урок 3. Соответствие определенным символам @@ -119,7 +118,7 @@ пропуститe ran пропуститe pan ``` ---- + ## Урок 4. Исключение определенных символов @@ -145,7 +144,7 @@ найдите dog пропустите bog ``` ---- + ## Урок 5: Диапазоны символов diff --git a/module1/02_data_analysis/3_bash_data_processing.md b/module1/02_data_analysis/3_bash_data_processing.md new file mode 100644 index 0000000..1d47b05 --- /dev/null +++ b/module1/02_data_analysis/3_bash_data_processing.md @@ -0,0 +1,76 @@ +# Задания на обработку данных в bash + +## 1 +Вызовите `"for f in `seq 20`; do echo $RANDOM >> rnds; done"` и отсортируйте данные `rnds`, в алфавитном порядке, по возрастанию чисел. + +## 2 +Сохраните эти первые 10 записей датасета titanic в файл `titanic.csv` для последующих заданий: +``` +PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S +2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C +3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S +4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S +5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S +6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q +7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S +8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S +9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S +10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C +``` + +## 3 +Выведите первую колонку, используя `awk`. + +## 4 +Выведите содержимое файла без заголовка. + +## 5 +Выведите первую и третью колонку файла, используя `awk`. + +## 6 +Выведите только те строки, которые содержат строку `male` или `female`: + +## 7 +Отсортируйте значения `titanic.csv` по значению `Ticket` (9 колонка): + +## 8 +Уберите дублирующиеся строки на основании третьей колонки, используя `awk`. + +## 9 +Посчитайте сумму колонки `Fare`, используя `awk`. + +## 10 +Сконвертируйте файл из csv в json формат, используя `jq`. + +## 11 +Используя `awk` сконвертируйте строки со значениями из колонок `PassengerId`, `Survived`, `Pclass` файла в набор `SQL INSERT` утверждений, которые можно использовать для импорта в SQL базу данных. Используйте `awk`. + +## 12 +Конвейеры Unix позволяли организовывать сложные преобразования данных ещё до фреймворков обработки больших данных и сейчас иногда могут быть даже быстрее [Adam D. Command-line Tools can be 235x Faster than your Hadoop Cluster]. + +Найдите гистограмму слов по методу mapreduce с помощью утилит и операторов конвейера. Гистограмма должна быть отсортирована по частоте встречи слова в тексте. + +MapReduce выполняет следующие действия в первой фазе: разбивает содержимое файла на слова, сортирует их, каждому слову сопоставляет 1. Во второй фазе складывает единицы каждого слова, что даёт конечный результат. Используйте любой набор утилит и конструкций bash. Одно из решений задействует: `uniq`, `sort`, `cat`, `sed`. + +## 13 +Повысьте права до пользователя root с помощью команды `su - root`. Найдите в системном логе `/var/log/auth.log` события "authentication failure", уберите начало строки до "authentication failure" и сохраните их в файл. Следуя правилам хорошего тона, после выполнения операций не забудьте выйти из аккаунта суперпользователя. + +## 14 +Выведите 10 самых больших открытых файлов в системе, используя `lsof` и `awk`. + +# Man страницы +``` +man awk +man lsof +man sort +man uniq +man cat +man sed +man jq +man su +``` + +# Ссылки + +[Adam D. Command-line Tools can be 235x Faster than your Hadoop Cluster] https://adamdrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html \ No newline at end of file diff --git a/module1/02_data_analysis/3_solutions.md b/module1/02_data_analysis/3_solutions.md new file mode 100644 index 0000000..2706ea3 --- /dev/null +++ b/module1/02_data_analysis/3_solutions.md @@ -0,0 +1,117 @@ +# Задания на обработку данных в bash + +## 1 +Вызовите `"for f in `seq 20`; do echo $RANDOM >> rnds; done"` и отсортируйте данные `rnds`, в алфавитном порядке, по возрастанию чисел. +``` +sort rnds +sort -n rnds +``` + +## 2 +Сохраните эти первые 10 записей датасета titanic в файл `titanic.csv` для последующих заданий: +``` +PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S +2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C +3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S +4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S +5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S +6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q +7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S +8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S +9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S +10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C +``` + +## 3 +Выведите первую колонку, используя `awk`. +``` +awk -F, '{print $1}' file.csv +``` + +## 4 +Выведите содержимое файла без заголовка. +``` +tail -n +2 file.csv +``` + +## 5 +Выведите первую и третью колонку файла, используя `awk`. +``` +awk -F, '{print $1 "," $3}' file.csv +``` + +## 6 +Выведите только те строки, которые содержат строку `male` или `female`: +``` +grep "female" file.csv +``` + +## 7 +Отсортируйте значения `titanic.csv` по значению `Ticket` (9 колонка): +``` +sort -t, -k2 file.csv +``` + +## 8 +Уберите дублирующиеся строки на основании третьей колонки, используя `awk`. +``` +awk -F, '!seen[$1]++' file.csv +``` + +## 9 +Посчитайте сумму колонки `Fare`, используя `awk`. +``` +awk -F, '{sum+=$3} END {print sum}' file.csv +``` + +## 10 +Сконвертируйте файл из csv в json формат, используя `jq`. +``` +jq -R -r 'split(",") | {name:.[0],age:.[1]}' file.csv +``` + +## 11 +Используя `awk` сконвертируйте строки со значениями из колонок `PassengerId`, `Survived`, `Pclass` файла в набор `SQL INSERT` утверждений, которые можно использовать для импорта в SQL базу данных. Используйте `awk`. +``` +awk -F, '{printf "INSERT INTO table VALUES (\"%s\", \"%s\", \"%s\");\n", $1, $2, $3}' file.csv +``` + +## 12 +Конвейеры Unix позволяли организовывать сложные преобразования данных ещё до фреймворков обработки больших данных и сейчас иногда могут быть даже быстрее [Adam D. Command-line Tools can be 235x Faster than your Hadoop Cluster]. + +Найдите гистограмму слов по методу mapreduce с помощью утилит и операторов конвейера. Гистограмма должна быть отсортирована по частоте встречи слова в тексте. + +MapReduce выполняет следующие действия в первой фазе: разбивает содержимое файла на слова, сортирует их, каждому слову сопоставляет 1. Во второй фазе складывает единицы каждого слова, что даёт конечный результат. Используйте любой набор утилит и конструкций bash. Одно из решений задействует: `uniq`, `sort`, `cat`, `sed`. +``` +cat /var/log/dpkg.log | sed 's/ /\n/g' | sort -k1 | uniq -c | sort -k1 -n +``` + +## 13 +Повысьте права до пользователя root с помощью команды `su - root`. Найдите в системном логе `/var/log/auth.log` события "authentication failure", оставьте в строке только дату и имя пользователя и сохраните их в файл. Следуя правилам хорошего тона, после выполнения операций не забудьте выйти из аккаунта суперпользователя. +``` +cat /var/log/auth.log | grep 'authentication failure' | sed 's/^\(.\{15\}\).*authentication failure; logname=\(\w\+\) .*/\1 \2/g' +``` + +## 14 +Выведите 10 самых больших открытых файлов в системе, используя `lsof` и `awk`. +``` +lsof / | awk '{ if($7 > 1048576) print $7/1048576 "MB" " " $9 " " $1 }' | sort -n -u | tail +``` + +# Man страницы +``` +man awk +man lsof +man sort +man uniq +man cat +man sed +man jq +man su +``` + +# Ссылки + +[Adam D. Command-line Tools can be 235x Faster than your Hadoop Cluster] https://adamdrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html + diff --git a/module1/02_vim_regexp_dataprocessing/questions.md b/module1/02_data_analysis/questions.md similarity index 100% rename from module1/02_vim_regexp_dataprocessing/questions.md rename to module1/02_data_analysis/questions.md diff --git a/module1/02_vim_regexp_dataprocessing/3_bash_data_processing.md b/module1/02_vim_regexp_dataprocessing/3_bash_data_processing.md deleted file mode 100644 index 6467691..0000000 --- a/module1/02_vim_regexp_dataprocessing/3_bash_data_processing.md +++ /dev/null @@ -1,12 +0,0 @@ -# Задания на обработку данных в bash - -## 1 -Найдите на удалённом сервере в системном логе события "authentication failure" в /var/log/auth.log, уберите начало строки до "authentication failure" и сохраните их в файл. - -## 2 -Вызовите "for f in `seq 20`; do echo $RANDOM >> rnds; done" и отсортируйте данные rnds, в алфавитном порядке, по возрастанию чисел. - -## 3 -Конвейеры Unix позволяли организовывать сложные преобразования данных ещё до фреймворков обработки больших данных. Найдите гистограмму слов по методу mapreduce с помощью утилит и операторов конвейера. Гистограмма должна быть отсортирована по частоте встречи слова в тексте. - -MapReduce выполняет следующие действия в первой фазе: разбивает содержимое файла на слова, сортирует их, каждому слову сопоставляет 1. Во второй фазе складывает единицы каждого слова, что даёт конечный результат. Используйте любой набор утилит и конструкций bash. Одно из решений задействует: uniq, sort, cat, sed. \ No newline at end of file diff --git a/module1/03_networking/solution_task_3_internet.md b/module1/03_networking/solution_task_3_internet.md index 2fc5a37..e12a126 100644 --- a/module1/03_networking/solution_task_3_internet.md +++ b/module1/03_networking/solution_task_3_internet.md @@ -1,18 +1,18 @@ # Задание 3 -0. Узнайте статус сервиса systemd-networkd и systemd-resolved +0. Узнайте статус сервиса `systemd-networkd` и `systemd-resolved` ``` # systemctl status systemd-networkd # systemctl status systemd-resolved ``` -1. Активируйте networkd, если он не активирован (disabled) +1. Активируйте `networkd`, если он не активирован (disabled) ``` # systemctl enable systemd-networkd # systemctl enable systemd-resolved ``` -2. Запустите networkd, если он не запущен (inactive, dead) +2. Запустите `networkd`, если он не запущен (inactive, dead) ``` # systemctl start systemd-networkd # systemctl start systemd-resolved @@ -23,10 +23,10 @@ # ip link ``` -4. Для настройки интерфейса ens18 машины stud1-2v1 создайте -или отредактируйте в каждой /etc/systemd/network/ens18.network. +4. Для настройки интерфейса `ens18` машины `stud1-2v1` создайте +или отредактируйте в каждой `/etc/systemd/network/ens18.network`. Адрес машины взят из такой сети, в которой присутствует шлюз в -интернет 10.160.179.1. +интернет `10.160.179.1`. конфигурация ens18.network машины stud1-2v1 ``` @@ -48,16 +48,16 @@ Gateway=10.160.179.1 stud@stud1-2v1$ ping 1.1.1.1 ``` -7. Для настройки DNS ens18 машины stud1-2v1 отредактируйте +7. Для настройки DNS `ens18` машины `stud1-2v1` отредактируйте /etc/systemd/resolved.conf. -конфигурация resolved.conf машины stud1-2v1 +конфигурация `resolved.conf` машины `stud1-2v1` ``` [Resolve] DNS=1.1.1.1 ``` -8. Перезагрузите systemd-resolved +8. Перезагрузите `systemd-resolved` ``` # systemctl restart systemd-resolved ``` diff --git a/module1/03_networking/tasks.md b/module1/03_networking/tasks.md index 10246e3..34b3092 100644 --- a/module1/03_networking/tasks.md +++ b/module1/03_networking/tasks.md @@ -1,14 +1,14 @@ # Задание 1 -Для виртуальных машин studX-1vX и studX-2vX настройте статический адрес в помощью systemd в подсети 192.168.Х.0/24. Используйте команду networkctl и файлы настроек /etc/systemd/network/ens18.network. Проверьте, что машины видят друг друга с помощью команды ping IP-адрес-соседней-машины. +Для виртуальных машин `studX-1vX` и `studX-2vX` настройте статический адрес в помощью `systemd` в подсети `192.168.Х.0/24`. Используйте команду `networkctl` и файлы настроек `/etc/systemd/network/ens18.network`. Проверьте, что машины видят друг друга с помощью команды `ping IP-адрес-соседней-машины`. # Задание 2 -На машине studX-1vX настройте в подсети 192.168.X.0/24 DHCP сервер в файле /etc/systemd/network/ens18.network. На другой машине studX-2vX настройте получение IP адреса по DHCP. Проверьте, что машины видят друг друга. +На машине `studX-1vX` настройте в подсети `192.168.X.0/24` DHCP сервер в файле `/etc/systemd/network/ens18.network`. На другой машине `studX-2vX` настройте получение IP адреса по DHCP. Проверьте, что машины видят друг друга. # Задание 3 -На машине studX-1vX настройте доступ в интернет. В настройках Hardware измените Network Device на vmbr499, перейдя таким образом в другую vlan. В качестве шлюза используйте адрес 10.160.179.1. В качестве адреса возьмите 10.160.179.200, прибавив X к последнему октету. +На машине `studX-1vX` настройте доступ в интернет. В настройках Hardware измените Network Device на `vmbr499`, перейдя таким образом в другую `vlan`. В качестве шлюза используйте адрес `10.160.179.1`. В качестве адреса возьмите `10.160.179.200`, прибавив `X` к последнему октету. # Задание 4 diff --git a/module1/08_debian_package_management/tasks.md b/module1/08_debian_package_management/tasks.md index 296fb24..41ed4cc 100644 --- a/module1/08_debian_package_management/tasks.md +++ b/module1/08_debian_package_management/tasks.md @@ -3,6 +3,8 @@ ### 0. Обновите список пакетов из настроенных репозиториев в /etc/apt/sources.list командой apt. +; TODO как должен выглядеть sources.list + ### 1. Установите пакет apt-file с помощью apt. diff --git a/module1/for_tutor.md b/module1/for_tutor.md index 1e85f22..d66f1fb 100644 --- a/module1/for_tutor.md +++ b/module1/for_tutor.md @@ -2,20 +2,22 @@ ## Подготовка среды проведения лабораторных работ -Лабораторные проводятся на виртуальных машинах в системе виртуализации Proxmox. +Лабораторные проводятся на виртуальных машинах в системе виртуализации Proxmox. Задания выкладываются в публичный git репозиторий. Для получения новых заданий студенты первоначально скачивают их по ссылке командой `git clone`, а затем в начале каждого урок обновляют их командой `git pull`. -Определим N как количество студентов умноженное на 1.5 и округлим в большую сторону. Определим X как идентификатор от 1 до N. +Будем считать, что N - количество студентов умноженное на 1.5, округлённое в большую сторону. X - идентификатор студента от 1 до N. Создайте N пользователей в Proxmox с именами studX (stud1, stud2, ...). Используйте Realm "Proxmox VE authentication server". +Загрузите образ debian-11.4.0-amd64-netinst.iso в Proxmox хранилище. + Для массового создания виртуальных машин рекомендуется использовать возможность Proxmox конвертации виртуальной машины в шаблон. Из шаблона копия создаётся на порядки быстрее по времени, чем при полном клонировании. Следуйте следующим шагам: 1. настройте машину с общими для всех копий настройками, 2. преобразуйте её в шаблон (template), -3. создайте клоны из шаблона и донастройте, если необходимо. +3. создайте клоны из шаблона и донастройте, если необходимо, +4. сделайте snapshot основных машин, чтобы вы и студенты имели возможность отката до рабочего состояния. При наличии нескольких дисков рекомендуется RAID оптимизирующий производительность. Неправильный raid или медленный тип диска может привести к существенному замедлению работы во время установки ОС или пакетов. -Загрузите образ debian-11.4.0-amd64-netinst.iso в Proxmox хранилище. ### Основные виртуальные машины @@ -36,13 +38,15 @@ - 8 Гб оперативной памяти, - 16 Гб дискового пространства. -Каждой виртуальной машине назначьте статический IPv4 адрес 10.160.179.10 + X (10.160.179.11, 10.160.179.12, ...). +Каждой виртуальной машине назначьте статический IPv4 адрес 10.160.179.10 + X (10.160.179.11, 10.160.179.12, ...). Используйте инструкцию из задания про настройку сети данного учебного модуля. Установите минимальный дистрибутив debian на каждую. Установите пакеты: - man-db, - ssh, - vim, -- tree. +- tree, +- jq, +- lsof. Удалите пакет ifupdown.