我正在尝试从ipmi-sensors的输出中获取一些信息,例如CPU_TEMP,CPU_FAN,...并保存另一个API的值以供使用。守护进程将从远程发送命令以收集所有主机'硬件状态。
我跟踪ipmi-sensors.c的代码和相关文件,例如ipmi-sensors-simple-output.c和ipmi-sensors-detail-output.c。我发现ipmi-sensors默认输出为stdout。在main()中,ipmi-sensors首先调用ipmi_sensors_argp_parse
,
ipmi_sensors_argp_parse (/*argc, argv, */&cmd_args);
我想从API获取ipmi-sensors数据,我不使用argc
,argv
,我标记argc
,argv
并为此目的修改函数调用的内容。
然后main()调用另一个函数pstdout_setup
来设置输出的stdout
if ((hosts_count = pstdout_setup (&(prog_data.args->common_args.hostname),
&(prog_data.args->common_args))) < 0)
return (EXIT_FAILURE);
并启动它
if ((rv = pstdout_launch (prog_data.args->common_args.hostname,
_ipmi_sensors,
&prog_data)) < 0)
FreeIPMI在FreeIPMI中有任何API调用来执行ipmi-sensors
的任务吗?或者我是否需要使用fork
和dup2
将标准输出重定向到流或文件?或者我是否需要重写ipmi-sensors
的所有部分?
感谢您的帮助。
答案 0 :(得分:1)
FreeIPMI维护者在这里。我相信您正在寻找的API是&#34; libipmimonitoring&#34;,它大约占ipmi-sensors的90%。