Я попытался пропинговать несколько серверов, используя имя хоста, без дополнительного файла .txt. я вот так пытаюсь..
import os
for i in range(1,2): #`for i in range(1,2):
hostname1= "google.con" # example
hostname2 = "google.com" # example
response = os.system("ping -n 1 " + hostname1)
response = os.system("ping -n 1 " + hostname2)
а потом проверь ответ...
if response == 0:
flag = 'OK'
else:
flag = 'KO'
if flag == 'OK':
print('all hosts are up!')
else:
print('something is wrong')
Я новичок в Python и PyCharm.
Н.Калян
вы не можете сохранить два результата в одном response
- вы должны сначала запустить первый хост и проверить его результат, а затем запустить второй хост и проверить его результат. А если вы будете держать хост в списке и использовать for
-цикл, то вам будет еще проще
Почему вы инициируете имена хостов в цикле? Цикл в диапазоне (1,2) будет выполнен только один раз.
Ваш код не имеет смысла. Особенно твоя for
-петля
Вы должны держать хосты в списке и использовать for
-цикл для работы с каждым хостом отдельно.
Вы не можете назначать response
много раз, потому что это удалит предыдущее значение, и вы проверите только последний результат.
import os
# --- before loop ---
hostnames = ["google.con", "google.com", "stackoverflow.com"]
all_ok = True # at start I assume that all hosts are OK
# --- loop ---
for host in hostnames:
response = os.system("ping -n 1 " + host)
if response != 0:
all_ok = False # one of host is down
# don't use `else: all_ok = True`
# --- after loop ---
if all_ok:
print('all hosts are up!')
else:
print('something is wrong')
Подобным образом вы можете подсчитать хосты с проблемами
import os
# --- before loop ---
hostnames = ["google.con", "google.com", "stackoverflow.com"]
count = 0
# --- loop ---
for host in hostnames:
response = os.system("ping -n 1 " + host)
if response != 0:
count += 1 # one of host is down
# --- after loop ---
if count == 0:
print('all hosts are up!')
else:
print('number of down hosts:', count)
или вы можете использовать список хостов с проблемами
import os
# --- before loop ---
hostnames = ["google.con", "google.com", "stackoverflow.com"]
problems = [] # hosts with problems
# --- loop ---
for host in hostnames:
response = os.system("ping -n 1 " + host)
if response != 0:
problems.append(host) # one of host is down
# --- after loop ---
if not problems: # if len(problems) == 0:
print('all hosts are up!')
else:
print('number of downed hosts:', len(problems))
print('hosts:', problems)
Спасибо, Фурас, за подробный материал. Большое спасибо.
вместо
hostname1
,hostname2
вы должны использовать списокhostnames = ["google.con", "google.com"]
и позжеfor host in hostnames: