Python脚本连接ROS脚本
说明:
以下均为实际遇到过的需求,如有其他需求,可在官网查看写法
或自行Google routeos api,有不懂或者有问题,可私信沟通
此脚本为连接ROS,并执行命令,这里只用到了ping命令,还有其他写法
如:
-
api.get_resource(“/tool”).call(“traceroute”, {“src-address”: “源地址”, “routing-table”: “指定路由” , “address”: “对端地址”, “count”: “1”})
不需要的字段可以直接backspace掉 -
api.get_resource(‘/tool’).call(“fetch”, {“address”: “地址”, “upload”: “yes”, “user”: “FTP账号”,“password”: “FTP密码”, “src-path”: “文件名”,“port”: “21”, “mode”: “ftp”, “dst-path”: “文件名”, “keep-result”: “yes”})
将文件上传至各平台搭建的FTP服务器 -
api.get_resource(‘/’).call(“export”, {“file”: ‘文件名’})
输出配置到文件 -
api.get_resource(‘/file’).call((“print”))
获取ROS中保存的所有文件 -
以下代码块为获取所有文件,删除指定文件
all_file = api.get_resource('/file').call(("print")) # 输出ROS所有文件
file_id = []
for i in all_file:
if i["name"] == '文件名':
file_id.append(i["id"])
conf_id = "".join(file_id)
del_conf_file = api.get_resource("/file")
del_conf_file.remove(id=conf_id) # 删除文件,通过文件id定位文件
- 完整的ping代码如下,可直接替换参数使用(需自行添加空余参数),注意需要在ROS放开api
import routeros_api
import os
ip = ''
username = ''
passwd = ''
# 封装过的登录ROS认证api函数,可直接copy
def log_in(ip, username, passwd):
connection = routeros_api.RouterOsApiPool(
ip,
username=username,
password=passwd,
port=8728,
plaintext_login=True,
ssl_verify_hostname=False)
api = connection.get_api()
return api
# 封装过的带认证输入命令的函数,可直接copy
def return_ping(api):
result = api.get_resource("").call("ping", { "address": "", "count": "5", "interval": "1"})
return result
if __name__ == '__main__':
api = log_in(ip, username, passwd)
result = return_ping(api)
ip = result[0]["host"]
time_list = []
for i in result:
try:
time_list.append(int(i['time'].replace('ms','')))
except:
time_list.append(0)
time = max(time_list)# time为ping命令的返回值,为ping5次的最大延时
# 有需要可以自行print返回值,获取自己想要的结果