· 7 years ago · Dec 19, 2018, 08:36 AM
1import os
2import multiprocessing
3import subprocess
4
5
6devices = ['crimsonwolf.ru', 'msk.telki4.com', '8.8.8.8', 'yandex.ru']
7
8DNULL = open(os.devnull, 'w')
9
10spisok = [] # ÑпиÑок в который Ñ Ñ…Ð¾Ñ‡Ñƒ добавить поеботню
11
12
13def ping(host, mp_queue):
14 response = subprocess.call(["ping", "-n", "1", host], stdout=DNULL)
15 if response == 0:
16 print(host, 'is up!')
17 result = True
18 spisok.append(result) # добовление поеботни
19 else:
20 print(host, 'is down!')
21 result = False
22 spisok.append(result) # добовление поеботни
23 mp_queue.put((result, host))
24
25
26def worker(devices):
27 mp_queue = multiprocessing.Queue()
28 processes = []
29 for device in devices:
30 p = multiprocessing.Process(target=ping, args=(device, mp_queue))
31 processes.append(p)
32 p.start()
33 for p in processes:
34 p.join()
35 results = {True: [], False: []}
36 for p in processes:
37 key, value = mp_queue.get()
38 results[key] += [value]
39 return results[True], results[False]
40
41
42if __name__ == '__main__':
43 success, failed = worker(devices)
44 print('\n', spisok, '- a tyt net nixya =(')