2010-06-10 4 views
18

Cge를 사용하여 Netgear 무선 라우터에서 프로그래밍 방식으로 설정을 변경할 수 있습니까? 자주 변경하는 설정이 있으며 변경 작업을위한 자체 인터페이스를 만들고 싶습니다. 현재 관리자 웹 페이지 (10.0.0.1)로 이동하고 사용자 이름과 비밀번호를 묻습니다. 인증을 마친 후 웹 인터페이스를 사용하여 라우터의 구성을 변경할 수 있습니다.프로그래밍 방식으로 무선 라우터 설정 변경 - Netgear 이상적으로

넷기어로는 불가능한 경우 외부 무선 라우터에 개발자 용 API가 있습니까?

답변

14
같은 것을 사용하여, (AB)가 당신이 원하는 것을 할 웹 인터페이스를 사용하여 뭔가를 만들 수

거기에는 API가 없지만 사용중인 webUI를 시뮬레이션하기 위해 라우터에 HTTP 요청을하기 위해 뭔가를 쓸 수 있습니다.

나는 대부분의 소비자 라우터가 아마도 꽤 쉽게 이야기 할 것이라고 생각하고있다. 아마도 인증은 기본 영역 이상일 것입니다.

+0

기본 영역 인증이 정확합니다. 로그인 할 수는 있지만 UI를 탐색하는 사용자를 시뮬레이트하기 위해 라우터에 보내는 HTTP 요청을 결정하는 방법을 잘 모르겠습니다. 어떤 제안? – DarLom

+5

글쎄, 두 가지 옵션이 있습니다 : 1 : 웹 UI 리버스 엔지니어링 2 : 요청이 어떻게 진행되고 있는지보기 위해 방화 웜과 같은 시스템을 사용하십시오. 2 번을 권합니다. – chris12892

+3

피들러와 같은 웹 디버그 프록시 사용에 동의합니다 –

1

은 그 같은 API를 가지고있는 소비자 급 라우터의 인식 해요,하지만 당신은 항상 selenium-rc 또는 watir

1

MiktoTik ssh를 구성 할 수 고객 급 라우터 판매 (그들은 SSH를 사용하는 것이 마음이 있지만, ssh를 내부 비난하지 않음). 당신은 라우터를 위해서 자신의 PHP REST API을 굴릴 수도 있습니다 (PHP는 좋아하지 않지만 사람들은 그것을하고 있습니다).

+0

하나의 사소한 수정 ... MikroTik API는 REST API가 아닙니다. MikroTik이 혼란스럽게 "API"라고 부르는 독점적 인 L7 프로토콜 (ala SSH, FTP)입니다. 이 프로토콜을위한 클라이언트 구현은 여러 가지가 있습니다. 실제로 C#을 포함합니다. –

3

셀렌은 브라우저와의 수동 상호 작용을 기록 할 수있는 firefox plugin을 제공합니다. 그런 다음 단계를 파이썬, 루비, 자바 또는 C#으로 내보낼 수 있습니다. 프로그래밍 방식으로 라우터 설정을 조정하여 Wi-Fi를 사용하지 않게되었습니다. 녹음하는 동안 요소를 클릭하면 필요한 모든 항목을 식별 할 수 있습니다.

이 코드는 Actiontec MI424WR (FIOS)
에서 작동합니다. 사용자 이름, 암호 및 라우터 주소를 추가하는 코드를 편집하십시오.

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import Select 
from selenium.common.exceptions import NoSuchElementException 
from selenium.common.exceptions import NoAlertPresentException 
import unittest, time, re 

class Routr(unittest.TestCase): 
    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.driver.implicitly_wait(30) 
     self.base_url = "http://routerip_or_address" 
     self.verificationErrors = [] 
     self.accept_next_alert = True 

    def test_routr(self): 
     driver = self.driver 
     driver.get(self.base_url + "/") 
     driver.find_element_by_name("user_name").clear() 
     driver.find_element_by_name("user_name").send_keys("your_username") 
     driver.find_element_by_id("pass2").clear() 
     driver.find_element_by_id("pass2").send_keys("enter_your_password_here") 
     driver.find_element_by_link_text("OK").click() 
     driver.find_element_by_link_text("Change Wireless Settings").click() 
     driver.find_element_by_id("ws_off").click() 
     driver.find_element_by_link_text("Apply").click() 

    def is_element_present(self, how, what): 
     try: self.driver.find_element(by=how, value=what) 
     except NoSuchElementException, e: return False 
     return True 

    def is_alert_present(self): 
     try: self.driver.switch_to_alert() 
     except NoAlertPresentException, e: return False 
     return True 

    def close_alert_and_get_its_text(self): 
     try: 
      alert = self.driver.switch_to_alert() 
      alert_text = alert.text 
      if self.accept_next_alert: 
       alert.accept() 
      else: 
       alert.dismiss() 
      return alert_text 
     finally: self.accept_next_alert = True 

    def tearDown(self): 
     self.driver.quit() 
     self.assertEqual([], self.verificationErrors) 

if __name__ == "__main__": 
    unittest.main() 
1

프로그래밍 방식으로 변경하려는 몇 가지 사항 일 경우 HTTP 요청 시뮬레이션은 충분히 간단해야합니다. 또 다른 옵션은 라우터에 DD-WRT를 설치하는 것입니다. 기본적으로 표준 Linux 명령을 사용하여 SSH를 통해 전체 프로그램 구성을 허용하는 작은 Linux 설치로 변환합니다.

관련 문제