python登录华为路由器

最近工作需要,利用华为路由器和TP-Link交换机,临时搭建了一个基于4G网络的局域网,为了可以在后台及时将流量断开节省流量,特别研究了一下pyhon中对浏览器的模拟。

模拟架构是 python + selenium + EdgeDriver/PhandomJS

其中,Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。

python 的Selenium支持包 可以直接在CMD中运行以下命令来完成安装:

python -m pip install selenium


或者,在以下链接下载安装:https://pypi.python.org/pypi/selenium  

解压,cmd进入目录:  

C:\selenium\selenium2.53.5> python3 setup.py install

Linux系统类似。


PhandomJS简介:

(1)一个基于webkit内核的无头浏览器,即没有UI界面,即它就是一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。      

(2)提供javascript API接口,即通过编写js程序可以直接与webkit内核交互,在此之上可以结合java语言等,通过java调用js等相关操作,从而解决了以前c/c++才能比较好的基于webkit开发优质采集器的限制。      

(3)提供windows、linux、mac等不同os的安装使用包,也就是说可以在不同平台上二次开发采集项目或是自动项目测试等工作。


简单来说,PhandomJS就是一个没有界面的浏览器,它可以帮助python完成浏览器需要完成的工作。


至此,我们就可以干活了,但PhandomJS没有界面也限制了我们进行实时调试。

为了辅助进行调试,我们需要安装一个浏览器的driver,我主机用的是win10 系统的Edge浏览器,在微软官方网站有Edge webdriver的下载链接,下载好就是一个exe文件,添加到系统的PATH环境变量中,或者和编写的py脚本放在同一个目录下,就OK了。

Edge webdriver的下载链接:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

有了它,我们可以用脚本网上冲浪了!


先上代码:

import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

def main():
#driver = webdriver.Edge()
    driver = webdriver.PhantomJS(executable_path="phantomjs.exe")
    driver.get("http://192.168.20.1/html/home.html")
    elem_login_edge = driver.find_element_by_id("logout_span")
    elem_login_edge.click()
    driver.find_element_by_id("username").send_keys("admin")
    driver.find_element_by_id("password").send_keys("qatest")
    driver.find_element_by_id("pop_login").click()
    print("waiting for login...")
    time.sleep(2)
    print("OK!")
    driver.find_element_by_id("mobile_connect_btn").click()
    
    #driver.quit()

if __name__ == '__main__':
    main()

简单解释下,首先调用一个浏览器的driver,可以是我们调试用的Edge webdriver也可以是PhantomJS模拟浏览器,当然也可以用Firefox和Chrome的对应driver。

driver.get() 调用路由器登录界面。定位到登录按钮,登录按钮的HTML代码的id栏是logout_span,所以用find_element_by_id("ID")可以定位到该按钮。click()方法模拟鼠标单击,现在浏览器已经打开了登录界面,重新在HTML代码中分别定位 username和password,并调用send_keys()方法可以将用户名和密码填入文本框中。

最后定位登录按钮(pop_login),并单击,就完成了模拟登录的过程。


一开始并没有添加sleep指令,结果内核解析不到链接控制按钮,这里让系统等待2秒和web交互,然后就可以定位到这个按钮了,单击即可连接或者断开4G网络。


整体来讲还是比较简单的,对于这种JS框架进行登录的模式,用模拟浏览器的方式比较方便,但实际操作中,感觉效率一般,内核加载似乎时间比较长。


华为路由器配置导入导出通常涉及到设备配置文件的备份和恢复。在Python中,可以通过网络编程库如paramiko(一个用于SSH2协议的Python实现)来与华为路由器进行交互,实现配置文件的导入导出。以下是一个基本的概念性介绍: 1. 使用SSH库建立与路由器的远程连接:Python中的paramiko库可以用于与远程设备建立SSH连接。你需要先安装paramiko库,然后使用它创建一个SSH客户端实例,并通过正确的IP地址、端口、用户名和密码连接到路由器。 2. 执行命令进行配置文件操作:连接成功后,可以通过发送CLI命令到路由器来执行具体的导入导出操作。例如,使用`save`命令将当前配置保存到指定位置,或者使用`copy`命令将备份文件复制到路由器上。 3. 关闭连接:操作完成后,应当关闭与路由器的SSH连接,以释放资源。 这里提供一个简单的示例脚本框架,用于执行上述操作: ```python import paramiko # 初始化SSH客户端 ssh_client = paramiko.SSHClient() ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 设置连接参数 hostname = '路由器的IP地址' port = 22 # SSH默认端口为22 username = '用户名' password = '密码' try: # 连接到路由器 ssh_client.connect(hostname, port, username, password) # 导出配置文件 stdin, stdout, stderr = ssh_client.exec_command('display current-configuration') config = stdout.read().decode('utf-8') with open('huawei_config.txt', 'w') as f: f.write(config) # 注意:实际情况下,根据设备型号和配置的不同,可能需要其他命令来获取完整的配置文件。 # 如果需要导入配置文件,使用类似的命令和参数修改 # stdin, stdout, stderr = ssh_client.exec_command('copy 命令') except paramiko.AuthenticationException: print("认证失败,请检查用户名和密码") except paramiko.SSHException as sshException: print(f"无法建立SSH连接: {sshException}") except Exception as e: print(f"远程操作失败: {e}") finally: # 关闭连接 ssh_client.close() ``` 请注意,实际使用时需要根据实际网络环境和设备调整脚本中的参数,并且应该在执行此类操作之前确保有适当的权限和备份措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值