📄 get_df.c
字号:
#include "public.h"
//#include "monitor.h"
//#include "msgqueue.h"
#include "sysmoni.h"
#include "standdb.h"
/************************************************************/
/* 文件名 : get_df.c */
/* 描述 : 使用系统命令取得磁盘信息,输入到一个文本里,*/
/* 按行分析文件信息,如果信息包含告警内容则告警*/
/* 如果告警不成功将其写入异常处理文件 */
/* 编写人 : genius.xuyong */
/* 创建日期: 16 Aug. 2002 */
/* 修改 : */
/************************************************************/
extern long gl_qmsgsend; /*引用全局变量*/
/************************************************************/
/* 函数 : get_df(char * acz_device) */
/* 描述 : 使用系统命令取得磁盘信息,输入到一个文本里,*/
/* 按行分析文件信息,如果信息包含告警内容则告警*/
/* 如果告警不成功将其写入异常处理文件 */
/* 输入参数: acz_device (设备名) */
/* 输出参数: 无 */
/* 编写人 : genius.xuyong */
/* 创建日期: 16 Aug. 2002 */
/* 修改 : */
/************************************************************/
int get_df( char *acz_device,
char *acz_machine_code,
char *acz_module_code,
char *acz_object_code,
char *acz_create_time)
{
FILE* lh_file;
char lcz_buf[LEN];
int i;
system("df -k >out/disk.dat"); /*系统命令:df -k */
/* 取得磁盘空间信息和i节点信息*/
lh_file = fopen("./out/disk.dat","r");
if ( NULL == lh_file )
{
printf("open file disk.dat error!\n");
fclose( lh_file );
return( -1 );
}
/**清空内存缓冲值**/
memset(&ls_disk,0x00,sizeof(ls_disk));
memset(lcz_buf,0x00,LEN);
i=0;
/**从文件中按行读出一行放到lcz_buf中,如到文件尾退出**/
while (NULL != fgets(lcz_buf,sizeof(lcz_buf),lh_file))
{
/* 如果该行中不包含"/yldc",继续读下一行,否则
分解字符串到DISKINFO结构的数组中
*/
/* if (NULL==strstr(lcz_buf,"/yldc"))
{
continue;
}
*/
/* Modified by Guoql in 8.5.2005 */
if (NULL==strstr(lcz_buf,"/"))
{
continue;
}
else
{
decompose_disk(lcz_buf,acz_machine_code,acz_module_code,acz_object_code,acz_create_time);
i++; /*计数值,得到有效的ls_disk个数*/
}
}
fclose( lh_file );
/* deal_disk(&ls_disk,i,acz_device,acz_unusualfile,acz_lckfile,acz_procname); /*处理磁盘信息*/
return ( 0 );
}
/************************************************************/
/* 函数 : decompose_disk() */
/* 描述 : 将字符串的内容输入到DISKINFO的结构数组中 */
/* 输入参数: acz_buf ,as_disk地址 */
/* 输出参数: as_disk内容 */
/* 编写人 : genius.xuyong */
/* 创建日期: 16 Aug. 2002 */
/* 修改 : */
/************************************************************/
int decompose_disk(char *acz_buf,char* acz_machine_code,char* acz_module_code,char* acz_object_code,char * create_time)
{
int i,j,k;
char lc_char;
char lcz_tmp[6][19];/*df -k产生的数据项为6项*/
char complete_time[20]="";
long ll_pos;
char lc_state[10]; /*磁盘属性状态*/
char lc_code[10][10]; /*磁盘属性编码*/
char gcz_df[10][20]={"filesystem","kbytes","used","avail","capacity","mounted on"}; /* 磁盘模块属性数组*/
/*设置lcz_tmp位置为lcza_tmp[k][j]*/
memset(lcz_tmp,0x00,sizeof(lcza_tmp));
j=0;
k=0;
/*将字符串分解到lcz_tmp中*/
for (i=0;;i++)/*this cycle is read a char from the buffer char*/
{
lc_char=acz_buf[i];/*put the buffer char to lc_char*/
if (lc_char=='\n')/*if the char is the end of the buffer*/
{
if (j>0) /*if counter j >0,mean lcz_tmp not null*/
{
lcz_tmp[k][j]='\0';
if (lc_state[k]=='1')
{
get_format_time(complete_time,sizeof(complete_time));
Write_MonitorInfo(lc_code[k], acz_object_code,lcz_tmp[k],create_time,complete_time);
}
}
break; /* the exit of the cycle*/
}
if (lc_char!=0x20) /*if the char is not null*/
{
lcz_tmp[k][j]=lc_char;
j++; /*the value of lc_char append to lcz_tmp */
}
else
{
if (j>0)
{
lcz_tmp[k][j]='\0';
memset(lc_state,0x00,strlen(lc_state));
memset(lc_code,0x00,10);
if (k==0)
{ memset(lc_state,0x00,strlen(lc_state));
memset(lc_code,0x00,10);
Read_Property(gcz_cpu,acz_module_code,lc_state,lc_code);
if ( Read_Object(lcz_tmp[k], acz_module_code,acz_object_code)==0)
break;
}
if (lc_state[k]=='1')
{
get_format_time(complete_time,sizeof(complete_time));
Write_MonitorInfo(lc_code[k], acz_object_code,lcz_tmp[k],create_time,complete_time);
}
k++;
}
memset(lcz_tmp,0x00,10);/*set lcz_tmp is null*/
j=0; /*set the first position is lcz_tmp[0]*/
}
}
return ( 0 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -