add homework 4.3 question 2 script

This commit is contained in:
2022-04-13 11:24:46 +07:00
parent 7f1c39c306
commit d08d7fbd23
3 changed files with 93 additions and 2 deletions

2
src/homework/04-script/4.3/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
hosts.json
hosts.yaml

View 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()

View File

@@ -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 файле.
#### Ваш скрипт: