最近给客户的SEP系统定义了一个简单的策略,策略是检测主机是否存在双网卡。SEP系统只能完成简单的运行可执行程序、检测文件是否存在、注册表是否存在等功能,因此需要写一个简单的判断双网卡的程序。因此写了一个简单的程序,代码如下:
#include
#include
#include
#pragma comment (lib, "ws2_32")
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsa = { 0 };
struct in_addr addr;
int i = 0;
char bHostName[MAXBYTE] = { 0 };
WSAStartup(MAKEWORD(2, 2), &wsa);
gethostname(bHostName, MAXBYTE);
hostent *ht = gethostbyname(bHostName);
while ( ht->h_addr_list[i] != 0 )
{
addr.s_addr = *(u_long *) ht->h_addr_list[i++];
// printf("IP Address #%d: %s\n", i, inet_ntoa(addr));
}
if ( i > 1 )
{
// printf("存在多个IP地址\r\n");
}
else if ( i == 1 )
{
char cIp[MAXBYTE] = { 0 };
strncpy_s(cIp, MAXBYTE, inet_ntoa(addr), strlen(inet_ntoa(addr)));
if ( cIp[0] == ‘1‘ && cIp[1] == ‘0‘ && cIp[2] == ‘.‘ )
{
// printf("一个IP地址,且IP地址为10.开头");
FILE *fp = NULL;
fp = fopen("d:\\kernelsx86.dll", "w");
fclose(fp);
}
else
{
// printf("一个IP地址,但IP地址不为10.开头");
}
}
else
{
// printf("没有得到IP地址");
}
WSACleanup();
return 0;
}
代码写的不够好,不过反正不长。如果主机只有一个IP地址,且该IP地址是以10.开头的,那么在D盘下生成一个文件。
将该代码生成一个可执行文件,放到客户的Web服务器上,当安装在主机上的SEP客户端进行双网卡检测时,会从Web服务器上下载并运行该程序,该程序运行结束后,SEP客户端判断D盘下是否有生成的指定的文件,如果有该文件则SEP的检测双网卡的策略通过,否则不通过。