python重启路由器_linux下的python里面如何用相关的网络模块来重启tp-link路由器?...
展开全部
你说的总体是可行的,路由器都会提供一个web 的访问控e68a84e8a2ad3231313335323631343130323136353331333332626133制界面,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!"
这是四段独立的代码!
python重启路由器_linux下的python里面如何用相关的网络模块来重启tp-link路由器?...相关推荐
- 怎么装python解析器_linux 下安装 python 解析器
默认情况下不同版本的 linux 下都会自带一个 python ,一般是以2系列居多 实际开发中肯定会用到3系列,因此我们需要重新安装一个 python 需要注意的是原本的 python2系列不需要卸 ...
- linux python虚拟环境搭建_Linux 下创建python 虚拟环境
简要记录 Linux 下安装python虚拟环境的方法.以下内容基于 python2.7 版本 1 安装virtualenv pip install virtualenv 检查版本 virtualen ...
- vim python 代码提示_linux下vim python代码自动补全
一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.p ...
- linux python版本_linux下更新Python版本并修改默认版本
linux下更新Python版本并修改默认版本,有需要的朋友可以参考下. 很多情况下拿到的服务器python版本很低,需要自己动手更改默认python版本 1.从官网下载python安装包(这个版本可 ...
- python android自动化元素定位_linux下Appium+Python移动应用自动化测试实战---3.手把手教你定位元素编写测试用例...
linux下Appium+Python移动应用自动化测试实战-3.手把手教你定位元素编写测试用例 前言 有很多童鞋环境搭建好了却没有进行下一步,是因为缺少step by step的资料. 互联网上ap ...
- linux python连接oracle数据库_Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法...
本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL.Oracle.SQL Server数据库. 其中包括以下几个软件的安装及配置: ...
- python获取终端输出流_Linux下用Python获取命令行输出的几个方案
Python在慢慢成为脑影像数据处理中的主流语言.而在做脑影像处理时,不免有时候需要用到一些别人开发好的工具包,而这些包并不都是python包.下面是学习啦小编收集整理的Linux下用Python获取 ...
- 同一个电脑可安装多个python版本吗_Linux下如何安装多个Python版本
原标题:Linux下如何安装多个Python版本 导读服务器上的Python版本太老了,需要安装一个新的Python版本,才能跑我的代码.因为环境的需要,但是又不能卸载老的版本,所以安装一个新的,使用 ...
- linux 下载python命令_Linux下修改Python命令的方法示例(附代码)
本篇文章给大家带来的内容是关于Linux下修改Python命令的方法示例(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Linux默认python命令指向的是/usr/bi ...
最新文章
- ad中电容用什么封装_干货 | 为什么单相电机要用电容,三相电机不需要电容?...
- 程序员如何精确评估开发时间?
- Jenkins系统上的时间不正确问题
- 栈应用:实现二进制转八进制、十进制、十六进制
- python积分计算_fx-CG系列图形计算器CAS应用程序Khicasen
- listview中有按钮、图片等需要不同点击处理的控件如何处理
- MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid
- 基于STM32F4的NRF24L01驱动程序
- mysql 中的 SCHEMATA 表
- 利用@media与@media screen进行响应式布局
- HTML表格的单元格合并及th标签
- 聊聊最简单的名词:频率
- Unity DOTS 学习笔记2 - 面向数据设计的基本概念(上)
- SQLServer STUFF 函数理解
- doraemon的python 格式化排版
- 我也曾对架构师的力量一无所知
- (C语言打印图形题5)编程,输入n,输出如下例(n=4)所示的高和上底均为n的等腰梯形。
- 搞搞网站任务_001
- php 购物车 方法,php购物车实现方法
- 【百度语音爬坑】-JAVA对PCM文件格式处理(已解决)