如何使用python管理tp-link路由器

Python017

如何使用python管理tp-link路由器,第1张

 TP-LINK路由器设置步骤如下:

第一步,线路链接

在没有使用路由器时,电脑直接连接宽带上网,现在使用路由器共用宽带上网,则需要用路由器来直接连接宽带。根据入户宽带线路的不同,可以分为网线、电话线、光纤三种接入方式。具体如何连接请参考下图:

注意:宽带线一定连接到路由器WAN口,WAN口颜色与LAN口一般不同,电脑连接1\2\3\4任意一个端口。

连接好线路之后,请检查并确认对应的接口指示灯常亮或闪烁。

第二步,操作设置

设置路由器之前,需要将操作电脑设置为自动获取IP地址。如果电脑没有设置过,一般情况下电脑IP地址默认为自动获取。

第三,登陆管理界面设置

1、输入路由器管理地址

打开电脑桌面上的IE浏览器,清空地址栏并输入路由器管理IP地址(192.168.1.1),回车后弹出登录框。

注意:部分路由器使用tplogin.cn登录,路由器的具体管理地址建议在壳体背面标贴上查看。

2、登录管理界面

初次进入路由器管理界面,为了保障设备安全,需要设置管理路由器的密码,请根据界面提示进行设置。如下图:

注意:部分路由器需要输入管理用户名、密码,均输入admin即可。

第四步,按照设置向导设置路由器

1、开始设置向导

进入路由器的管理界面后,点击 设置向导,点击 下一步。

2、选择上网方式

上网方式选择 PPPoE(ADSL虚拟拨号) ,点击 下一步。

注意:如果上网方式为静态IP或动态IP,请选择对应方式并设置。

3、输入上网宽带账号和密码

在对应设置框填入运营商提供的宽带账号和密码,并确定该账号密码输入正确。

注意:76%以上的用户因为输错宽带账号密码导致无法上网,请仔细检查入户的宽带账号密码是否正确,注意中英文输入、字母大小写、后缀等是否输入完整。

4、设置无线参数

SSID即无线网络名称(可根据实际需求设置),选中 WPA-PSK/WPA2-PSK 并设置PSK无线密码,点击 下一步。

注意:无线密码是用来保证无线网络安全,确保不被别人蹭网。

5、设置完成

点击 完成,设置向导完成。

注意:部分路由器设置完成后需要重启,点击重启即可。

第五步,确认设置成功

设置完成后,进入路由器管理界面,点击 运行状态,查看 WAN口状态,如下图框内IP地址不为0.0.0.0,则表示设置成功。

至此,网络连接成功,路由器已经设置完成。电脑连接路由器后不需要进行宽带连接拨号,直接可以打开网页上网。

你说的总体是可行的,路由器都会提供一个web 的访问控制界面,python urllib2 可以利用POST 的方式登录,加一个header 就可以了,下面是登录一个BBS 的代码的header:

req=urllib.request.Request(url)

req.add_header('User-agent','Mozilla/5.0')

req.add_header('Content-Type','application/x-www-form-urlencoded')

params=urllib.parse.urlencode({'id':username,

'login.x':24,

'login.y':8,

'login':'登陆',

'pw':password,

'titletype':'forum'

})

params=params.encode('gb2312')

print('Send request!   waiting respose.....')

res=urllib2.urlopen(req,params)

下面是我ppp登录路由器的方式:

#!/usr/bin/python

#

# License: GNU GPL v2

# Script for comtrend hg536+ ( firmware A101-302JAZ-C03_R21.A2pB021g.d15h )

# This scripts connect to router and reset ip in 45s. In this example use default values for jazztel .

import getpass

import sys

import telnetlib

import time

HOST = "192.168.1.1"

LOGIN = "admin"

PASS = "admin"

PROMPT = " -> "

WAITTIME = 40 # Number of second

CONNECTIONNAME = "0.8.35 2" # to see your connections, manually connect to router (telnet 192.168.1.1) and use "wan show" .You should choose you PPPoE connection Use a combination of VCC + Con Id. For example ""0.8.35 2""

tnt = telnetlib.Telnet(HOST)

