0

我正在尝试从 ipmi-sensors 的输出中获取一些信息,例如 CPU_TEMP、CPU_FAN ......并保存这些值以供另一个 API 使用。守护进程将从远程发送命令以收集所有主机的硬件状态。

我正在跟踪 ipmi-sensors.c 的代码和相关文件,例如 ipmi-sensors-simple-output.c 和 ipmi-sensors-detail-output.c。我发现 ipmi-sensors 默认输出到标准输出。在main()中,ipmi-sensorsipmi_sensors_argp_parse首先调用,

ipmi_sensors_argp_parse (/*argc, argv, */&cmd_args);

我想从 API 中获取 ipmi-sensors 数据,我不使用argc, argv,我标记了argcargv并为此修改了函数调用的内容。

然后 main() 调用另一个函数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任务吗?或者我是否需要使用forkand将标准输出重定向到流或文件dup2?还是我需要重写所有部分ipmi-sensors

谢谢你的帮助。

4

1 回答 1

1

FreeIPMI 维护者在这里。我相信您正在寻找的 API 是“libipmimonitoring”,它完成了 ipmi-sensors 中大约 90% 的功能。

于 2017-05-22T16:25:36.473 回答