在Python中Ping服务器而不具有根权限

在Python中Ping服务器而不具有根权限,python,python-2.7,jenkins,server,ping,Python,Python 2.7,Jenkins,Server,Ping,我有一个python脚本,只有在我的服务器可用的情况下才能工作。因此,在脚本开始之前,我想ping我的服务器,或者更确切地说是检查服务器的可用性 已经有一些相关的SO问题。 例如 这些答案很有效,但只适用于ROOT用户! 当我作为普通用户使用此解决方案时,会收到以下错误消息: ping: Lacking privilege for raw socket. 我需要一个解决方案,我可以作为一个普通用户这样做,因为我在jenkins作业中运行这个脚本,并且没有作为root用户运行的选项 如果

我有一个python脚本,只有在我的服务器可用的情况下才能工作。因此,在脚本开始之前,我想ping我的服务器,或者更确切地说是检查服务器的可用性

已经有一些相关的SO问题。 例如

  • 这些答案很有效,但只适用于ROOT用户! 当我作为普通用户使用此解决方案时,会收到以下错误消息:

    ping: Lacking privilege for raw socket.
    

    我需要一个解决方案,我可以作为一个普通用户这样做,因为我在jenkins作业中运行这个脚本,并且没有作为root用户运行的选项

    如果机器运行HTTP服务器,尝试执行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
    

    一定要打乒乓吗?一个HTTP GET或者一个简单的UDP数据包怎么样?嗯,我没想过。我想到的第一件事是ping,因此我试图用ping来解决它。它又短又简单。但如果您有其他解决方案,请将其写为下面的答案。您为什么要检查可用性?在使用某个已知端口上运行的服务之前,您是否尝试进行快速检查?如果是,我宁愿尝试连接到该服务,而不是尝试先ping它,然后连接到“真正的”服务。@SanjayT.Sharma否我检查可用性,因为我想知道服务器是启动还是关闭。我没有使用它的任何服务。
    ping: Lacking privilege for raw socket.
    
    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