2017-05-16 59 views
0

我想從ipmi傳感器的輸出中獲得一些信息,例如CPU_TEMP,CPU_FAN,...並保存另一個API使用的值。守護進程將從遠程發送命令來收集所有主機的硬件狀態。如何使用FreeIPMI API阻止ipmi傳感器輸出到標準輸出

我在跟蹤ipmi-sensors.c和相關文件的代碼,例如ipmi-sensors-simple-output.c和ipmi-sensors-detail-output.c。我發現ipmi-sensors默認輸出到stdout。在main(),IPMI標準的傳感器調用ipmi_sensors_argp_parse第一,

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

我想從一個API獲取IPMI標準的傳感器的數據,我不使用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的全部內容?

感謝您的幫助。

+0

也許嘗試使用這個[如何緩衝內存和寫入它的專用線程](http://stackoverflow.com/a/956269/3309645 ) –

回答

1

FreeIPMI維護者在這裏。我相信你正在尋找的API是「libipmimonitoring」,它約佔ipmi-sensors中的90%。

+0

是的,我已經閱讀libipmimonitoring文件夾中的ipmi-monitoring.c,但我有另一個問題,與ipmitool的結果比較,輸出是不同的,我想獲取全部DIMM信息來檢查DIMM已經是插件,但沒有在ipmi-monitoring.c中找到的信息。 –

+0

對於那些進入這個線程遲到,回答以前的評論後續在這個線程:https://stackoverflow.com/questions/44296332/get-all-dimm-information-from-ipmi-using-freeipmi-api –