2012-09-01 5 views
0

그래서 내 친구 회사 고객 지원을 위해 작성한 스크립트입니다. 기본적으로 스크립트에서 IP 전화를 사용하여 전화를 걸면 작동하지만 문제는 발생합니다. 여기에 코드입니다 :Python 스크립트 문제

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 

첫 번째 문제는 지금은 디버깅을 위해, 이상 호출 이상 유지하는 설정은 ... 그것은 단지 전화 하나를 사용하여 호출하는 것입니다, 그리고 난 단지 전화를 받고있는 것으로 보인다 phone one ... 두 번째 문제는 스크립트가 종료되지 않는다는 것입니다. Ctrl + C가 작동하지 않습니다 ... (내가 아는) 그것을 종료하는 유일한 방법은 ssh 세션을 끝내는 것입니다. 자, 저는 파이썬에 익숙하지 않습니다. 둘 다 아마도 어리석은 실수 일 것입니다. 누군가가 도울 수 있기를 바랍니다. 감사! 이 같은 시도의 catch 블록을 교체

+6

제외하고'사실을 취할 수있는 오류 찾을 수 있습니다 : 그것은 경우 pass' 볼을 오류가 발생합니다. – BrenBarn

+0

'ctrl + z '를 사용해 종료하십시오. 그렇지 않다면, 다른 ssh 세션을 열 수 있습니다. killall python' – imkost

+0

"두 번째 문제는 스크립트가 종료되지 않는다는 것입니다 .ctrl + c는 작동하지 않습니다 ..."명시 적으로 제어 할 수 없도록 지시했습니다. 그거야. ctrl-c를 치면 발생하는 'KeyboardInterrupt' 같은 것도 예외이고, except : pass는 예외가 발생하면 무시합니다. 충분히 오랫동안 control-C를 길게 누르면 결국 운이 좋게되고 결국 중단됩니다. – DSM

답변

1

시도,

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

아래의 코드를 사용하는 동안.

except: 
    pass 

시스템은 SystemExit, KeyboardInterrupt 및 기타 잡기를 원하지 않을 수 있습니다.

감사합니다.

+0

같은 결과가 나온 것 같습니다. –

+0

나는 내 대답을 업데이 트했습니다, 그냥 확인하십시오. –

0

try 블록이 Ctrl-C를 잡을 수 있습니다. 예상 한 특정 예외 만 catch하도록 수정하십시오. 예외로 Ctrl-C에 대한 자세한 내용은 KeyboardInterrupt을 참조하십시오.

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 

은 그래서 당신은 역 추적을보고 1 단계는

+0

이렇게하면 단 한번만 전화를 걸고 Calling ...을 출력하지만 다음을 보여줍니다 ... http://pastebin.com/vnHyHFnR –