2013-03-13 3 views
2

라우터에 연결하여 종료 한 다음 파이썬 스크립트에서 재부팅 할 수있는 도구가 있는지 알고 싶었습니다.파이썬 스크립트로 TPLINK 라우터를 제어하는 ​​방법

파이썬 스크립트로 작성하면 import os을 입력하고 os.system("ssh -l root 192.168.2.1")을 입력하면 파이썬을 통해 라우터에 연결할 수 있습니다. 그런데 라우터의 암호를 적용하고 로그인하여 다시 부팅하는 방법을 모르겠습니다.

그래서 작업 후 여기에 조금 내가 파이썬 스크립트를 사용하여 SSH 세션을 내 라우터에 연결하기 위해 작성한 코드가

:

import os, urllib, urllib2, re 

    def InterfaceControl(): 
     #os.system("echo training") 
     os.system("ssh -l root 192.168.2.1") 
     os.system("echo yes") 
     os.system("echo My_ROUTER_PASSWORD") 
     os.system("shutdown -r") 



    def main(): 
     InterfaceControl() 


    if __name__=="__main__": 
     main() 

문제가 있음을 나는 아직도 할 수 없습니다 이 코드로 라우터에 연결하고, IDLE (파이썬 스크립트를 작성하고 실행하는 데 사용하는 편집기)이 충돌합니다. 누구든지이 코드를 개선 할 수 있습니까?

+0

이제 shutdown -r은 어떻게됩니까? –

+0

그것은 작동하지 않습니다. 실제로 일단 가져 오기 및 os.system을 사용하면 라우터 인터페이스에 로그인 할 수 없으므로 비밀번호를 제공하지 않습니다. 그리고 암호를 "이 암호"라고 python 스크립트에서 쉘에게 알려주는 방법을 모르겠습니다. 이 문제가 해결되면, -r – sadek

+0

@ user52800을 종료 할 수 있습니다. 아주 작은 편집을 위해 1 년 된 게시물을 버릴 필요가 없습니다. 그렇게 할 때마다 3-5 명이 편집 내용을 검토해야하며 홈페이지를 혼란스럽게 만듭니다. 나는 당신이 아케이드에서 33k라는 것을 알고 있으므로 이미 알고 있습니다. – OGHaza

답변

1

라우터 관리 페이지를보고 전송하는 게시 매개 변수를 볼 수 있다고 생각합니다. 스크립트에서 똑같이 만들 수 있습니다.

대부분의 라우터는 https를 통한 기본 인증을 사용한다고 생각합니다.

편집 : 이것을 발견했습니다.

wget -qO- --user=admin --password=admin-password http://192.168.1.2/userRpm/SysRebootRpm.htm?Reboot=Reboot 

SRC : http://blog.taragana.com/old-code-how-to-reboot-tp-link-router-11849

내 wget과 설명서가 조용한입니다 -q 알려줍니다. 0-이 무엇인지 모릅니다. 당신은 컬과 비슷한 것을 할 수 있습니다. 참고 : 일부 tp-link 장치에서는 referer 헤더를 보내야합니다. 예를 들어 curl의 경우 -H 'Referer: http://192.168.0.1'

다음 코드를 사용하여 파이썬에서 동일한 작업을 수행 할 수 있습니다. 나는 새로운 펌웨어 버전에 대한 생각

from urllib.request import urlopen, Request 
import base64 
req = Request('http://192.168.0.1/userRpm/SysRebootRpm.htm?Reboot=Reboot') 
req.add_header('Authorization', ('Basic %s' % base64.b64encode('uname:pass'.encode('ascii')).decode('ascii'))) 
req.add_header('Referer', 'http://192.168.0.1') 
urlopen(req) 
0

, 당신이 필요합니다 참조 자와 사용자 에이전트가 작동 할 수 있습니다.

0

auth 알고리즘이 모델마다 다르므로 업 링크 장치 모델 및 펌웨어에 따라 다릅니다. 필자는 Python 스크립트를 작성하여 W740N tp 링크에 잘 작동합니다. 이 코드는 요청 패키지를 사용하여이 기기에서 인증하는 방법을 설명합니다. 패키지

#!/usr/bin/python3 
# imports 
from requests import get 
from base64 import b64encode 
from urllib.parse import quote 


# constants 
tplink = '192.168.0.1' 
user = 'admin' 
password = 'admin' 
url_template = 'http://{}/userRpm/SysRebootRpm.htm?Reboot=Reboot' 


if __name__ == '__main__': 
    auth_bytes = bytes(user+':'+password, 'utf-8') 
    auth_b64_bytes = b64encode(auth_bytes) 
    auth_b64_str = str(auth_b64_bytes, 'utf-8') 

    auth_str = quote('Basic {}'.format(auth_b64_str)) 

    auth = { 
    'Referer': 'http://'+tplink+'/', 
    'Authorization': auth_str, 
    } 

    reboot_url = url_template.format(tplink) 

    r = get(reboot_url, headers=auth) 
관련 문제