展开全部

你说的总体是可行的,路由器都会提供一个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路由器?...相关推荐

  1. 怎么装python解析器_linux 下安装 python 解析器

    默认情况下不同版本的 linux 下都会自带一个 python ,一般是以2系列居多 实际开发中肯定会用到3系列,因此我们需要重新安装一个 python 需要注意的是原本的 python2系列不需要卸 ...

  2. linux python虚拟环境搭建_Linux 下创建python 虚拟环境

    简要记录 Linux 下安装python虚拟环境的方法.以下内容基于 python2.7 版本 1 安装virtualenv pip install virtualenv 检查版本 virtualen ...

  3. vim python 代码提示_linux下vim python代码自动补全

    一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.p ...

  4. linux python版本_linux下更新Python版本并修改默认版本

    linux下更新Python版本并修改默认版本,有需要的朋友可以参考下. 很多情况下拿到的服务器python版本很低,需要自己动手更改默认python版本 1.从官网下载python安装包(这个版本可 ...

  5. python android自动化元素定位_linux下Appium+Python移动应用自动化测试实战---3.手把手教你定位元素编写测试用例...

    linux下Appium+Python移动应用自动化测试实战-3.手把手教你定位元素编写测试用例 前言 有很多童鞋环境搭建好了却没有进行下一步,是因为缺少step by step的资料. 互联网上ap ...

  6. linux python连接oracle数据库_Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法...

    本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL.Oracle.SQL Server数据库. 其中包括以下几个软件的安装及配置: ...

  7. python获取终端输出流_Linux下用Python获取命令行输出的几个方案

    Python在慢慢成为脑影像数据处理中的主流语言.而在做脑影像处理时,不免有时候需要用到一些别人开发好的工具包,而这些包并不都是python包.下面是学习啦小编收集整理的Linux下用Python获取 ...

  8. 同一个电脑可安装多个python版本吗_Linux下如何安装多个Python版本

    原标题:Linux下如何安装多个Python版本 导读服务器上的Python版本太老了,需要安装一个新的Python版本,才能跑我的代码.因为环境的需要,但是又不能卸载老的版本,所以安装一个新的,使用 ...

  9. linux 下载python命令_Linux下修改Python命令的方法示例(附代码)

    本篇文章给大家带来的内容是关于Linux下修改Python命令的方法示例(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Linux默认python命令指向的是/usr/bi ...

最新文章

  1. ad中电容用什么封装_干货 | 为什么单相电机要用电容,三相电机不需要电容?...
  2. 程序员如何精确评估开发时间?
  3. Jenkins系统上的时间不正确问题
  4. 栈应用:实现二进制转八进制、十进制、十六进制
  5. python积分计算_fx-CG系列图形计算器CAS应用程序Khicasen
  6. listview中有按钮、图片等需要不同点击处理的控件如何处理
  7. MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid
  8. 基于STM32F4的NRF24L01驱动程序
  9. mysql 中的 SCHEMATA 表
  10. 利用@media与@media screen进行响应式布局
  11. HTML表格的单元格合并及th标签
  12. 聊聊最简单的名词:频率
  13. Unity DOTS 学习笔记2 - 面向数据设计的基本概念(上)
  14. SQLServer STUFF 函数理解
  15. doraemon的python 格式化排版
  16. 我也曾对架构师的力量一无所知
  17. (C语言打印图形题5)编程,输入n,输出如下例(n=4)所示的高和上底均为n的等腰梯形。
  18. 搞搞网站任务_001
  19. php 购物车 方法,php购物车实现方法
  20. 【百度语音爬坑】-JAVA对PCM文件格式处理(已解决)

热门文章

  1. 《Python数据分析与挖掘实战》第15章 ——电商产品评论数据情感分析(LED)
  2. 计算机网络自顶向下方法(一)——计算机网络和因特网
  3. 从DBSCAN算法谈谈聚类算法
  4. Django基础学习
  5. 华为鸿蒙harmony操作系统 安装使用及下载地址
  6. python操作mongodb_python 操作 mongodb
  7. C#调用WPS转换文档到PDF的的实现代码。
  8. 【初学者】新浪云平台部署与调试云应用
  9. Python-数码时钟
  10. perl统计--序数词基数词字母词时间