0

これは、私が仲間の会社の顧客サポートのためにコーディングしているスクリプトです。基本的には、スクリプトに含まれる IP 電話を使用して呼び出しを行います。機能しますが、問題があります。コードは次のとおりです。

import urllib, urllib2, sys
num = sys.argv[1]
print 'Calling'
phones = [
'http://phone1/index.htm',
'http://phone2/index.htm',
'https://phone3/index.htm',
'https://phone4/index.htm',
'https://phone5/index.htm'
]
data = urllib.urlencode({"NUMBER":num, "DIAL":"Dial", "active_line":1})
while 1: 
    for phone in phones:
        try:
            urllib2.urlopen(phone,data) # make call
            urllib2.urlopen(phone+"?dialeddel=0") # clear logs
        except: pass

最初の問題は、電話機 1 を使用してのみコールすることです...現在、デバッグ目的で何度もコールし続けるようにセットアップされており、電話機 1 からしかコールを受けていないようです... 2 番目の問題は、スクリプトは終了しません。ctrl+c が機能しません... それを終了する唯一の方法 (私が知っている) は、ssh セッションを終了することです。さて、私はPythonを初めて使用するので、これらはおそらく愚かな間違いなので、誰かが助けてくれることを願っています. ありがとう!

4

3 に答える 3

1

このようにtry catchブロックを置き換えてみてください。

try:
    <code>
except Exception as exp:
    <code>

以下のコードを使用している間。

except:
    pass

システムは、SystemExit、KeyboardInterrupt、およびおそらくキャッチしたくないその他のものをキャッチします。

ありがとう。

于 2012-09-01T02:05:50.150 に答える
0

try ブロックが Ctrl-C をキャッチしている可能性があります。期待する特定の例外のみをキャッチするように変更してみてください。例外としての Ctrl-C の詳細については、 KeyboardInterruptを参照してください。

于 2012-09-01T02:09:34.480 に答える
0

交換:

try:
    urllib2.urlopen(phone,data) # make call
    urllib2.urlopen(phone+"?dialeddel=0") # clear logs
except: pass

と:

urllib2.urlopen(phone,data) # make call
urllib2.urlopen(phone+"?dialeddel=0") # clear logs

トレースバックを表示してエラーを見つけることができます

于 2012-09-01T02:13:52.917 に答える