Программное изменение настроек беспроводного маршрутизатора - Netgear в идеале - PullRequest
19 голосов
/ 10 июня 2010

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

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

Ответы [ 7 ]

13 голосов
/ 10 июня 2010

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

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

4 голосов
/ 03 сентября 2014

Selenium предлагает плагин Firefox , который позволяет записывать ручные взаимодействия с вашим браузером. И тогда вы можете экспортировать шаги в Python, Ruby, Java или 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()
2 голосов
/ 20 февраля 2015

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

2 голосов
/ 26 мая 2014

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

2 голосов
/ 10 июня 2010

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

0 голосов
/ 10 апреля 2019

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

0 голосов
/ 08 августа 2010

Я не знаком с этим маршрутизатором, но я делал подобные вещи программно через соединение telnet, маршрутизатор с Python.Есть Cood telnet lib для C #: http://www.codeproject.com/KB/IP/MinimalisticTelnet.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...