没有root权限的Python中的Ping服务器

时间:2016-11-22 15:33:57

标签: python python-2.7 jenkins server ping

我有一个python脚本,只有在我的服务器可用时才有效。因此,在脚本开始之前,我想ping我的服务器,或者更确切地检查服务器的可用性。

已经有一些相关的SO问题。 E.g

  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)
    
  3. 这些答案效果很好,但仅作为ROOT用户! 当我使用此解决方案作为普通用户时,我收到以下错误消息:

    ping: Lacking privilege for raw socket.
    

    我需要一个解决方案,我可以将其作为普通用户来实现,因为我在jenkins作业中运行此脚本并且无法以root身份运行。

1 个答案:

答案 0 :(得分: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