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
|
||||
|
||||
В прошлый рабочий день мы создавали скрипт, позволяющий опрашивать веб-сервисы и получать их 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