mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
add homework 4.3 question 2 script
This commit is contained in:
2
src/homework/04-script/4.3/.gitignore
vendored
Normal file
2
src/homework/04-script/4.3/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
hosts.json
|
||||||
|
hosts.yaml
|
||||||
65
src/homework/04-script/4.3/q2.py
Executable file
65
src/homework/04-script/4.3/q2.py
Executable file
@@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import json
|
||||||
|
import io
|
||||||
|
import os
|
||||||
|
import socket
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
hosts_list = {
|
||||||
|
"drive.google.com",
|
||||||
|
"mail.google.com",
|
||||||
|
"google.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
filename_json = 'hosts.json'
|
||||||
|
filename_yaml = 'hosts.yaml'
|
||||||
|
|
||||||
|
if not os.path.exists(filename_json):
|
||||||
|
os.mknod(filename_json)
|
||||||
|
|
||||||
|
if not os.path.exists(filename_yaml):
|
||||||
|
os.mknod(filename_yaml)
|
||||||
|
|
||||||
|
file_json = None
|
||||||
|
file_yaml = None
|
||||||
|
|
||||||
|
try:
|
||||||
|
file_json = open(filename_json, 'r+')
|
||||||
|
file_yaml = open(filename_yaml, 'r+')
|
||||||
|
|
||||||
|
json_str = file_json.read()
|
||||||
|
try:
|
||||||
|
json_obj = json.load(io.StringIO(json_str))
|
||||||
|
except BaseException as err:
|
||||||
|
json_obj = dict({})
|
||||||
|
print('error: {}'.format(err))
|
||||||
|
|
||||||
|
for hostname in hosts_list:
|
||||||
|
ip_addr = socket.gethostbyname(hostname)
|
||||||
|
prev_ip_addr = json_obj.get(hostname)
|
||||||
|
|
||||||
|
if prev_ip_addr is None or prev_ip_addr == '':
|
||||||
|
prev_ip_addr = ip_addr
|
||||||
|
|
||||||
|
print('{} - {}'.format(hostname, ip_addr))
|
||||||
|
if ip_addr != prev_ip_addr:
|
||||||
|
print('[ERROR] {} IP mismatch: {} {}'.format(hostname, ip_addr, prev_ip_addr))
|
||||||
|
|
||||||
|
json_obj[hostname] = ip_addr
|
||||||
|
|
||||||
|
file_json.truncate(0)
|
||||||
|
file_json.seek(0)
|
||||||
|
file_json.write(json.dumps(json_obj))
|
||||||
|
|
||||||
|
file_yaml.truncate(0)
|
||||||
|
file_yaml.seek(0)
|
||||||
|
file_yaml.write(yaml.dump(json_obj))
|
||||||
|
except BaseException as err:
|
||||||
|
print('error {}'.format(err))
|
||||||
|
finally:
|
||||||
|
if file_json is not None:
|
||||||
|
file_json.close()
|
||||||
|
|
||||||
|
if file_yaml is not None:
|
||||||
|
file_yaml.close()
|
||||||
@@ -22,11 +22,35 @@
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Нужно найти и исправить все ошибки, которые допускает наш сервис
|
Нужно найти и исправить все ошибки, которые допускает наш сервис.
|
||||||
|
|
||||||
|
Решение:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"info": "Sample JSON output from our service\t",
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "first",
|
||||||
|
"type": "server",
|
||||||
|
"ip": 7175
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "second",
|
||||||
|
"type": "proxy",
|
||||||
|
"ip": "71.78.22.43"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Обязательная задача 2
|
### Обязательная задача 2
|
||||||
|
|
||||||
В прошлый рабочий день мы создавали скрипт, позволяющий опрашивать веб-сервисы и получать их IP. К уже реализованному функционалу нам нужно добавить возможность записи JSON и YAML файлов, описывающих наши сервисы. Формат записи JSON по одному сервису: `{ "имя сервиса" : "его IP"}`. Формат записи YAML по одному сервису: `- имя сервиса: его IP`. Если в момент исполнения скрипта меняется IP у сервиса - он должен так же поменяться в yml и json файле.
|
В прошлый рабочий день мы создавали скрипт, позволяющий опрашивать веб-сервисы и получать их IP.
|
||||||
|
К уже реализованному функционалу нам нужно добавить возможность записи JSON и YAML файлов, описывающих наши сервисы.
|
||||||
|
Формат записи JSON по одному сервису: `{ "имя сервиса" : "его IP"}`.
|
||||||
|
Формат записи YAML по одному сервису: `- имя сервиса: его IP`.
|
||||||
|
Если в момент исполнения скрипта меняется IP у сервиса - он должен так же поменяться в yml и json файле.
|
||||||
|
|
||||||
#### Ваш скрипт:
|
#### Ваш скрипт:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user