2012-05-13 6 views
0

ERSをテストするスクリプトを書くことパイソン - ..私はまだPythonの基礎とグリップを取得しています、HTTPインタフェースに

をしようと

私の現在の要件はテストするPythonスクリプトを開発することです(例えば、ウェブブラウザを介して「http://192.168.0.2:9876」と入力しなければならない場合など)複数のデバイスのウェブベースのインターフェースを利用することができますが、これは複雑すぎる必要はありません。

もともと私はbashスクリプトでは、次のようなものだったように私は、簡単なbashのcurlコマンドから変換しようとしている:

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で何か類似しています。理由の中で出力が変わる可能性があります。誰にでもどこから始めるべきかの指針があります。

PS私はここでいくつか他の質問を見てきましたが、インタフェースが "停止"した(つまりサービスを停止した)偽陽性を示しています。

編集:以下は私が試したコードです。

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" 

訂正:私はPythonのエラー出力を確認したくない

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> 

...以下の結果が得られます。事前

+2

あなたが試したPythonコード、実行したときに得たもの、予想したものを投稿してください。 「このスクリプトを言語Xに変換する」は、SOの本当の質問ではありません。 – jordanm

+0

@jordanm、申し訳ありませんがコードの上記の編集を参照してください。私は、Webインターフェイスが利用できないとき(すなわち、サービスが停止したため、またはフォルト/エラーが発生したため)、restultが異なると予想します。 – MHibbin

+0

ポートに接続を許可するものがない場合、例外がスローされます。私のマシンでの簡単なテストでは、 'urllib2.URLError:'がスローされます。あなたはurllib2.URLErrorを捕まえていません、それは例外を投げていませんか? – jordanm

答えて

0

おかげであなたが素敵な優しいAPIで必要な機能を提供するPythonモジュール用http://docs.python-requests.org/en/latest/index.htmlを見てみましょう。私は(成功は2xx応答を意味する)が使用されてきた特定のテストは正確に何をしたいですかどうかわからないけれども

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

# now use the value of ok 

:このインスタンスでは、これらの線に沿って何かをしたいです。

+0

これを複数のシステムで使用する予定でしたが、インストールしなくても「要求」モジュールを使用できますか? ...私はまだ私は学んでいると言うように。 :) – MHibbin

+0

いいえ、リクエストモジュールをインストールせずに使用することはできません。 Pythonで提供されるもの以外のものに依存しないものが必要な場合は、 'urllib2'モジュール(Pythonの標準ライブラリの一部です)が必要です。あなたのコードはより移植性がありますが醜いでしょう。 –

+0

よろしくお願いいたします。サイトのコンテンツは面白く見えますが、より静的なインストールではそのことを覚えています。 – MHibbin

関連する問題