Как проверить статус удалённой машины (online/offline) с помощью python?

Нашел такое решение requests:

def status():   
 try:
    response = requests.get("http://myadress.com")
    response.raise_for_status()
 except HTTPError as http_err:
    return 1
 except Exception as err:
    return 1
 else:
    return 0

Прекрасно работает, но только с URL. А вот так уже не работает, ничего не возвращает, скрипт просто висит:

def status():   
 try:
    response = requests.get("http://84.120.120.101:8181")
    response.raise_for_status()
 except HTTPError as http_err:
    return 1
 except Exception as err:
    return 1
 else:
    return 0

Мне не принципиально использовать этот код, просто нужно проверить статус удаленной машины.

P.S. Вся проблема в пробросе порта, без проброса Все варианты работают!


Ответы (1 шт):

Автор решения: D. Violet
import os

hostname = "10.10.10.11"
response = os.system("ping -n 1 " + hostname)

if response == 0:
    print(hostname, 'is up!')
else:
    print(hostname, 'is down!')

Если вы используете этот скрипт в unix / Linux, замените ключ -n на -c!

либо

import socket

def isOpen(ip,port):
   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   try:
      s.connect((ip, int(port)))
      s.shutdown(2)
      return True
   except:
      return False
→ Ссылка