-
Notifications
You must be signed in to change notification settings - Fork 0
/
sendudp.py
48 lines (40 loc) · 1.67 KB
/
sendudp.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# coding: utf8
from __future__ import print_function
import json
import logging
import socket
from argparse import ArgumentParser
def send(data, host, port):
conn = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
conn.sendto(json.dumps(data).encode("utf-8"), (host, port))
conn.close()
def main(data, host, port, count):
logger.info("Будут отправлены данные {} на адрес {}:{}".format(data, host, port))
for i in range(count):
if data:
try:
send(data, host, port)
except ValueError:
logger.exception("Ошибка при преобразовании json {}".format(data))
else:
send(str(i), host, port)
logger.info("данные отправлены")
if __name__ == "__main__":
# утилита для отправки пакетов (для тестов)
logging.basicConfig(format="%(asctime)s | %(name)s | %(levelname)s | %(message)s")
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
parser = ArgumentParser()
parser.add_argument("--host", "-a", required=True)
parser.add_argument("--port", "-p", required=True, type=int)
parser.add_argument("--data", "-d", default=None)
parser.add_argument("--count", "-c", type=int, default=1)
parser.add_argument("--filename", "-f", default=None)
args, unknown = parser.parse_known_args()
if args.filename:
with open(args.filename, "r") as fp:
data = json.load(fp)
logger.info("Загружен файл с данными: {}".format(data))
else:
data = args.data
main(data, args.host, args.port, args.count)