Red de conocimiento informático - Aprendizaje de programación - ¿Cómo utilizar módulos de red relacionados para reiniciar el enrutador tp-link en Python en Linux?

¿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

#

#?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")

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")

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!