mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-26 07:42:36 +03:00
homework 4.1: add all questions
This commit is contained in:
2
src/homework/4.1/.gitignore
vendored
Normal file
2
src/homework/4.1/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/curl.log
|
||||||
|
/error.log
|
||||||
9
src/homework/4.1/q1_script.sh
Executable file
9
src/homework/4.1/q1_script.sh
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
a=1
|
||||||
|
b=2
|
||||||
|
c=a+b
|
||||||
|
d=$a+$b
|
||||||
|
e=$(($a+$b))
|
||||||
|
|
||||||
|
echo a=$a b=$b c=$c d=$d e=$e
|
||||||
13
src/homework/4.1/q2_script.sh
Executable file
13
src/homework/4.1/q2_script.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
while ((1==1))
|
||||||
|
do
|
||||||
|
curl https://localhost:4757
|
||||||
|
|
||||||
|
if (($? != 0))
|
||||||
|
then
|
||||||
|
date >> curl.log;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done
|
||||||
14
src/homework/4.1/q3_script.sh
Executable file
14
src/homework/4.1/q3_script.sh
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
serverPort=80
|
||||||
|
servers=("192.168.0.1" "173.194.222.113" "87.250.250.242")
|
||||||
|
|
||||||
|
for i in {1..5}
|
||||||
|
do
|
||||||
|
for server in ${servers[@]}
|
||||||
|
do
|
||||||
|
curl --connect-timeout 3 --max-time 5 http://${server}:${serverPort}
|
||||||
|
curlResult=$?
|
||||||
|
echo "$(date) curl result for ${server} is ${curlResult}" >> curl.log;
|
||||||
|
done
|
||||||
|
done
|
||||||
27
src/homework/4.1/q4_script.sh
Executable file
27
src/homework/4.1/q4_script.sh
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
serverPort=80
|
||||||
|
servers=("192.168.0.1" "173.194.222.113" "87.250.250.242")
|
||||||
|
|
||||||
|
for i in {1..5}
|
||||||
|
do
|
||||||
|
isError=0
|
||||||
|
for server in ${servers[@]}
|
||||||
|
do
|
||||||
|
curl --connect-timeout 3 --max-time 5 http://${server}:${serverPort}
|
||||||
|
curlResult=$?
|
||||||
|
echo "$(date) curl result for ${server} is ${curlResult}" >> curl.log;
|
||||||
|
if (($curlResult!=0))
|
||||||
|
then
|
||||||
|
echo ${server} > error.log
|
||||||
|
isError=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if (($isError!=0))
|
||||||
|
then
|
||||||
|
echo "going to break"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
1
src/homework/4.1/q5_example_bad_lenght.txt
Normal file
1
src/homework/4.1/q5_example_bad_lenght.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[04-script-01-bash] сломал хук слишком длинный комментарий
|
||||||
1
src/homework/4.1/q5_example_bad_pattern.txt
Normal file
1
src/homework/4.1/q5_example_bad_pattern.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
сломал хук
|
||||||
1
src/homework/4.1/q5_example_good.txt
Normal file
1
src/homework/4.1/q5_example_good.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[04-script-01-bash] сломал хук
|
||||||
19
src/homework/4.1/q5_script.sh
Executable file
19
src/homework/4.1/q5_script.sh
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
MSG="$1"
|
||||||
|
|
||||||
|
if ! grep -qE "^\[.+\]\s.+\n{0,1}$" "$MSG"
|
||||||
|
then
|
||||||
|
cat "$MSG"
|
||||||
|
echo $'\nYour commit message must match the pattern'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
msgStr=$(cat $MSG)
|
||||||
|
msgLen=${#msgStr}
|
||||||
|
if ((msgLen>50))
|
||||||
|
then
|
||||||
|
cat "$MSG"
|
||||||
|
echo $'\nYour commit message is too long'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
## Обязательная задача 1
|
## Обязательная задача 1
|
||||||
|
|
||||||
Есть скрипт:
|
Есть [скрипт](./q1_script.sh):
|
||||||
```bash
|
```shell
|
||||||
a=1
|
a=1
|
||||||
b=2
|
b=2
|
||||||
c=a+b
|
c=a+b
|
||||||
@@ -17,15 +17,15 @@ e=$(($a+$b))
|
|||||||
Какие значения переменным c,d,e будут присвоены? Почему?
|
Какие значения переменным c,d,e будут присвоены? Почему?
|
||||||
|
|
||||||
| Переменная | Значение | Обоснование |
|
| Переменная | Значение | Обоснование |
|
||||||
| ------------- | ------------- | ------------- |
|
|------------|----------|----------------------------------------------------------------------------------------------------------------------|
|
||||||
| `c` | ??? | ??? |
|
| `c` | "a+b" | Присвоение обычной строки "a+b". |
|
||||||
| `d` | ??? | ??? |
|
| `d` | "1+2" | Конкатенация значений переменных a и b с символом "+", так как не заданы условия для произведения операции сложения. |
|
||||||
| `e` | ??? | ??? |
|
| `e` | "3" | Сложение переменных a и b используя арифметику целых чисел. |
|
||||||
|
|
||||||
|
|
||||||
## Обязательная задача 2
|
## Обязательная задача 2
|
||||||
На нашем локальном сервере упал сервис и мы написали скрипт, который постоянно проверяет его доступность, записывая дату проверок до тех пор, пока сервис не станет доступным (после чего скрипт должен завершиться). В скрипте допущена ошибка, из-за которой выполнение не может завершиться, при этом место на Жёстком Диске постоянно уменьшается. Что необходимо сделать, чтобы его исправить:
|
На нашем локальном сервере упал сервис и мы написали скрипт, который постоянно проверяет его доступность, записывая дату проверок до тех пор, пока сервис не станет доступным (после чего скрипт должен завершиться). В скрипте допущена ошибка, из-за которой выполнение не может завершиться, при этом место на Жёстком Диске постоянно уменьшается. Что необходимо сделать, чтобы его исправить:
|
||||||
```bash
|
```shell
|
||||||
while ((1==1)
|
while ((1==1)
|
||||||
do
|
do
|
||||||
curl https://localhost:4757
|
curl https://localhost:4757
|
||||||
@@ -37,31 +37,124 @@ done
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Ваш скрипт:
|
### Ваш скрипт:
|
||||||
```bash
|
|
||||||
???
|
[script](./q2_script.sh)
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
while ((1==1))
|
||||||
|
do
|
||||||
|
curl https://localhost:4757
|
||||||
|
|
||||||
|
if (($? != 0))
|
||||||
|
then
|
||||||
|
date >> curl.log;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
## Обязательная задача 3
|
## Обязательная задача 3
|
||||||
Необходимо написать скрипт, который проверяет доступность трёх IP: `192.168.0.1`, `173.194.222.113`, `87.250.250.242` по `80` порту и записывает результат в файл `log`. Проверять доступность необходимо пять раз для каждого узла.
|
Необходимо написать скрипт, который проверяет доступность трёх IP: `192.168.0.1`, `173.194.222.113`, `87.250.250.242` по `80` порту и записывает результат в файл `log`. Проверять доступность необходимо пять раз для каждого узла.
|
||||||
|
|
||||||
### Ваш скрипт:
|
### Ваш скрипт:
|
||||||
```bash
|
|
||||||
???
|
[script](./q3_script.sh)
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
serverPort=80
|
||||||
|
servers=("192.168.0.1" "173.194.222.113" "87.250.250.242")
|
||||||
|
|
||||||
|
for i in {1..5}
|
||||||
|
do
|
||||||
|
for server in ${servers[@]}
|
||||||
|
do
|
||||||
|
curl --connect-timeout 3 --max-time 5 http://${server}:${serverPort}
|
||||||
|
curlResult=$?
|
||||||
|
echo "$(date) curl result for ${server} is ${curlResult}" >> curl.log;
|
||||||
|
done
|
||||||
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
## Обязательная задача 4
|
## Обязательная задача 4
|
||||||
Необходимо дописать скрипт из предыдущего задания так, чтобы он выполнялся до тех пор, пока один из узлов не окажется недоступным. Если любой из узлов недоступен - IP этого узла пишется в файл error, скрипт прерывается.
|
Необходимо дописать скрипт из предыдущего задания так, чтобы он выполнялся до тех пор, пока один из узлов не окажется недоступным. Если любой из узлов недоступен - IP этого узла пишется в файл error, скрипт прерывается.
|
||||||
|
|
||||||
### Ваш скрипт:
|
### Ваш скрипт:
|
||||||
```bash
|
|
||||||
???
|
[script](./q4_script.sh)
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
serverPort=80
|
||||||
|
servers=("192.168.0.1" "173.194.222.113" "87.250.250.242")
|
||||||
|
|
||||||
|
for i in {1..5}
|
||||||
|
do
|
||||||
|
isError=0
|
||||||
|
for server in ${servers[@]}
|
||||||
|
do
|
||||||
|
curl --connect-timeout 3 --max-time 5 http://${server}:${serverPort}
|
||||||
|
curlResult=$?
|
||||||
|
echo "$(date) curl result for ${server} is ${curlResult}" >> curl.log;
|
||||||
|
if (($curlResult!=0))
|
||||||
|
then
|
||||||
|
echo ${server} > error.log
|
||||||
|
isError=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if (($isError!=0))
|
||||||
|
then
|
||||||
|
echo "going to break"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
## Дополнительное задание (со звездочкой*) - необязательно к выполнению
|
## Дополнительное задание (со звездочкой*) - необязательно к выполнению
|
||||||
|
|
||||||
Мы хотим, чтобы у нас были красивые сообщения для коммитов в репозиторий. Для этого нужно написать локальный хук для git, который будет проверять, что сообщение в коммите содержит код текущего задания в квадратных скобках и количество символов в сообщении не превышает 30. Пример сообщения: \[04-script-01-bash\] сломал хук.
|
Мы хотим, чтобы у нас были красивые сообщения для коммитов в репозиторий. Для этого нужно написать локальный хук для git, который будет проверять,
|
||||||
|
что сообщение в коммите содержит код текущего задания в квадратных скобках и количество символов в сообщении не превышает 30.
|
||||||
|
Пример сообщения: \[04-script-01-bash\] сломал хук.
|
||||||
|
|
||||||
### Ваш скрипт:
|
### Ваш скрипт:
|
||||||
```bash
|
|
||||||
???
|
[script](./q5_script.sh)
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
MSG="$1"
|
||||||
|
|
||||||
|
if ! grep -qE "^\[.+\]\s.+\n{0,1}$" "$MSG"
|
||||||
|
then
|
||||||
|
cat "$MSG"
|
||||||
|
echo $'\nYour commit message must match the pattern'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
msgStr=$(cat $MSG)
|
||||||
|
msgLen=${#msgStr}
|
||||||
|
if ((msgLen>50))
|
||||||
|
then
|
||||||
|
cat "$MSG"
|
||||||
|
echo $'\nYour commit message is too long'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
Протестировал запуск скрипта следующими способами:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# несоответствие паттерну
|
||||||
|
./q5_script.sh q5_example_bad_pattern.txt
|
||||||
|
# несоответствие длины
|
||||||
|
./q5_script.sh q5_example_bad_lenght.txt
|
||||||
|
# корректное сообщение
|
||||||
|
./q5_script.sh q5_example_good.txt
|
||||||
```
|
```
|
||||||
Reference in New Issue
Block a user