6

ルーターに接続してシャットダウンし、Python スクリプトから再起動できるツールがあるかどうかを知りたかったのです。

私が書いた場合、私はそれを知っています:

import os
os.system("ssh -l root 192.168.2.1")

Python経由でルーターに接続できます。しかし、ルーターのパスワードを適用する方法と、ルーターにログインして再起動する方法がわかりません。

少し作業した後、pythonスクリプトを使用して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 (Python スクリプトに使用するエディター) がクラッシュします。このコードの改善を手伝ってくれる人はいますか?

4

4 に答える 4

2

ルーターの管理ページを見て、送信する投稿パラメーターを確認できると思います。スクリプトでは、同じことを模倣できます。

ほとんどのルーターは https 経由の基本認証を使用していると思います。

編集:これを見つけました。

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

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

私の wget マニュアルによると、 -q は静かにするためのものです。0-が何かわかりません。curl で同様のことを行うこともできます。注: 一部の tp-link デバイスでは、リファラー ヘッダーを送信する必要があります。たとえばカールでは、-H 'Referer: http://192.168.0.1'

次のコードを使用して、Pythonでも同じことができます。

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)
于 2016-12-11T07:50:08.957 に答える