tnt.read_until("Login: ")

tnt.write(LOGIN + "\n")

tnt.read_until("Password: ")

tnt.write(PASS + "\n")

tnt.read_until(PROMPT)

tnt.write("ppp config " + CONNECTIONNAME + " down\n")

time.sleep(3)

tnt.write("\n")

tnt.write("ppp config " + CONNECTIONNAME + " up\n")

time.sleep(WAITTIME)

tnt.read_until(PROMPT)

tnt.write("ppp config " + CONNECTIONNAME + " up\n")

tnt.write("\n")

tnt.read_until(PROMPT)

tnt.write("13\n") # press option to exit

tnt.close()

下面重启路由器:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

import telnetlib

import re

import time

import sys

import os

HOST = "192.168.2.1"

password = "password"

class bcolors:

HEADER = '\033[95m'

OKBLUE = '\033[94m'

OKGREEN = '\033[92m'

WARNING = '\033[93m'

FAIL = '\033[91m'

ENDC = '\033[0m'

def disable(self):

self.HEADER = ''

self.OKBLUE = ''

self.OKGREEN = ''

self.WARNING = ''

self.FAIL = ''

self.ENDC = ''

def drukuj(wiadomosc):

sys.stdout.write("\r")

sys.stdout.write("                                                    ")

sys.stdout.flush()

sys.stdout.write("\r")

sys.stdout.write(wiadomosc)

sys.stdout.flush()

#sys.stdout.write("\r")

def status(komenda):

odb = ""

try:

tn = telnetlib.Telnet(host=HOST,timeout=23)

except IOError:

print "Nie nawiązano połączenia :(\n"

else:

tn.read_until("Password: ")

tn.write(password + "\n")

if komenda=="wan adsl reset\n":

tn.write(komenda)

tn.write("exit\n")

#print "Połączenie zostało z resetowane"

drukuj(bcolors.FAIL + "Połączenie zostało z resetowane" + bcolors.ENDC)

if komenda=="ip route status\n":

tn.write(komenda)

tn.write("exit\n")

odb = tn.read_all()

if komenda=="wan adsl status\n":

tn.write("wan adsl status\n")

tn.write("exit\n")

odb = tn.read_all()

if re.search('current modem status: down', odb):

#print "Status: down"

drukuj(bcolors.HEADER + "Status: down" + bcolors.ENDC)

if re.search('current modem status: wait for initialization', odb):

#print "Status: wait for initialization"

drukuj(bcolors.WARNING + "Status: wait for initialization" + bcolors.ENDC)

if re.search('current modem status: initializing', odb):

#print "Status: initializing"

drukuj(bcolors.WARNING + "Status: initializing" + bcolors.ENDC)

if re.search('current modem status: up', odb):

#print "Status: up"

drukuj(bcolors.OKBLUE + "Status: up" + bcolors.ENDC)

return odb

def clear():

if os.name == "posix":

# Unix/Linux/MacOS/BSD/etc

os.system('clear')

elif os.name in ("nt", "dos", "ce"):

# DOS/Windows

os.system('CLS')

if __name__=="__main__":

clear()

status("wan adsl reset\n")

time.sleep(5)

a = True

while a:

odb = status("ip route status\n")

if re.search('\d *poe0 *\d', odb):

#print "Modem działa"

drukuj(bcolors.OKGREEN + "-={{Modem działa}}=-\n" + bcolors.ENDC)

time.sleep(2)

#clear()

a = False

else:

time.sleep(3)

status("wan adsl status\n")

time.sleep(3)

下面通过telnet 来重启路由器

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    import telnetlib

    HOST = "192.168.1.1"

    USER = "root"

    PASS = "admin"

    router = telnetlib.Telnet(HOST)

    router.read_until(": ", 2)  # wait for timeout or "BusyBox on localhost login: "

    router.write(USER + "\n")

    router.read_until(": ", 2)  # wait for timeout or "Password: "

    router.write(PASS + "\n")

    router.read_until("# ", 2)  # wait for timeout or "# "

    router.write("reboot\n")

    router.close()

    print "Done!"

这是四段独立的代码!