目录
前章介绍了PyCharm的安装,本章将讲如何使用PyCharm调用ros api接口执行ros命令
一、执行环境
引实验使用的软件及版本号如下表所示:
软件名 | 版本 | 安装方式 | 说明 |
python | 3.8 | exe | win 64位上安装 |
PyCharm | 2020.2 | exe | 目前最新稳定版 |
routeros模块 | 0.1.1 | pip | 一个python模块,可以直接使用PyCharm添加 |
ros | 6.47.8 | 虚拟机 | 运行ros vm虚拟机即可 |
二、使用PyCharm创建ros项目
2.1 创建新项目
按《python 开发工具PyCharm安装》的"建立一个简单的python项目"方式创建一个新项目,我这里名为ros-csdn吧
PS:如果项目打开过的话,可以先关闭,操作如下 "File-->Close Project"
2.2 添加routeros模块
要实现python连接ros api 可以按ros api官方的要求实现序列化,但是太麻烦不适合初学者,python有现成的routeros模块直接使用即可。routeros模块目前版本为0.1.1,文档是也介绍了它的安装方式,我这里直接使用PyCharm安装了。操作如下:
PS:其实PyCharm安装也相当于在PyCharm终端中执行 “pip install routeros ”
安装完之后,发现多了一个routeros,表示安装完成了
ps:以后安装模块都可以使用此方式,为了美化打印,我们一般也打prettyprinter安装上去。
2.3 创建一个ros连接
2.3.1 routeros使用说明
按照python的routeros模块使用说明
知道使用它的步骤是
- 导入routeros模块
- 使用login方法创建routeros对象:对象名=login(<'用户名'>,<'密码>',<'ip'>,[端口号]),如果不写端口号则使用默认
- 执行ros命令:对象名('ros命令'),这里的 ros命令可以用单引号也可以双单号,有三引号,如果含有python变量使用双引号
2.3.2 创建一个例子
我们就按上面的例子创建一个试下,
输入下面代码
from routeros import login
# 我用winbox打开 api端口号改为9000了,默认是8728
ros = login('hua', '123', '192.168.2.6')
# 执行ros命令,与ros命令行不同的是,要把命令间的空格改为"/"即可
# 比如 /ip pool print 则改为“/ip/pool/print”即可
result = ros('/ip/pool/print')
#打印结果
print(result)
ps:值得注意的是 ros api使用的密码不要用特殊字符,否则会报 “routeros.exc.FatalError: not logged in” ,没有登录进去
写完后运行一下python,如下
下面是执行结果,如下:
在最上面菜单中会生成一个以这个python命令的配置这里是“ipPool”,以后就点旁边的绿色小三角运行即可,如下图所示:
2.3.3 从结果取需要的值
从上面的结果
({'.id': '*2', 'name': 'pppoe1', 'ranges': '10.10.1.10-10.10.1.250'},)
得知是元组,嵌套字典组成,如果要获取ip地址池和ip范围,可以使用如下python代码
from routeros import login
# 我用winbox打开 api端口号改为9000了,默认是8728
ros = login('hua', '123', '192.168.2.6')
# 执行ros命令,与ros命令行不同的是,要把命令间的空格改为"/"即可
# 比如 /ip pool print 则改为“/ip/pool/print”即可
result = ros('/ip/pool/print')
# print(result)
print("ip地址名:", result[0]['name'])
print("IP地址为:", result[0]['ranges'])
上面的 result[0]['name']意思是取元素第1个元素,但元素是一个字典,取字典的值可以直接使用 ['key'] 这种方式
三、预习ros api用法
我以后将花几章来讲解ros api的用法 ,可以先看一下ros api官方文档