Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Как сдавать задания

Вы уже изучили блок «Системы управления версиями», и начиная с этого занятия все ваши работы будут приниматься ссылками на .md-файлы, размещённые в вашем публичном репозитории.

Скопируйте в свой .md-файл содержимое этого файла; исходники можно посмотреть здесь. Заполните недостающие части документа решением задач (заменяйте ???, ОСТАЛЬНОЕ В ШАБЛОНЕ НЕ ТРОГАЙТЕ чтобы не сломать форматирование текста, подсветку синтаксиса и прочее, иначе можно отправиться на доработку) и отправляйте на проверку. Вместо логов можно вставить скриншоты по желани.


Домашнее задание к занятию "4.1. Командная оболочка Bash: Практические навыки"

Обязательная задача 1

Есть скрипт:

a=1
b=2
c=a+b
d=$a+$b
e=$(($a+$b))

Какие значения переменным c,d,e будут присвоены? Почему?

Переменная Значение Обоснование
c ab указан текст, а не переменная
d 1+2 переменная по умолчанию имеет тип "строка"
e 3 За счёт скобок была выполнена команда на выполнение арифметической операции с преобразованием к другому типу

Обязательная задача 2

На нашем локальном сервере упал сервис и мы написали скрипт, который постоянно проверяет его доступность, записывая дату проверок до тех пор, пока сервис не станет доступным (после чего скрипт должен завершиться). В скрипте допущена ошибка, из-за которой выполнение не может завершиться, при этом место на Жёстком Диске постоянно уменьшается. Что необходимо сделать, чтобы его исправить:

while ((1==1)
do
	curl https://localhost:4757
	if (($? != 0))
	then
		date >> curl.log
	fi
done

Ваш скрипт:

    while (( 1 == 1 ))
    do
        curl https://localhost:4757
        if (($? != 0))
        then
            date >> curl.log
        else exit
        fi
        sleep 5
    done

Необходимо написать скрипт, который проверяет доступность трёх IP: 192.168.0.1, 173.194.222.113, 87.250.250.242 по 80 порту и записывает результат в файл log. Проверять доступность необходимо пять раз для каждого узла.

Ваш скрипт:

hosts=(192.168.0.1 173.194.222.113 87.250.250.242)
timeout=5
for i in {1..5}
do
date >> log
    for host in ${hosts[@]}
    do
	curl -Is --connect-timeout $timeout $host:80 >/dev/null
        echo "    check" $host status=$? >> log
    done
done

Обязательная задача 3

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

Ваш скрипт:

hosts=(192.168.0.1 173.194.222.113 87.250.250.242)
timeout=5
res=0

while (($res == 0))
do
    for host in ${hosts[@]}
    do
	curl -Is --connect-timeout $timeout $host:80 >/dev/null
	res=$?
	if (($res != 0))
	then
	    echo "    ERROR on " $host status=$res >> error
	fi
    done
done