init 6
systemctl reboot
reboot/restart
重启网络
systemctl restart network
if down 网卡名 关闭网卡
if up 网卡名打开网卡
ip a 查看网卡名字
ifconfig 也能看到网卡名
你说的总体是可行的,路由器都会提供一个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!"
这是四段独立的代码!
DD-WRT(简称DD)是一个Linux开源 *** 作系统,实质它是第三方的路由器固件。路由和网管功能非常强大,通常我们使用的路由器设备,都具有一个独立的 *** 作系统(英文简称OS),用于对路由器设备进行各种功能设置和管理。其实我们通常所说的升级路由器固件,也就是指升级刷新路由设备里面的 *** 作系统,以使得路由器设备的功能更加强大。常见的第三方路由器固件还有番茄(Tomato)等。方法:
采用Web方法刷
确认自己的路由器可否使用Web方式刷新,当然大部分路由器都可以这样做。Web方式刷新其实就是路由器设置菜单里面的“更新路由器固件”功能。虽然不是更新同厂的固件,但是也是可以用的,这种升级方式最为方便。
1、确认路由器支持DD、没有特别刷新方法的说明。本教程是以Linksys WRT150N V1 无线路由器为例。
2、下载适合路由器的固件版本。通常都会支持中文或其他网友发布的汉化。最好准备一份路由器的原厂固件,以备恢复时使用。
注意:如果想要下载最新版本,可以进入Feko目录下载,不过这个目录里的固件不是最终版,属于SVN(Subversion)。如果不是为了尝新或者路由器有兼容问题,建议还是不要这么做了。4、后者将进入Boot模式将新的固件加载到路由器上,优点是可以避免内存不足而造成的失败。
5、如果提示刷新失败,建议重启路由器再进行刷新。如果重启后还是失败,那么就得分析具体原因了,看看是不是版本不合适引起的。例如是不是固件太大了,超过路由器的容量等。
注意:下载的DD固件通常是bin为扩展名,如果路由器不支持这种格式升级,可以尝试修改扩展名为支持的类型;强烈建议大家使用有线连接路由器的方式刷新;刷新期间不要关闭路由器电源,一直要等刷新结束再进行 *** 作。
3、登录Linksys的管理界面→固件升级,点击“浏览”找到下载的DD-WRT固件。这款路由器提供两种升级方式,一种是常规的“升级”,一种是“安全升级”
采用Web方法刷
确认自己的路由器可否使用Web方式刷新,当然大部分路由器都可以这样做。Web方式刷新其实就是路由器设置菜单里面的“更新路由器固件”功能。虽然不是更新同厂的固件,但是也是可以用的,这种升级方式最为方便。
采用TFTP方法刷
TFTP是Windows内置的一个命令。在命令提示符下进行 *** 作。使用TFTP刷新请用网线把电脑和路由器的LAN口相连接。
1、确认路由器支持DD,且只能用TFTP的刷新方法。然后根据路由器型号、下载对应的DD固件版本。某些路由器刷DD使用TFTP有特别说明,一定要看仔细。
2、在开始菜单中选运行然后输入CMD并回车进入命令提示符。输入ipconfig /all了解当前的路由器的IP地址,一般默认都是192.168.1.1。建议手动分配一个地址。防止重启后IP发生变化。请设置电脑和路由器在同一个网段,例如192.168.1.2。然来将dd-wrt.bin固件文件放到C盘的根目录。3、假设路由器IP是192.168.1.1,输入命令ping 192.168.1.1 -t并回车看通不通得了,通了就OK。然后重启路由器(通过Web界面)。
4、因为需要在启动的时候刷新,所以先输入tftp -i 192.168.1.1 put dd-wrt.bin,但是先不要敲下回车键。
5、重启路由器(有的路由器非要使用Reset按钮才能进入TFTP模式),按下回车。也有一种说法是看路由器指示灯,当所有指示灯一闪而灭的瞬间,按下回车输入命令。成功之后会出现successful的提示,如果失败就再来一次。出现successful之后,还需要你耐心等待几分钟,不要进行任何 *** 作。
刷新失败:
先断开电源重启、按复位(Reset)键等 *** 作看有没有变化。如果没有变化,试试看用TFTP法刷新。如果还不行,可以去买一条路由器相配套的JTAG线,通过它可以把路由器救活。淘宝有些卖家在质保期内也会提供免费救活服务。
PS: DD-WRT里不要盲目加大功率,毕竟信号太强会对身体有伤害。如果信号够用还可以适当降低标准信号功率,从而减少无线信号对人体的辐射。对有些路由器作用并不大,反而是增加无线干扰或导致无线网卡损坏导致经常断线和无信号,而且这种损害是不可逆的和不能修复的,坏了就成砖头,有可能导致路由报废。请大家切记!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)