Подтвердить что ты не робот

Программно изменяющиеся настройки беспроводного маршрутизатора - Netgear идеально

Можно ли программно изменять настройки беспроводного маршрутизатора Netgear с помощью С#? У меня есть настройки, которые я часто меняю, и я хотел бы создать свой собственный интерфейс для внесения этих изменений. В настоящее время я перехожу к веб-странице администратора (10.0.0.1), и он запрашивает у меня имя пользователя и пароль. После проверки подлинности я могу использовать веб-интерфейс для изменения конфигурации маршрутизатора.

Если это невозможно в Netgear, у любых беспроводных маршрутизаторов outper есть API для разработчиков?

4b9b3361

Ответ 1

Для этого нет никаких API-интерфейсов, но вы можете написать что-то, чтобы HTTP-запросы к маршрутизатору имитировали используемый webUI.

Я предполагаю, что большинство потребительских маршрутизаторов, вероятно, довольно просто поговорить. Аутентификация, вероятно, не более чем основной.

Ответ 2

Selenium предлагает плагин firefox, который позволяет записывать ручные взаимодействия с вашим браузером. А затем вы можете экспортировать шаги в python, ruby, java или С#. Он работал у меня, чтобы программно настроить параметры моего маршрутизатора, чтобы отключить 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()

Ответ 3

Я не знаю ни одного маршрутизатора потребительского класса, у которого есть такой API, но вы всегда можете создать что-то, что (ab) использует веб-интерфейс для выполнения того, что вы хотите, используя что-то вроде selenium-rc или watir

Ответ 4

MiktoTik продает маршрутизаторы класса клиента, которые разрешают конфигурацию ssh (помните, что они используют ssh, но не bash внутри ssh). Вы даже можете свернуть собственный PHP REST API для маршрутизатора (не то, что мне нравится PHP, но люди это делают).

Ответ 5

Если это всего лишь несколько вещей, которые вы хотите изменить программно, имитирование HTTP-запросов должно быть достаточно простым. Другим вариантом было бы установить DD-WRT в вашем маршрутизаторе, в основном преобразуя его в небольшую установку Linux, которая позволяет полностью программировать конфигурацию через SSH с помощью стандартных команд Linux.

Ответ 6

Я не знаком с этим маршрутизатором, но я сделал аналогичный материал программным путем через telnet-подключение маршрутизатора с Python. Там CUD telnet lib для С#: http://www.codeproject.com/KB/IP/MinimalisticTelnet.aspx

Ответ 7

Существует питон на основе GitHub репо здесь, который описывает API на основе SOAP. Я использовал его, чтобы запрограммировать расписание устройств для моих детей. Не желающий платить Диснею за Круга. Работает отлично. Там также версия JS здесь.