开发背景
openUBMC调试资源树可以使用mdbctl或者busctl。但mdbctl的功能不够完善(例如没有busctl introspect对等功能,已提需求),而原生busctl命令输入参数冗长,影响调试效率。
工具简介
ibusctl(intelligent busctl缩写)是使用bash脚本实现的对busctl的封装,优化功能点如下:
1、智能推断
考虑主要场景是使用tree、introspect、call、get-property、set-property调试资源树property和method,例如我们使用原生busctl调试ActivateFirmware方法,需要输入多个长参数命令:
# 1、使用list命令找到bios服务名
busctl --user --no-pager list | grep bios
# 2、使用tree命令找到方法所在路径
busctl --user --no-pager tree bmc.kepler.bios
# 3、使用introspect命令找到方法所在接口
busctl --user --no-pager introspect bmc.kepler.bios /bmc/kepler/Systems/1/BiosUpgradeService
# 4、调用call命令调试方法
busctl --user --no-pager call bmc.kepler.bios /bmc/kepler/Systems/1/BiosUpgradeService bmc.kepler.Systems.BiosUpgradeService ActivateFirmware a{ss}as 0 1 "XXX"
键入4个长命令需要多次修改前面的命令字,call需要复制SIGNATURE,针对这些问题,ibusctl做了几点优化
1.1、根据参数长度推断命令
会根据输入参数,自动推断添加命令字和加上 --user --no-pager(考虑openUBMC都是用户总线和不分页显示)
- 输入ibusctl 推断使用 busctl --user --no-pager list
- 输入ibusctl [service] 推断使用 busctl --user --no-pager tree [service]
- 输入ibusctl [service] [path] 推断使用 busctl --user --no-pager introspect [service] [path]
- 输入ibusctl [service] [path] [interface] [method] […] 推断使用 busctl --user --no-pager call [service] [path] [interface] [method] [signature] […]
- 输入ibusctl [service] [path] [interface] [property] 推断使用 busctl --user --no-pager get-property [service] [path] [interface] [property]
- 输入ibusctl [service] [path] [interface] [property] […] 推断使用 busctl --user --no-pager set-property [service] [path] [interface] [property] [signature]
1.2、自动添加call和set-property参数格式
使用call或set-property时,自动查询添加SIGNATURE字段信息,无需手动输入
1.3、自动忽略复制的property或method的前缀下角点
由于busctl展示的property或method前面都有一个下角点(.),ibusctl会自动忽略这个点,方便复制粘贴
ibusctl使用示例
还是以调试ActivateFirmware方法为例
# 1、找到bios服务名
ibusctl | grep bios
# 2、找到方法所在路径
ibusctl bmc.kepler.bios
# 3、找到方法所在接口
ibusctl bmc.kepler.bios /bmc/kepler/Systems/1/BiosUpgradeService
# 4、调试ActivateFirmware方法
ibusctl bmc.kepler.bios /bmc/kepler/Systems/1/BiosUpgradeService bmc.kepler.Systems.BiosUpgradeService .ActivateFirmware 0 1 "XXX"
2、支持命令字后置
智能推断主要针对的常用命令字tree、introspect、call、get-property、set-property,如果使用其他命令字或者这五个命令字的智能推断不符合要求,可以在任意参数位置输入命令字(list status monitor capture tree introspect call emit get-property set-property help),ibusctl会自动将命令字移动到第一个参数,且不再智能推断添加
工具使用
下载链接
论坛无法上传bash脚本作为附件,使用网盘分享:
链接: ibusctl_免费高速下载|百度网盘-分享无限制
手动拷贝使用
-
SCP等将ibusctl手动拷贝到OpenUBMC环境的/tmp路径
-
telnet登录拷贝到/usr/sbin/等路径下,并加上执行权限
-
执行

-
使用ibusctl
PS:如果大家觉得ibusctl对大家调试资源树有用,请点赞留言,如果用的人多会考虑申请合入社区,不再用手动拷贝使用

