¿Cómo utilizar módulos de red relacionados para reiniciar el enrutador tp-link en Python en Linux?
Lo que dijiste es generalmente factible. Los enrutadores proporcionarán una interfaz de control de acceso web. Python urllib2 puede usar POST para iniciar sesión. El siguiente es el encabezado del código para iniciar sesión. BBS. :req=urllib.request.Request(url)
req.add_header('Agente de usuario','Mozilla/5.0')
req.add_header('Contenido- Escriba' ,'application/x-www-form-urlencoded')
params=urllib.parse.urlencode({'id': nombre de usuario,
'login.x': 24,
'login.y': 8,
'login': 'iniciar sesión',
'pw': contraseña,
'titletype':'foro'
})
params=params.encode('gb2312')
print('¿Enviar?solicitud!esperando ?respose .....')
res=urllib2.urlopen(req, params)
A continuación se explica cómo inicio sesión en el enrutador a través de ppp: #!/usr /bin/python p>
#
#?Licencia:?GNU?GPL?v2
#?
#?Script?para ?comtrend?hg536 ?( ?firmware?A101-302JAZ-C03_R21.A2pB021g.d15h?)
#?Estos?scripts?se?conectan?al?enrutador?y?restablecen?ip?en?45s.? En?este?ejemplo?, utilice?valores?predeterminados?para?jazztel?.
import?getpass
import?sys
import?telnetlib
¿hora de importación?
HOST?=?"192.168.1.1"
INICIAR SESIÓN?=?"admin"
PASS?=?"admin "
¿PROMPT?=??-gt;?"
TIEMPO DE ESPERA?=?40?#?Número?de?segundo
NOMBRE DE CONEXIÓN?=? "0.8.35?2 "?#?para?ver?sus?conexiones,?conéctese?manualmente?al?enrutador?(telnet?192.168.1.1)?y?use?"wan?show"?.¿Debería? elija?su?conexión?PPPoE??utilice?una?combinación?de?VCC??Con?Id.?Para?ejemplo?""0.8.35?2""
tnt?=?telnetlib. Telnet(HOST)
p>tnt.read_until("Iniciar sesión:?")
tnt.write(INICIAR SESIÓN? ?
"\n")
tnt.read_until("Contraseña:?")
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")
hora. dormir(TIEMPO DE ESPERA)
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()
Reinicie el enrutador a continuación: #!/usr/bin/env?python
#?-*-?coding : ?utf-8?-*-
importar?sys
importar?telnetlib
importar?re
importar?time< / p>
import?sys
import?os
HOST?=?"192.168.2.1"
contraseña?=?"contraseña"< / p>
clase?bcolores:
ENCABEZADO?=?'\033[95m'
OKBLUE?=?'\033[94m'
OKGREEN?=?'\033[92m'
¿ADVERTENCIA?=?'\033[93m'
¿FALLO?=?'\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") p >
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?=?""
intentar:
tn?=?telnetlib.Telnet(host=HOST
, tiempo de espera = 23)
excepto?IOError:
imprimir?"Nie?nawi?zano?po?czenia?: (\n"
más:
tn.read_until("Contraseña:?")
tn.write(contraseña? ?"\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("salir\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 ('actual?módem?estado:?abajo',?odb):
#print?"Estado:?abajo"
drukuj(bcolors.HEADER? ?"Estado:? abajo"? ?bcolors.ENDC)
if?re.search('current?modem?status:?wait?for?initialization',?odb):
#print? "Estado:?esperar?para?inicialización"
drukuj(bcolors.WARNING? ?"Estado:?esperar?para?inicialización"? ?bcolors.ENDC)
if?re .search('current?modem?status:?initializing',?odb):
#print?"Status:?initializing"
drukuj(bcolors.WARNING? ?"Status :?inicializando"? ?bcolors.ENDC)
if?re.search('current?modem?status:?up',?odb):
#print?"Status :?up"
drukuj(bcolors.OKBLUE? ?"Estado:?up"? ?bcolors.ENDC)
return?odb
def?clear ():
si?os.nam
e?==?"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
más:
time.sleep(3)
status("wan?adsl?status\n")
time.sleep(3) A continuación, reinicie el enrutador a través de telnet#!/usr/bin/env?python
#?-*-?codificación:?utf-8?-*-
importar?telnetlib
HOST?=?"192.168.1.1"
USUARIO ?=?"root"
PASS?=?"admin"
enrutador?=?telnetlib.Telnet(HOST)
enrutador.read_until(" : ?",?2)?#?esperar?por?tiempo de espera?o?"BusyBox?on?localhost?login:?"
router.write(USUARIO? ?"\n") p >
router.read_until(":?",?2)?#?wait?for?timeout?o?"Contraseña:?"
router.write(PASS? ?"\n " )
router.read_until("#?",?2)?#?esperar?por?tiempo de espera?o?"#?"
router.write("reiniciar\ n ")
router.close()
imprimir?"¡Listo!"
¡Estas son cuatro piezas de código independientes!