我正在尝试从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数据,我不使用argcargv,而是标记argcargv并为此修改函数调用的内容。

然后main()调用另一个func pstdout_setup设置输出的标准输出

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的任务?还是我需要使用forkdup2将标准输出重定向到流或文件?还是我需要重写ipmi-sensors的所有部分?

谢谢你的帮助。

最佳答案

FreeIPMI维护者在这里。我相信您正在寻找的API是“ libipmimonitoring”,它可以完成ipmi-sensors的90%。

关于c - 如何使用FreeIPMI API防止IPMI传感器输出到标准输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43997929/

10-11 21:59