Python连接ROS

Python脚本连接ROS脚本

说明:

以下均为实际遇到过的需求,如有其他需求,可在官网查看写法
或自行Google routeos api,有不懂或者有问题,可私信沟通
此脚本为连接ROS,并执行命令,这里只用到了ping命令,还有其他写法
如:
  1. api.get_resource(“/tool”).call(“traceroute”, {“src-address”: “源地址”, “routing-table”: “指定路由” , “address”: “对端地址”, “count”: “1”})
    不需要的字段可以直接backspace掉

  2. 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服务器

  3. api.get_resource(‘/’).call(“export”, {“file”: ‘文件名’})
    输出配置到文件

  4. api.get_resource(‘/file’).call((“print”))
    获取ROS中保存的所有文件

  5. 以下代码块为获取所有文件,删除指定文件

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定位文件
  1. 完整的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返回值,获取自己想要的结果
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值