20

C#を使用してNetgearワイヤレスルーターの設定をプログラムで変更することは可能ですか?頻繁に変更する設定があり、それらを変更するための独自のインターフェイスを作成したいと思います。現在、管理Webページ(10.0.0.1)に移動すると、ユーザー名とパスワードの入力を求められます。認証後、Webインターフェイスを使用してルーターの構成を変更できます。

Netgearでこれが不可能な場合、外部のワイヤレスルーターに開発者向けのAPIがありますか?

4

7 に答える 7

14

これを行うためのAPIはありませんが、ルーターにHTTPリクエストを送信して、使用されているwebUIをシミュレートするためのAPIを作成できます。

ほとんどの消費者向けルーターは、おそらく話しやすいと思います。認証はおそらく基本的な領域にすぎません。

于 2010-06-10T19:52:06.727 に答える
5

Seleniumは、ブラウザとの手動操作を記録できるFirefoxプラグインを提供します。次に、ステップをpython、ruby、java、またはc#にエクスポートできます。ルーターの設定をプログラムで調整してwifiをオフにすることができました。録音中に要素をクリックすると、必要なものがすべて識別されます。

このコードは、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()
于 2014-09-02T23:43:57.900 に答える
3

これがプログラムで変更したいいくつかのことである場合、HTTPリクエストのシミュレーションは十分に単純である必要があります。もう1つのオプションは、ルーターにDD-WRTをインストールすることです。これは、基本的に、標準のLinuxコマンドを使用してSSH経由で完全なプログラム構成を可能にする小さなLinuxインストールに変換します。

于 2015-02-20T15:38:18.710 に答える
2

私はそのようなAPIを備えたコンシューマーグレードのルーターを知りませんが、selenium-rcwatirのようなものを使用して、Webインターフェイスを使用して必要なことを(ab)使用するものをいつでも構築できます

于 2010-06-10T19:49:40.417 に答える
2

MiktoTikは、ssh構成を可能にするカスタマーグレードのルーターを販売しています(sshを使用しますが、ssh内のbashは使用しないことに注意してください)。ルーター用に独自のPHPRESTAPIをロールすることもできます(私はPHPが好きではありませんが、人々はそれをやっています)。

于 2014-05-26T16:30:20.067 に答える
0

私はこのルーターに精通していませんが、Pythonを使用したルーターのtelnet接続を介してプログラムで同様のことを行いました。C#用のcood telnet libがあります:http: //www.codeproject.com/KB/IP/MinimalisticTelnet.aspx

于 2010-08-08T14:53:07.267 に答える
0

ここには、SOAPベースのAPIを説明するPythonベースのGithubリポジトリがあります。私はそれを使用して、子供のデバイスのデバイススケジュールをプログラムしました。サークルにディズニーにお金を払う気がない。よく働く。ここにはjsバージョンもあります。

于 2019-04-10T03:08:56.503 に答える