51Testing软件测试论坛

标题: 怎样在lr中获取IP和MAC? [打印本页]

作者: yt1998    时间: 2010-12-23 23:50
标题: 怎样在lr中获取IP和MAC?
需要参数化本机的机器名、IP、MAC。机器名倒是好办,lr_get_host_name( )就解决了。IP、MAC有什么办法获取?不是用IP欺骗,要的是实际的IP地址。现在使用file来手工写进去,感觉很不方便,换一台机器就要改一下数据,烦。
作者: 自由基    时间: 2010-12-24 10:19
好像提供了一个方法,记得不清了,你可以查看下帮助
lr_get_vuser_ip( );
获取vuser的ip
作者: yt1998    时间: 2010-12-24 21:44
回复 2# 自由基

这个似乎是用在IP欺骗的。
作者: msnshow    时间: 2010-12-25 19:07
IP那个应该 都可以的吧,与是否使用虚拟IP无关吧
作者: yt1998    时间: 2010-12-25 23:16
回复 4# msnshow


试过不行的,得到的是空值。
作者: sunnyswu    时间: 2010-12-26 10:40
不熟悉 看看能不能读取注册表
或者system32下的文件
作者: PrefTest    时间: 2010-12-26 22:08
写个DLL来获取IP、MAC地址,然后在LR中调用
作者: C组十三    时间: 2010-12-26 22:56
可以考虑从注册表读取,比较简单有效,但得配置编译环境
作者: 婴儿    时间: 2010-12-27 15:19
本帖最后由 婴儿 于 2010-12-28 13:32 编辑

提供一个办法,通过调用Windows命令行ipconfig /all来实现
如果ipconfig /all的结果类似以下这样:

Windows IP Configuration

   Host Name . . . . . . . . . . . . : testhost
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Unknown
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Broadcom BCM5708C NetXtreme II GigE (NDIS VBD Client)
   Physical Address. . . . . . . . . : 00-1E-B9-D3-20-E0
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 172.16.1.28
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 172.16.1.1
   DNS Servers . . . . . . . . . . . : 202.98.96.68
                                       61.139.2.69

只有一个连接,那么用下面代码可以实现:

  1. Action()
  2. {
  3.     //取本机第一个MAC地址和IP

  4.     char * filename = "c:\\temp.txt",* s1,* s2;
  5.     char command[1024],buffer[10240],left[1024],IP[128],MAC[128];
  6.     long file_stream;
  7.     int len;

  8.     sprintf(command, "ipconfig /all > %s", filename);
  9.     system(command);//执行命令行(结果写到文件)


  10.     //打开文件,读取,关闭文件,删除文件
  11.     if ((file_stream = fopen(filename, "r")) == NULL) {
  12.         lr_error_message ("Cannot open %s", filename);
  13.         return -1;
  14.     }

  15.     fread(buffer, sizeof(char), 10240, file_stream);
  16.     if (ferror(file_stream))
  17.         lr_output_message ("Error reading file %s", filename);

  18.     lr_output_message ("ipconfig /all = \n%s", buffer );

  19.     if (fclose(file_stream))
  20.         lr_error_message ("Error closing file %s", filename);

  21.     remove(filename);


  22.     //处理从文件读取的内容
  23.     strcpy(left,"Physical Address. . . . . . . . . : ");
  24.     len=strlen(left);
  25.     s1=(char *)strstr(buffer,left);
  26.     s1+=len;

  27.     s2=(char *)strstr(s1,"\r\n");
  28.     len=s2-s1;

  29.     strncpy(MAC,s1,len);


  30.     strcpy(left,"IP Address. . . . . . . . . . . . : ");
  31.     len=strlen(left);
  32.     s1=(char *)strstr(s2,left);
  33.     s1+=len;

  34.     s2=(char *)strstr(s1,"\r\n");
  35.     len=s2-s1;

  36.     strncpy(IP,s1,len);

  37.     lr_output_message ("IP = %s,MAC = %s", IP, MAC);
  38.    
  39.     return 0;
  40. }
复制代码

处理字符串的部分,可以写成函数,更方便处理
如果有多个网卡,还需要进一步修改,可以先按网卡取相应的信息(如按关键词Ethernet adapter分块),再在各块中查找需要的内容(如按网段查找)
作者: jj_ljw    时间: 2010-12-29 15:43
同等
lr_get_vuser_ip( );
这个函数的使用,试过得到的是空值
作者: mm22gg    时间: 2015-7-7 17:51
LR版本:11.00
脚本类型:C语音
在Virtual User Generator中运行,下面的代码段获取不到IP地址,
需要在Controller中运行,并开启IP Spoofer后,就能正常获取本机IP地址

        //// 校验当前配置的IP相关变量
        char *ip;

    //// 校验当前配置的IP是否与期望配置的IP一致
    ip = lr_get_vuser_ip();
    if (ip)
        lr_output_message("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@The IP address is %s", ip);
    else
        lr_output_message("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IP spoofer disabled, Please enable it");





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2