一种获取Linux系统网路设备信息的方法

文档序号:6569366阅读:374来源:国知局
专利名称:一种获取Linux系统网路设备信息的方法
技术领域
本发明涉及一种计算机应用技术领域,具体地说是一种获取Linux系统网路设备信息的方法。
背景技术
随着计算机集群规模的膨胀,传统的对服务器的管理方法越来越不适用,需要一套集群监控管理软件来对庞大的计算机集群进行管理,以提高管理的效率和降低管理成本。本发明,就是为集群监控管理软件提供支持的方法。传统的方法是直接到服务器上,输入命令来获得所需要的网络设备信息;该方法是一种通过程序来获得网络设备配置信息的方法,可以用来支持一些设备监控软件,避免重复的输入命令获取需要的信息,从而能够提高服务器的管理效率。

发明内容
本发明的目的是提供一种用基于Linux命令的程序获取网络设备信息的方法。本发明的目的是按以下方式实现的,步骤如下
1)用Linux命令获得Linux网络设备配置文件的文件名,保存到一个临时文件中;操作步骤如下
char cmd[256] = " ls/etc/sysconf ig/network-scripts/ifcfg-* | cut -d \7\“ _f 5 > ” ;
char tempfile[256]=" /tmp/netInfο1c-XXXXXX“; mkstemp(tempfile) ;//创建临时文件 strcat (cmd, tempfile) ;//拼接字符串 system (cmd) ;// 执行命令;
2)用C++代码创建一个关于临时文件的I/O流,获取网络设备的配置文件名;再控制 Linux命令执行,到网络设备配置文件所在的目录下,创建一个关于配置文件的I/O流,用来获取网络设备的配置信息;操作步骤如下
ifstream file (tempfile) ;//得到临时文件的 I/O 流 char filename [256] = ” ”; //配置文件的名称 while ( file, getline (filename, SIZELN ) ){ strcat CVetc/sysconfig/network-scripts/", filename); ifstream netlnfoFile ( strlnfo ); char pSZData[512]=”” ; //配置文件中的一行内容 int SIZE=512;
while ( netlnfoFile. getline( pszData, SIZE ))
3Int strlen = pszData. length (); Int position = pszData. find( 〃=〃, 0);
if (pszData· find( 〃TYPE=〃,0) != string::npos )
{
strcpy ( info2, (pszData. substr( position+1, strlen-position ) ). c_str()); continue; }//end of if .得到需要的值
ι
ι ;3)将得到的这些数据保存到集合vector<vector<string> >中。
具体实施例方式对本发明的方法作以下详细地说明。本发明提供一种用基于Linux命令的C++程序获取网路设备信
息的方法,这些设备信息包括网卡类型、网卡物理地址、IP地址、子网掩码、网关等,用该方法编译成的动态链接库可以供Java通过rmi调用。该方法用C++来控制Linux命令的执行,首先用Linux命令获得所有网络设备配置文件的名称并保存到一个临时文件中; 然后创建一个配置文件的1/0流获得配置文件中的网络设备信息。
实施例该方法通过以下步骤实现
1)用Linux命令获得Linux网络设备配置文件的文件名,保存到一个临时文件中。char cmd[256] = " ls/etc/sysconf ig/network-scripts/ifcfg-* | cut -d \7\“ _f 5 > ” ;
char tempfile[256]=" /tmp/netInfο1c-XXXXXX“; mkstemp(tempfile) ;//创建临时文件 strcat (cmd, tempfile) ;//拼接字符串 system (cmd) ;// 执行命令
2)用C++代码执行Linux命令到配置文件的目录下,根据获得的配置文件名创建1/0 流,获得配置文件里的网络设备信息。ifstream file (tempfile) ;//得到临时文件的 1/0 流 char filename [256] = ” ”; //配置文件的名称 while ( file, getline (filename, SIZELN ) ){
strcat CVetc/sysconfig/network-scripts/", filename); ifstream netlnfoFile ( strlnfo ); char pszData[512]="" ; //配置文件中的一行内容int SIZE=512;
while ( netlnfoFile. getline( pszData, SIZE ))
{
Int strlen = pszData. length (); Int position = pszData. find( 〃=〃, 0);
if (pszData· find( 〃TYPE=〃,0) != string::npos )
{
strcpy ( info2, (pszData. substr( position+1, strlen-position ) ). c_str());
continue; }//end of if .得到需要的值
ι
ι
3)将得到的这些数据保存到集合vector<vector<string> >中。
权利要求
1.一种获取Linux系统网路设备信息的方法,其特征在于步骤包括1)用Linux命令获得Linux网络设备配置文件的文件名,保存到一个临时文件中;操作步骤如下char cmd[256] = " ls/etc/sysconf ig/network-scripts/ifcfg-* | cut -d \7\“ _f 5 > ” ;char tempfile[256]=" /tmp/netInfο1c-XXXXXX“; mkstemp(tempfile) ;//创建临时文件 strcat (cmd, tempfile) ;//拼接字符串 system (cmd) ;// 执行命令;2)用C++代码创建一个关于临时文件的I/O流,获取网络设备的配置文件名;再控制 Linux命令执行,到网络设备配置文件所在的目录下,创建一个关于配置文件的I/O流,用来获取网络设备的配置信息;操作步骤如下ifstream file (tempfile) ;//得到临时文件的 I/O 流 char filename [256] = ” ”; //配置文件的名称 while ( file, getline (filename, SIZELN ) ){ strcat CVetc/sysconfig/network-scripts/", filename); ifstream netlnfoFile ( strlnfo ); char pSZData[512]=”” ; //配置文件中的一行内容 int SIZE=512;while ( netlnfoFile. getline( pszData, SIZE )){Int strlen = pszData. length ();Int position = pszData. find( 〃=〃, 0);if (pszData· find( 〃TYPE=〃,0) != string::npos ){strcpy ( info2, (pszData. substr ( position+1,strlen-position ) ). c_str()); continue; }//end of if.得到需要的值ι
2.根据权利要求1所述的方法,其特征在于,用C++代码执行Linux命令,首先到配置文件所在的目录下获取所有关于网络设备配置文件的文件名,并将获得的文件名保存起来供接下来的流程用。
全文摘要
本发明提供一种获取Linux系统网路设备信息的方法,这些设备信息包括网卡类型、网卡物理地址、IP地址、子网掩码、网关等,用该方法编译成的动态链接库可以供Java通过rmi调用;该方法用C++语言来控制Linux命令的执行,从而获得Linux系统下网络设备的配置信息,本发明的方法可以用来支持一些设备监控软件,避免重复的输入命令获取需要的信息,从而能够提高服务器的管理效率。
文档编号G06F9/44GK102426520SQ201110321679
公开日2012年4月25日 申请日期2011年10月21日 优先权日2011年10月21日
发明者张世刚 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1