2016-11-22 14 views
1

У меня есть скрипт python, который работает только в том случае, если доступен мой сервер. Поэтому, прежде чем скрипт начнется, я хочу выполнить ping-сервер или, вернее, проверить доступность сервера.Ping-сервер в Python без прав root

Есть уже некоторые связанные вопросы.

например
  1. pyping module

    response = pyping.ping('Your IP') 
    if response.ret_code == 0: 
        print("reachable") 
    else: 
        print("unreachable") 
    
  2. ping process in python

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

Эти ответы работает хорошо, но только как пользователь ROOT! Когда я использовать эти решения в качестве обычного пользователя, я получаю следующее сообщение об ошибке:

ping: Lacking privilege for raw socket. 

Мне нужно решение, что я могу сделать это в качестве обычного пользователя, так как я запустить этот скрипт в работе Дженкинс и имеет а не возможность запускать как root.

+0

Должен ли быть пинг? Как насчет HTTP GET или простого пакета UDP? –

+0

Хм, я об этом не думал. Первое, что приходит мне в голову, это pinging, поэтому я пытаюсь решить это с помощью ping. И это коротко и просто. Но если у вас есть другое решение, вы можете написать его как ответ ниже, пожалуйста. – Oni1

+3

Почему вы пытаетесь проверить доступность? Вы пытаетесь выполнить быструю проверку, прежде чем пытаться использовать какой-либо сервис, запущенный на нем на известном порту? Если да, я предпочел бы попробовать подключиться к службе вместо того, чтобы пытаться выполнить ее сначала, а затем подключиться к «реальному» сервису. –

ответ

2

Будет пытаться выполнить HTTP-запрос HEAD, если на компьютере работает HTTP-сервер, достаточно?

from http.client import HTTPConnection # python3 

try: 
    conn = HTTPConnection(host, port, timeout) 
    conn.request("HEAD", "/") 
    conn.close() 

    # server must be up 
except: 
    # server is not up, do other stuff 

 Смежные вопросы

  • Нет связанных вопросов^_^