diff --git a/src/homework/04-script/4.3/.gitignore b/src/homework/04-script/4.3/.gitignore new file mode 100644 index 0000000..ce2037b --- /dev/null +++ b/src/homework/04-script/4.3/.gitignore @@ -0,0 +1,2 @@ +hosts.json +hosts.yaml diff --git a/src/homework/04-script/4.3/q2.py b/src/homework/04-script/4.3/q2.py new file mode 100755 index 0000000..a5d1a4a --- /dev/null +++ b/src/homework/04-script/4.3/q2.py @@ -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() diff --git a/src/homework/04-script/4.3/readme.md b/src/homework/04-script/4.3/readme.md index d6cde5e..276e5f8 100644 --- a/src/homework/04-script/4.3/readme.md +++ b/src/homework/04-script/4.3/readme.md @@ -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 файле. #### Ваш скрипт: