Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—尝试编写测试http接口的脚本_Python_Testing_Curl - Fatal编程技术网

Python—尝试编写测试http接口的脚本

Python—尝试编写测试http接口的脚本,python,testing,curl,Python,Testing,Curl,呃, 我仍在掌握Python的基础知识 我目前的需求是开发一个Python脚本,用于测试多个设备(例如,您可能需要进入的设备)基于web的界面的可用性http://192.168.0.2:9876 通过网络浏览器,这不必过于复杂 我正在尝试从简单的bash curl命令转换,因为最初我在bash脚本中有如下内容: date=`date +"%Y-%m-%d_%H-%M-%S-%N"` curl -s --connect-timeout 1 ${ip} -o /dev/null

呃,

我仍在掌握Python的基础知识

我目前的需求是开发一个Python脚本,用于测试多个设备(例如,您可能需要进入的设备)基于web的界面的可用性http://192.168.0.2:9876 通过网络浏览器,这不必过于复杂

我正在尝试从简单的bash curl命令转换,因为最初我在bash脚本中有如下内容:

    date=`date +"%Y-%m-%d_%H-%M-%S-%N"`
    curl -s --connect-timeout 1 ${ip} -o /dev/null
    test=$?
    if [[ $test == 0 ]] ;then
            echo "${date}:webping - Web Page Up for ${ip}" >> $log
    else
            echo "${date}:webping - Web Page Down for ${ip}" >> $log
    fi
这对最初的概念很有用,但我希望在python中有类似的东西。输出可以在合理范围内变化。。。任何人都知道从哪里开始

另外,我在这里看到了一些其他问题,但它们似乎给出了误报,接口被关闭,即我停止了服务,它仍然给出了200的状态代码

编辑:下面是我尝试过的代码

for url in ["http://www.google.co.uk", "http://192.168.0.2:8000"]:
    try:
            connection = urllib2.urlopen(url)
            print connection.getcode()
            connection.close()
    except urllib2.HTTPError, e:
            print "none"
更正:我得到以下结果

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
  File "C:\Python27\lib\urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "C:\Python27\lib\urllib2.py", line 391, in open
    response = self._open(req, data)
  File "C:\Python27\lib\urllib2.py", line 409, in _open
    '_open', req)
  File "C:\Python27\lib\urllib2.py", line 369, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 1173, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "C:\Python27\lib\urllib2.py", line 1148, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 10061] No connection could be made because the target machine actively refused it>
我不希望看到python错误输出

提前感谢

请看一看Python模块,它为您提供了友好的API所需的工具。在这种情况下,您可以按照以下思路进行操作:

import requests
...
try:
  r = requests.get(url, timeout=1)
  ok = (r.status_code // 100) == 2
except:
  ok = False

# now use the value of ok

尽管我不知道我在那里使用的特定测试是否成功意味着2xx响应正是您想要的。

发布您尝试过的Python代码、运行时得到的结果以及您的期望。将此脚本转换为语言X,这对SO来说不是一个真正的问题。@jordanm,很抱歉,请参阅上面的编辑以获取代码。当web界面不可用时,即由于服务已停止或出现故障/错误而关闭时,我希望restult会有所不同。如果端口上没有接受连接的内容,则应引发异常。在我的机器上快速测试抛出:urllib2.URLError:。您没有捕获urllib2.URLError,它不是在抛出异常吗?而且它不必重定向到日志,STDOUT就可以了example@jordanm,当我输入一个假地址/端口组合时,它确实会返回一个类似于您的错误,但当我终止该服务时,它仍然显示我希望在多个系统上使用它,我可以在不安装的情况下使用请求模块吗。。。正如我所说,我还在学习不,如果不安装请求模块,则无法使用该模块。如果您想要的东西不依赖于Python附带的任何东西,那么需要urllib2模块,它是Python标准库的一部分。您的代码将更便于移植,但更丑陋。好的,谢谢。网站上的内容看起来确实很有趣,并且会记住更多的静态安装。