|  |  | @ -1,468 +0,0 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  | # Решения |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 1. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Напишите .sh скрипт в котором в переменную date присваивается значение текущей даты, в переменную claim - строка "snow is white". После вызова скрипт должен выводить строку, используя переменные date и claim: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Ср 14 сен 2022 14:50:46 +04: The claim that “snow is white” is true if and only if snow is white. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Сделайте файл исполняемым для владельца и вызовите указанием полного или относительного пути к нему. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | содержимое скрипта 1.sh |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | date=$(date) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | claim='snow is white' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | echo "$date: The claim that \"$claim\" is true if and only if $claim." |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 2. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Напишите функцию в скрипте, которая создает каталог, путь к которому передан в качестве первого аргумента и переходит в него. Проверьте работу функции в этом же файле. Работает ли функция за пределами контекста скрипта? |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ cat 2.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | mkdir_cd () { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         mkdir -p $1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         cd $1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         echo current dir: $(pwd) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | mkdir_cd $1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ ./2.sh /tmp/1/2/3/4/5 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | current dir: /tmp/1/2/3/4/5 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | После выполнения скрипта текущая директория не изменилась.  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ mkdir_cd () { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         mkdir -p $1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         cd $1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         echo current dir: $(pwd) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ mkdir_cd /tmp/a/b/c/d |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | current dir: /tmp/a/b/c/d |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:/tmp/a/b/c/d$  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | После определения функции и вызова в оболочке изменилась. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 3. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Менее известной, но полезной может быть подстановка дескриптора файла с результатом выполнения команды. `<( CMD )` выполнит `CMD` и поместит вывод во временный файл и заменит `<()` именем этого файла. Это полезно, когда команды ожидают, что значения будут переданы через файл, а не STDIN. Например, `diff <(ls foo) <(ls bar)` покажет различия между файлами в каталогах foo и bar. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ diff <(cat buylist) <(cat bought) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 1,3c1,5 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | < salad |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | < milk |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | < bread |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | --- |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | > icecream |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | > cheese |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | > cake |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | > lays |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | > beer |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 4. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Попробуйте условные выражения в скрипте в if конструкции: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ cat 4.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | if [[ true && true ]] |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | then |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         echo "True" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | fi |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | if [[ true || false ]] |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | then |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         echo "True" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | fi |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ ./4.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | True |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | True |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 5. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Напишите скрипт, который проходит по всем файлам, переданным в качестве аргументов, и ищет в них строку hello. Перенаправьте grep `STDOUT` и `STDERR` в специальный файл `/dev/null`. Для каждого файла в if создайте файл с содержимым `hello`, если `grep` завершился с ошибкой.   |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ cat 5.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | for f in $@; do |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         grep hello $f 2> /dev/null 1> /dev/null |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         if [[ $? -ne 0 ]] |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         then |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 echo "hello" > $f |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         fi |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ ./5.sh /tmp/one /tmp/two /tmp/three |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /tmp/one has no hello in it. correcting. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /tmp/two has no hello in it. correcting. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /tmp/three has no hello in it. correcting. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ grep hello /tmp/* 2> /dev/null  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /tmp/one:hello |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /tmp/three:hello |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /tmp/two:hello |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 6. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Установите пакет shellcheck и проверьте написанный вами ранее скрипт одноименной командой. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ shellcheck 5.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | In 5.sh line 1: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | for f in $@; do |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ^-- SC2148 (error): Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |          ^-- SC2068 (error): Double quote array expansions to avoid re-splitting elements. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | In 5.sh line 2: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         grep hello $f 2> /dev/null 1> /dev/null |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                    ^-- SC2086 (info): Double quote to prevent globbing and word splitting. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Did you mean:  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         grep hello "$f" 2> /dev/null 1> /dev/null |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | In 5.sh line 3: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         if [[ $? -ne 0 ]] |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |               ^-- SC2181 (style): Check exit code directly with e.g. 'if ! mycmd;', not indirectly with $?. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | In 5.sh line 5: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 echo $f has no hello in it. correcting. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                      ^-- SC2086 (info): Double quote to prevent globbing and word splitting. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Did you mean:  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 echo "$f" has no hello in it. correcting. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | In 5.sh line 6: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 echo "hello" > $f |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                                ^-- SC2086 (info): Double quote to prevent globbing and word splitting. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Did you mean:  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 echo "hello" > "$f" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | For more information: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   https://www.shellcheck.net/wiki/SC2068 -- Double quote array expansions to ... |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   https://www.shellcheck.net/wiki/SC2148 -- Tips depend on target shell and y... |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 7. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Напишите скрипт, который выполняет следующий код: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ cat ./7.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | #!/usr/bin/env python |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import sys |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | for arg in reversed(sys.argv[1:]): |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         print(arg) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ ./7.sh 1 2 3 4 5 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 5 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 4 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 3 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 2 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 8. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Функции выполняются в текущей среде оболочке, тогда как скрипты выполняются в своем собственном процессе.  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Проверьте, что функции могут изменять переменные среды, например, изменить текущий каталог, тогда как скрипт не может. Напишите скрипт, в котором инициализируются две переменные `A` и `B`. Перед одной из них указывается `export `. Выполните скрипт и посмотрите на выдачу команды `env`. Выполните файл командой source (source --help). Какие переменные экспортировались в оболочку?  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ cat 8.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | #!/bin/bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | A=1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | export B=2 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ ./8.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ env | grep -E "^A|B" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ source ./8.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ env | grep -E "^A|B" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | B=2 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 9. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Напишите сценарий bash, который запускает следующий сценарий до тех пор, пока он не завершится аварийно, записывает стандартный вывод и потоки ошибок в файлы и печатает все в конце.  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ cat random_bug_script.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | #!/usr/bin/env bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | n=$(( RANDOM % 100 )) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | echo $n |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | if [[ n -eq 42 ]]; then |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   echo "Something went wrong" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   >&2 echo "The error was using magic numbers" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   exit 1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | fi |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | echo "Everything went according to plan" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ cat repeat_until_error.sh |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | #!/bin/bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | echo "" > output.log |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | echo "" > error.log |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | i=0 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | while true; do |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   bash $1 2>> error.log 1>> output.log |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   if [[ $? -ne 0 ]]; then |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         echo Took "$i" iterations to get an error. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         echo "\noutput.log" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         cat output.log |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         echo "\nerror.log" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         cat error.log |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         break |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   fi |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   i=$((i+1)) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | done |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ ./repeat_until_error.sh ./random_bug_script.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Took 37 iterations to get an error. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | output.log |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Everything went according to plan |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Something went wrong |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | error.log |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | The error was using magic numbers |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Бонусный балл, за то, что вы можете сообщить, сколько запусков потребовалось для сбоя сценария. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | stud@stud15:~$ cat mean.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | #!/bin/bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | script=$1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | iters=$2 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | sum=0 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | for i in $(seq $iters) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | do |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         failedoniter=$(bash $script | grep 'Took' | awk '{ print $2; }') |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         sum=$((sum+failedoniter)) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | done |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | echo Done $iters trials. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | echo Mean number of steps until error: $(( sum / iters )) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | $ time ./mean.sh "./repeat_until_error.sh ./random_bug_script.sh" 1000 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Done 1000 trials. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Mean number of steps until error: 99 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | real    2m6,924s |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | user    1m36,964s |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | sys     0m29,409s |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ### 10. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Напишите скрипт, который:  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | - создаёт пользователя на двух машинах, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | - кроме домашней директории заводит папку для пользователя в `/ceph/` с нужными правами,  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | - создаёт ссылку в домашней директории на директорию в `/ceph/`,  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | - ограничивает доступ к домашней папке всем, кроме владельца,  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | - генерирует пользователям ключи ed25519, рассылает по машинам и регистрирует ключи для беспарольного перемещения пользователя между машинами.  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Настройка беспарольного перехода для суперпользователя между машинами |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~# cat .ssh/config  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Host w001 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         HostName 10.160.179.25 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Host w002 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         HostName 10.160.179.55 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~# hostname -i |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 10.160.179.25 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15-v1:~# hostname -i |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 10.160.179.55 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15-v1:~# cat /etc/ssh/sshd_config | grep PermitRootLogin  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | PermitRootLogin yes |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15-v1:~# systemctl restart sshd |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~# ssh-copy-id w002 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@10.160.179.55's password:  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Number of key(s) added: 1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Now try logging into the machine, with:   "ssh 'w002'" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | and check to make sure that only the key(s) you wanted were added. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15-v1:~# cat /etc/ssh/sshd_config | grep PermitRootLogin  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | PermitRootLogin prohibit-password |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15-v1:~# systemctl restart sshd |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~# ssh-copy-id w001 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | The authenticity of host '10.160.179.25 (10.160.179.25)' can't be established. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ECDSA key fingerprint is SHA256:3K1vZ3p2zlZpJabnqm3ZqwUPkmxxnIHiqYplqRLEku8. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Are you sure you want to continue connecting (yes/no/[fingerprint])? yes |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | /usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 (if you think this is a mistake, you may want to use -f option) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Скрипт  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ```bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~# cat create_user.sh  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | #!/bin/bash |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | help() { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         echo "Usage: ./create_user.sh file_with_node_ip_addresses user_name" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | if [[ $# < 2 ]] |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | then |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         help |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         exit |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | fi |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | nodes=$(cat $1) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | user=$2 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | create_user_and_link_command="useradd $user --create-home --shell=/bin/bash --key HOME_MODE=0700; \ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | mkdir -p /ceph/$user -m 0700; \ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | chown $user:$user /ceph/$user; \ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ln -s /ceph/$user /home/$user/ceph; \ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | chown $user:$user --no-dereference /home/$user/ceph" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | mkdir -p /root/users.ssh/$user/ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ssh-keygen -t ed25519 -N ""  -f "/root/users.ssh/$user/id_ed25519" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | sed --in-place "s/root/user/" "/root/users.ssh/$user/id_ed25519.pub" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | cat /root/users.ssh/$user/id_ed25519.pub > /root/users.ssh/$user/authorized_keys |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | echo "" > /root/users.ssh/$user/known_hosts |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | for node in $nodes; do |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   ssh-keyscan -H "$node" >> /root/users.ssh/$user/known_hosts |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | done |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | for node in $nodes; do |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   echo "$node" "$create_user_and_link_command" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   ssh "$node" "$create_user_and_link_command" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   scp -r /root/users.ssh/$user/ $node:/home/$user/.ssh |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   ssh "$node" "chown -R $user:$user /home/$user/.ssh && chmod 0700 /home/$user/.ssh/" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | done |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~# cat nodes |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 10.160.179.25 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 10.160.179.55 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Проверка |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~# ./create_user.sh nodes user6 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Generating public/private ed25519 key pair. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Your identification has been saved in /root/users.ssh/user6/id_ed25519 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Your public key has been saved in /root/users.ssh/user6/id_ed25519.pub |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | The key fingerprint is: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | SHA256:FdusRTajDoM/7us/Tyf3VCmu/8kAWjWoYkerUGKggzg root@stud15 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | The key's randomart image is: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | +--[ED25519 256]--+ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | |   .      . =    | |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | |o . .  .   O.o   | |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | |Eo   o..o.+.+o   | |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | | .. . o..=oo. . .| |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | |     . oS+oo . ..| |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | |      o.+.o o . .| |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | |       ...  ooo .| |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | |       .  ...+oo.| |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | |       .+o.+o..+.| |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | +----[SHA256]-----+ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.25:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.25:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.25:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.25:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.25:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.55:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.55:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.55:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.55:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | # 10.160.179.55:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 10.160.179.25 useradd user6 --create-home --shell=/bin/bash --key HOME_MODE=0700; mkdir -p /ceph/user6 -m 0700; chown user6:user6 /ceph/user6; ln -s /ceph/user6 /home/user6/ceph; chown user6:user6 --no-dereference /home/user6/ceph |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | id_ed25519.pub                                                                                                   100%   93   484.7KB/s   00:00     |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | id_ed25519                                                                                                       100%  399     2.8MB/s   00:00     |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | authorized_keys                                                                                                  100%   93   746.1KB/s   00:00     |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | known_hosts                                                                                                      100% 1957    12.5MB/s   00:00     |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 10.160.179.55 useradd user6 --create-home --shell=/bin/bash --key HOME_MODE=0700; mkdir -p /ceph/user6 -m 0700; chown user6:user6 /ceph/user6; ln -s /ceph/user6 /home/user6/ceph; chown user6:user6 --no-dereference /home/user6/ceph |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | id_ed25519.pub                                                                                                   100%   93   434.1KB/s   00:00     |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | id_ed25519                                                                                                       100%  399     2.4MB/s   00:00     |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | authorized_keys                                                                                                  100%   93   625.8KB/s   00:00     |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | known_hosts                                                                                                      100% 1957    10.4MB/s   00:00     |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~#  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | user6@stud15:~$ ssh 10.160.179.55 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Linux stud15-1v15 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13) x86_64 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | The programs included with the Debian GNU/Linux system are free software; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | the exact distribution terms for each program are described in the |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | individual files in /usr/share/doc/*/copyright. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | permitted by applicable law. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | user6@stud15-1v15:~$ ssh 10.160.179.25 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Linux stud15 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | The programs included with the Debian GNU/Linux system are free software; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | the exact distribution terms for each program are described in the |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | individual files in /usr/share/doc/*/copyright. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | permitted by applicable law. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | user6@stud15:~$  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~# ls -la /home/user6/ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | total 28 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwx------  3 user6 user6 4096 сен 15 11:49 . |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwxr-xr-x 13 root  root  4096 сен 15 11:47 .. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | -rw-------  1 user6 user6   18 сен 15 11:49 .bash_history |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | -rw-r--r--  1 user6 user6  220 мар 27 22:40 .bash_logout |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | -rw-r--r--  1 user6 user6 3526 мар 27 22:40 .bashrc |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | lrwxrwxrwx  1 user6 user6   11 сен 15 11:47 ceph -> /ceph/user6 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | -rw-r--r--  1 user6 user6  807 мар 27 22:40 .profile |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwx------  2 user6 user6 4096 сен 15 11:47 .ssh |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | root@stud15:~# ls -la /ceph |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | total 32 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwxr-xr-x  8 root  root  4096 сен 15 11:47 . |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwxr-xr-x 21 root  root  4096 сен 15 11:12 .. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwx------  2 user1 user1 4096 сен 15 11:14 user1 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwx------  2 user2 user2 4096 сен 15 11:25 user2 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwx------  2 user3 user3 4096 сен 15 11:38 user3 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwx------  2 user4 user4 4096 сен 15 11:42 user4 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwx------  2 user5 user5 4096 сен 15 11:44 user5 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | drwx------  2 user6 user6 4096 сен 15 11:47 user6 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  |