linux下的python里面如何用相关的网络模块来重启tp-link路由器?

作者&投稿:仰斩 (若有异议请与网页底部的电邮联系)
如何使用python管理tp-link路由器~

 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的程序,F12打开,点一下界面的重启路由器操作,模拟发送那个请求就好了。

你说的总体是可行的,路由器都会提供一个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 + "
")

tnt.read_until("Password: ")
tnt.write(PASS + "
")

tnt.read_until(PROMPT)
tnt.write("ppp config " + CONNECTIONNAME + " down
")

time.sleep(3)
tnt.write("
")
tnt.write("ppp config " + CONNECTIONNAME + " up
")

time.sleep(WAITTIME)

tnt.read_until(PROMPT)
tnt.write("ppp config " + CONNECTIONNAME + " up
")

tnt.write("
")

tnt.read_until(PROMPT)
tnt.write("13
") # 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("")
sys.stdout.write("                                                    ")
sys.stdout.flush()
sys.stdout.write("")
sys.stdout.write(wiadomosc)
sys.stdout.flush()
#sys.stdout.write("")


def status(komenda):
odb = ""
try:
tn = telnetlib.Telnet(host=HOST,timeout=23)
except IOError:
print "Nie nawiązano połączenia :(
"
else:
tn.read_until("Password: ")
tn.write(password + "
")
if komenda=="wan adsl reset
":
tn.write(komenda)
tn.write("exit
")
#print "Połączenie zostało z resetowane"
drukuj(bcolors.FAIL + "Połączenie zostało z resetowane" + bcolors.ENDC)
if komenda=="ip route status
":
tn.write(komenda)
tn.write("exit
")
odb = tn.read_all()
if komenda=="wan adsl status
":
tn.write("wan adsl status
")
tn.write("exit
")
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
")
time.sleep(5)
a = True
while a:
odb = status("ip route status
")
if re.search('\d *poe0 *\d', odb):
#print "Modem działa"
drukuj(bcolors.OKGREEN + "-={{Modem działa}}=-
" + bcolors.ENDC)
time.sleep(2)
#clear()
a = False
else:
time.sleep(3)
status("wan adsl status
")
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 + "
")
    router.read_until(": ", 2)  # wait for timeout or "Password: "
    router.write(PASS + "
")
    router.read_until("# ", 2)  # wait for timeout or "# "
    router.write("reboot
")

    router.close()

    print "Done!"

这是四段独立的代码!



哈哈,你说的这个我也做过,给你段我写的代码

# -*- coding: utf-8 -*-
# 重启路由器脚本
#
import urllib2, base64


# 192.168.1.1
# admin:admin (BASE64编码)
if __name__ == '__main__':
    # 请求地址
    url = 'http://192.168.1.1/userRpm/SysRebootRpm.htm?Reboot=重启路由器'
    # 验证的用户名和密码
    login_user = 'admin'
    login_pw = 'admin'
    
    auth = 'Basic ' + base64.b64encode('admin:admin')
    print auth
    heads = { 'Referer' : 'http://192.168.1.1/userRpm/SysRebootRpm.htm',
             'Authorization' : auth
    }
    
    # 请求重启路由器
    request = urllib2.Request(url, None, heads)
    response = urllib2.urlopen(request)
    print response.read()



python文件后缀是什么
python文件后缀总结:(1).py:这通常是您编写的输入源代码。(2).py3:Python3脚本(Python3脚本通常以.py而不是.py3结尾,很少使用)。(3).pyc:这是编译好的字节码。如果导入一个模块,python将生成一个*.pyc包含字节码的文件,以便再次导入它更容易(也更快)。.pyc二进制文件可以反编译成...

python文件的后缀名是什么
python文件的后缀名有:“.py”、“.py3”、“.pyc”、“.pyo”、“.pyd”、“.pyi”、“.pyx”、“.pyz”、“.pywz”、“.rpy”、“.pyde”、“.pyp”、“.pyt”。python文件后缀总结:(1).py:以 py 扩展名的文件是 Python 源码文件,由 python.exe 解释,可在控制台下运行。可用...

python有哪些特点和优点
应用领域广泛:Python语言的另一大优点就是应用领域广泛,工程师可以使用Python 做很多的事情。例如,Web开发、网络编程、自动化运维、Linux系统管理、数据分析、科学计算、人工智能、机器学习等等。Python语言介于脚本语言和系统语言之间,我们根据需要,既可以将它当做一门脚本语言来编写脚本,也可以将它当做一...

将python打包成exe
先进入cmd命令行,进入C:\/Python31\/Scripts目录,然后运行cxfreeze.bat -h 就可以看到它的使用说明了。我们可以用cx_freeze自己的sample做个试验。进入到c:\/python31\/scripts\/下,运行 cxfreeze C:\/Python31\/Lib\/site-packages\/cx_Freeze\/samples\/PyQt4\/PyQt4app.py --install-dir=d:\/123 pytqt4a...

配置什么电脑才能玩的起TensorFlow?
而装双系统的话,对配置的需求就小很多了。tensorflow 怎么使用 TF目前的编程模型是符号编程 (symbolic computation)。大致的想法就是使用符号API去描述计算通过计算流图的方式,以及更新逻辑,然后通过像服务器去发送计算流图的方式来进行计算。原因是所有的计算全部需要通过计算流图来描述,也就是其实通py...

linux编译出.o文件后为什么运行时错出?ubuntu
gcc first.o 这两个命令写错了。-o参数就是指执行文件的输出文件。所以用了-o,就不用第二条命令了。这一个命令把编译,链接两步一起做。用两条命令写 gcc -c first.c gcc first.o -o first 主意第一条命令的-c,后面输入源文件名。.o文件与源文件同名。-o如果没有指定,linux默认为...

mssql 2016 数据库安装在ContOS7系统,序列号和windows的通用吗?
SQL Server 2016 Enterprise Core Edition 企业核心板序列号和:TBR8B-BXC4Y-298NV-PYTBY-G3BCP SQL Server 2016 Standard Edition 标准版序列号和:B9GQY-GBG4J-282NY-QRG4X-KQBCR SQL Server 2016 Web Edition序列号和:BXJTY-X3GNH-WHTHG-8V3XK-T8243 应该是可以用的,毕竟是一个软件,...

阳明区13837927090: 如何在linux下运行python程序? -
乌禄丽芝: 有两种方式:1、直接使用python xxxx.py执行.其中python可以写成python的绝对路径.使用which python进行查询.2、在文件的头部(第一行)写上#!/usr/bin/python2.7,这个地方使用python的绝对路径,就是上面用which python查询来的结果.然后在外面就可以使用./xxx.py执行了.因为在linux中,python啊shell这些程序都是普通的文本格式,都需要一种程序去解释执行它.要么调用的时候指定,要么在文件头指定.

阳明区13837927090: 如何在linux系统中安装python? -
乌禄丽芝: Linux系统默认是安装有python,可以先在终端输入: python 然后看看是否有回显,如果有就不需要安装了.如果没有,可以按照下面得方法安装: 打开终端,输入:wget 下载完毕后 输入解压命令:tar –zxvf Python-3.5.0b4.tgz 切换到解压的目...

阳明区13837927090: 如何在linux中运行python -
乌禄丽芝: 当然首先要安装Python解释器:sudo apt-get install python在Python脚本文件的头部加上:#!/usr/bin/python然后赋予文件执行的权限:chmod +x xxx.py就可以运行了

阳明区13837927090: python 在linux中怎么写程序 -
乌禄丽芝: 跟windows下没什么区别的,如果在.py文件首行加上#!/usr/bin/python,就可以在linux中直接 ./xxx.py运行了.

阳明区13837927090: linux 终端 运行 python -
乌禄丽芝: Linux终端中的操作均是使用命令行来进行的.因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境中将python用起来. 打开命令行窗口 打开命令行窗口的快捷键如下: Ctrl + Alt + t 关闭名命令行窗口 关闭命令...

阳明区13837927090: linux下python 2.7如何使用 -
乌禄丽芝: 运行python终端的话 直接输入python 也可以加参数运行,这就比windows下面方便一些.你的py程序可以不以“.py”结尾,linux系统不是通过扩展名来判断文件格式的.py脚本对于linux系统来说就是文本文件.编写程序的时候有一点和windows...

阳明区13837927090: 兄弟问你一个问题,在linux中如何运行python 的 *.py文件,对linux系统不熟悉,谢谢先 -
乌禄丽芝: 分两步:1. python文件需要加:#!/usr/bin/env python2. 更改文件的可执行权限:chmod u+x hello.py hello.py内容如下:#!/usr/bin/env python print "hello world!"

阳明区13837927090: 如何在linux下创建python脚本 -
乌禄丽芝: Linux下创建并执行Python脚本 vim first.py [python]#! /usr/bin/env python list = [ 1,2,3,4,5,6,7,9,10,11] tuple = (1,2,3,4,5,6,7,9,10) print list print tuple 执行py脚本 [plain]python first.py 或者 [plain]chmod u+x first.py ./first.py 环境配置说明: [plain] #!...

阳明区13837927090: LINUX下社PYTHON编程! -
乌禄丽芝: python一般是默认安装的 终端输入python2或者python 应该会弹出python的版本信息,然后是命令提示符$ python2 Python 2.7 (r27:82500, Oct 6 2010, 12:18:19) [GCC 4.5.1] on linux2 Type "help", "copyright", "credits" or "license" for ...

阳明区13837927090: Mac OS, Windows, Linux 下如何运行一个Python 程序 , 指的是输入什么命令能运行该Python -
乌禄丽芝: 启动控制台,并在窗口中输入如下命令(假定python被安装在默认位置)---控制台的输出以黑体显示,用户输入将以细体字显示:C:\>cd c:\py3eg C:\py3eg\>C:\Python30\python.exe hello.py cd (切换目录)命令使用了绝对路径,它不管你的起始路径在哪. Unix用户可以使用下面的命令(假定python 3 在PATH环境变量中)$ cd $HOME/py3eg$ python3 hello.py 这两种情况下的输出都是一样的:Hello World! 注意除非特别说明,否则python在Mac OS X系统下的行为和在其他Unix系统下是一样的.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网