⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adm.cc

📁 此源代码只用于学习,不得用于其他商业活动 .
💻 CC
📖 第 1 页 / 共 4 页
字号:
	S_TypeInfo *Type = gv_TypeInfo.Next;
	char Buffer[STRING_LEN];
	time_t Now;
  	struct tm  *Time;

  	time(&Now);
  	Time = localtime(&Now);
	mvhline(0,0,' ',COLS);
	mvhline(1,0,' ',COLS);
	mvhline(4,0,' ',COLS);
	mvhline(21,0,' ',COLS);
	mvhline(22,0,' ',COLS);
	mvaddstr(0,28,(char *)"集中监控系统──中国电信");
	mvaddstr(1,37,(char *)"主菜单");
	mvaddstr(3,0,(char *)"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	mvaddstr(4,0,(char *)"序号");
	mvaddstr(4,10,(char *)"监控类别");
	mvaddstr(4,30,(char *)"监控对象");
	mvaddstr(5,0,(char *)"────────────────────────────────────────");
	mvaddstr(19,0,(char *)"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	mvaddstr(22,0,(char *)"    Up Arrow=向上              Down Arrow=向下                 ESC=退出    ");
	mvaddstr(23,0,(char *)"    Right Arrow=向下翻屏       Left Arrow=向上翻屏             Enter=选择     ");
	mvhline(24,0,' ',COLS);
	while(Type != 0)
	{
		Type = Type->Next;
		lv_iTotalRow++; /*进程和磁盘空间总数*/
	}

	if (gv_iSelectedRow <= 0)
	{
		gv_iSelectedRow = lv_iTotalRow;
	}
	if (gv_iSelectedRow > lv_iTotalRow)
	{
		gv_iSelectedRow = 1;
	}
	if (gv_iStartRow <= 0)
	{
		gv_iStartRow = 1;
	}
	if (gv_iStartRow > gv_iSelectedRow)
	{
		gv_iStartRow = gv_iSelectedRow;
	}
	if (gv_iSelectedRow - gv_iStartRow >= 13)
	{
		gv_iStartRow = gv_iSelectedRow - 13 + 1;
	}

	Type = gv_TypeInfo.Next;
	while(Type != 0)
	{
		if (lv_iCurrentRow >= gv_iStartRow)
		{
			break;
		}
		Type = Type->Next;
		lv_iCurrentRow++;
	}

	while(Type != 0)
	{
		if (lv_iCurrentRow >= gv_iStartRow+13)
		{
			break;
		}
		if (lv_iCurrentRow == gv_iSelectedRow)
		{
			standout();
		}
		mvhline(lv_iCurrentRow - gv_iStartRow + 6,0,' ',COLS);

		memset(Buffer,0,COLS);
		sprintf(Buffer,"%d",lv_iCurrentRow);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,0,Buffer);

		memset(Buffer,0,COLS);
		memcpy(Buffer,Type->MonitorType,20);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,10,Buffer);

		memset(Buffer,0,COLS);
		memcpy(Buffer,Type->Type,30);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,30,Buffer);

		memset(Buffer,0,COLS);
		memcpy(Buffer,"--->",20);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,60,Buffer);

		if (lv_iCurrentRow == gv_iSelectedRow)
		{
			standend();
		}
		Type = Type->Next;
		lv_iCurrentRow++;
	}

	while(lv_iCurrentRow < gv_iStartRow + 13)
	{
		mvhline(lv_iCurrentRow - gv_iStartRow + 6,0,' ',COLS);
		lv_iCurrentRow ++;
	}

	sprintf(Buffer,"[%02d个其他选项]",gv_iStartRow - 1);
	mvaddstr(2,0,Buffer);
	sprintf(Buffer,"[共%02d个选项]",lv_iTotalRow);
	mvaddstr(2,34,Buffer);
	sprintf(Buffer,"%04d/%02d/%02d %02d:%02d:%02d",Time->tm_year+1900,Time->tm_mon+1,Time->tm_mday,Time->tm_hour,Time->tm_min,Time->tm_sec);
	mvaddstr(2,58,Buffer);
	sprintf(Buffer,"[%02d个其他选项]",(lv_iTotalRow - gv_iStartRow - 13 + 1 > 0)?lv_iTotalRow - gv_iStartRow - 13 + 1:0);
	mvaddstr(20,0,Buffer);
	move(gv_iSelectedRow - gv_iStartRow + 6,0);
	refresh();
}
/****************************************************************
**
**	Function: RebuildProc
**	Purpose:  重建进程监控菜单
** 	Input Parammeters:
		Type -- 上级菜单名称
**	Return:
**	datetime:
**
*****************************************************************/
void RebuildProc(const char *Type)
{
	int lv_iTotalRow = 0,lv_iCurrentRow = 0;
	char Buffer[STRING_LEN];
	char Date[10+1];
	time_t Now;
  	struct tm  *Time;
  	int i;

  	time(&Now);
  	Time = localtime(&Now);
	sprintf(Date,"%04d-%02d-%02d",Time->tm_year+1900,Time->tm_mon+1,Time->tm_mday);

	mvhline(0,0,' ',COLS);
	mvhline(1,0,' ',COLS);
	mvhline(4,0,' ',COLS);
	mvhline(21,0,' ',COLS);
	mvhline(22,0,' ',COLS);
	mvaddstr(0,28,(char *)"集中监控系统──中国电信");
	mvaddstr(1,(80 - strlen(Type))/2,(char *)Type);
	mvaddstr(3,0,(char *)"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	mvaddstr(4,0,(char *)"序号");
	mvaddstr(4,5,(char *)"进程别名");
	mvaddstr(4,20,(char *)"进程ID");
	mvaddstr(4,30,(char *)"进程状态");
	mvaddstr(4,40,(char *)"处理对象");
	mvaddstr(4,68,(char *)"处理速率");
	mvaddstr(5,0,(char *)"────────────────────────────────────────");
	mvaddstr(19,0,(char *)"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	mvaddstr(22,0,(char *)"     Up Arrow=向上               A=启动全部                   R=启动           ");
	mvaddstr(23,0,(char *)"     Down Arrow=向下             S=停止全部                   X=停止           ");
	mvaddstr(24,0,(char *)"     Left Arrow=向上翻屏         Right Arrow=向下翻屏         ESC=退出         ");

	for(i = 1;i <= gv_iProcCount;i++)
	{
		if (strcmp(gv_ProcInfo[i].Type,Type) == 0)
		{
			lv_iTotalRow++;
		}
	}

	if (gv_iSelectedRow <= 0)
	{
		gv_iSelectedRow = lv_iTotalRow;
	}
	if (gv_iSelectedRow > lv_iTotalRow)
	{
		gv_iSelectedRow = 1;
	}

	if (gv_iStartRow <= 0)
	{
		gv_iStartRow = 1;
	}
	if (gv_iStartRow > gv_iSelectedRow)
	{
		gv_iStartRow = gv_iSelectedRow;
	}
	if (gv_iSelectedRow - gv_iStartRow >= 13)
	{
		gv_iStartRow = gv_iSelectedRow - 13 + 1;
	}

	for(i = 1;i <= gv_iProcCount;i++)
	{
		if (strcmp(gv_ProcInfo[i].Type,Type) == 0)
		{
			lv_iCurrentRow++;
		}
		if (lv_iCurrentRow >= gv_iStartRow)
		{
			break;
		}
	}

	for(;i <= gv_iProcCount;i++)
	{
		if (strcmp(gv_ProcInfo[i].Type,Type) != 0)
		{
			continue;
		}

		if (lv_iCurrentRow >= gv_iStartRow + 13)
		{
			break;
		}
		if (lv_iCurrentRow == gv_iSelectedRow)
		{
			standout();
		}
		mvhline(lv_iCurrentRow - gv_iStartRow + 6,0,' ',COLS);

		memset(Buffer,0,COLS);
		sprintf(Buffer,"%d",lv_iCurrentRow);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,0,Buffer);

		memset(Buffer,0,COLS);
		memcpy(Buffer,gv_ProcInfo[i].Alias,15);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,5,Buffer);

		memset(Buffer,0,COLS);
		memcpy(Buffer,gv_ProcInfo[i].ProcID,10);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,20,Buffer);

		memset(Buffer,0,COLS);
		memcpy(Buffer,gv_ProcInfo[i].Status,10);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,30,Buffer);

		memset(Buffer,0,COLS);
		memcpy(Buffer,gv_ProcInfo[i].Object,25);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,40,Buffer);


		memset(Buffer,0,COLS);
		memcpy(Buffer, gv_ProcInfo[i].CDRProcSpeed, 20);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6, 67, Buffer);

		if (lv_iCurrentRow == gv_iSelectedRow)
		{
			standend();
		}
		lv_iCurrentRow++;
	}

	while(lv_iCurrentRow < gv_iStartRow + 13)
	{
		mvhline(lv_iCurrentRow - gv_iStartRow + 6,0,' ',COLS);
		lv_iCurrentRow++;
	}

	sprintf(Buffer,"[%02d个其他选项]",gv_iStartRow - 1);
	mvaddstr(2,0,Buffer);
	sprintf(Buffer,"[共%02d个选项]",lv_iTotalRow);
	mvaddstr(2,34,Buffer);
	sprintf(Buffer,"%04d/%02d/%02d %02d:%02d:%02d",Time->tm_year+1900,Time->tm_mon+1,Time->tm_mday,Time->tm_hour,Time->tm_min,Time->tm_sec);
	mvaddstr(2,58,Buffer);
	sprintf(Buffer,"[%02d个其他选项]",(lv_iTotalRow - gv_iStartRow - 13 + 1 > 0)?lv_iTotalRow - gv_iStartRow - 13 + 1:0);
	mvaddstr(20,0,Buffer);
	move(gv_iSelectedRow - gv_iStartRow + 6,0);
	refresh();
}
/****************************************************************
**
**	Function: RebuildDisk
**	Purpose:  重建磁盘监控菜单
** 	Input Parammeters:
		Type -- 上级菜单名称
**	Return:
**	datetime:
**
*****************************************************************/
void RebuildDisk(const char *Type)
{
	int lv_iTotalRow = 0,lv_iCurrentRow = 0;
	char Buffer[STRING_LEN];
	char Date[10+1];
	time_t Now;
  	struct tm  *Time;
  	int i;

  	time(&Now);
  	Time = localtime(&Now);

	mvhline(0,0,' ',COLS);
	mvhline(1,0,' ',COLS);
	mvhline(4,0,' ',COLS);
	mvhline(21,0,' ',COLS);
	mvhline(22,0,' ',COLS);
	mvaddstr(0,28,(char *)"集中监控系统──中国电信");
	mvaddstr(1,(80 - strlen(Type))/2,(char *)Type);
	mvaddstr(3,0,(char *)"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	mvaddstr(4,0,(char *)"序号");
	mvaddstr(4,10,(char *)"路径");
	mvaddstr(4,25,(char *)"总空间");
	mvaddstr(4,35,(char *)"可用空间");
	mvaddstr(4,45,(char *)"利用率");
	mvaddstr(4,56,(char *)"主机地址");
	mvaddstr(5,0,(char *)"────────────────────────────────────────");
	mvaddstr(19,0,(char *)"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	mvaddstr(22,0,(char *)"   Up Arrow=向上                 Down Arrow=向下           ");
	mvaddstr(23,0,(char *)"   Left Arrow=向上翻屏           Right Arrow=向下翻屏            ESC=退出");
	mvhline(24,0,' ',COLS);
	for(i = 1;i <= gv_iDiskCount;i++)
	{
		if (strcmp(gv_DiskInfo[i].Type,Type) == 0)
		{
			lv_iTotalRow++;
		}
	}

	if (gv_iSelectedRow <= 0)
	{
		gv_iSelectedRow = lv_iTotalRow;
	}
	if (gv_iSelectedRow > lv_iTotalRow)
	{
		gv_iSelectedRow = 1;
	}
	if (gv_iStartRow <= 0)
	{
		gv_iStartRow = 1;
	}
	if (gv_iStartRow > gv_iSelectedRow)
	{
		gv_iStartRow = gv_iSelectedRow;
	}
	if (gv_iSelectedRow - gv_iStartRow >= 13)
	{
		gv_iStartRow = gv_iSelectedRow - 13 + 1;
	}

	for(i = 1;i <= gv_iDiskCount;i++)
	{
		if (strcmp(gv_DiskInfo[i].Type,Type) == 0)
		{
			lv_iCurrentRow++;
		}
		if (lv_iCurrentRow >= gv_iStartRow)
		{
			break;
		}
	}

	for(;i <= gv_iDiskCount;i++)
	{
		if (strcmp(gv_DiskInfo[i].Type,Type) != 0)
		{
			continue;
		}

		if (lv_iCurrentRow >= gv_iStartRow + 13)
		{
			break;
		}
		if (lv_iCurrentRow == gv_iSelectedRow)
		{
			standout();
		}
		mvhline(lv_iCurrentRow - gv_iStartRow + 6,0,' ',COLS);

		memset(Buffer,0,COLS);
		sprintf(Buffer,"%d",lv_iCurrentRow);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,0,Buffer);

		memset(Buffer,0,COLS);
		memcpy(Buffer,gv_DiskInfo[i].Path,20);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,5,Buffer);

		memset(Buffer,0,COLS);
		sprintf(Buffer,"%10lu",gv_DiskInfo[i].DiskSize);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,21,Buffer);

		memset(Buffer,0,COLS);
		sprintf(Buffer,"%10lu",gv_DiskInfo[i].AvailSize);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,32,Buffer);

		if (gv_DiskInfo[i].DiskSize!=0)
		{
			memset(Buffer,0,COLS);
			sprintf(Buffer,"%8.2f%%",(float)100 * (gv_DiskInfo[i].DiskSize - gv_DiskInfo[i].AvailSize) / gv_DiskInfo[i].DiskSize);
			mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,42,Buffer);
		}

		memset(Buffer,0,COLS);
		memcpy(Buffer,gv_DiskInfo[i].HostAddr,25);
		mvaddstr(lv_iCurrentRow - gv_iStartRow + 6,56,Buffer);

		if (lv_iCurrentRow == gv_iSelectedRow)
		{
			standend();
		}
		lv_iCurrentRow++;
	}

	while(lv_iCurrentRow < gv_iStartRow + 13)
	{
		mvhline(lv_iCurrentRow - gv_iStartRow + 6,0,' ',COLS);
		lv_iCurrentRow++;
	}

	sprintf(Buffer,"[%02d个其他选项]",gv_iStartRow - 1);
	mvaddstr(2,0,Buffer);
	sprintf(Buffer,"[共%02d个选项]",lv_iTotalRow);
	mvaddstr(2,34,Buffer);
	sprintf(Buffer,"%04d/%02d/%02d %02d:%02d:%02d",Time->tm_year+1900,Time->tm_mon+1,Time->tm_mday,Time->tm_hour,Time->tm_min,Time->tm_sec);
	mvaddstr(2,58,Buffer);
	sprintf(Buffer,"[%02d个其他选项]",(lv_iTotalRow - gv_iStartRow - 13 + 1 > 0)?lv_iTotalRow - gv_iStartRow - 13 + 1:0);
	mvaddstr(20,0,Buffer);
	move(gv_iSelectedRow - gv_iStartRow + 6,0);
	refresh();
}

void MainTimeBreak(int sigid)
{
	RebuildMenu();
	return;
}

void ProcTimeBreak(int sigid)
{
	LoadProcData(g_Type);
	RebuildProc(g_Type);

	return;
}

void DiskTimeBreak(int sigid)
{
	LoadDiskData(g_Type);
	RebuildDisk(g_Type);

	return;
}

/****************************************************************
**
**	Function: LoadProcData
**	Purpose:  调用进程信息
** 	Input Parammeters:
		Type -- 进程所属类型
**	Return:
**	datetime:
**
*****************************************************************/
void LoadProcData(const char *Type)
{
	C_BaseSock Socket;
	struct sockaddr_in Address;

	char CommandLine[STRING_LEN];
	char Buffer[STRING_LEN];
	char SendBuffer[STRING_LEN],RecvBuffer[STRING_LEN];
	int lv_iCurrentHost,lv_iCurrentProc,lv_iCurrentRow;
	int i,j,k;

	for(lv_iCurrentHost = 1;lv_iCurrentHost <= gv_iHostCount;lv_iCurrentHost++)
	{
		strcpy(CommandLine,"Command@ProcessStatus");
		lv_iCurrentRow = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -