51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3800|回复: 10
打印 上一主题 下一主题

[原创] 怎样在lr中获取IP和MAC?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-12-23 23:50:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
需要参数化本机的机器名、IP、MAC。机器名倒是好办,lr_get_host_name( )就解决了。IP、MAC有什么办法获取?不是用IP欺骗,要的是实际的IP地址。现在使用file来手工写进去,感觉很不方便,换一台机器就要改一下数据,烦。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-12-24 10:19:21 | 只看该作者
好像提供了一个方法,记得不清了,你可以查看下帮助
lr_get_vuser_ip( );
获取vuser的ip
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-12-24 21:44:48 | 只看该作者
回复 2# 自由基

这个似乎是用在IP欺骗的。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    4#
    发表于 2010-12-25 19:07:55 | 只看该作者
    IP那个应该 都可以的吧,与是否使用虚拟IP无关吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2010-12-25 23:16:00 | 只看该作者
    回复 4# msnshow


    试过不行的,得到的是空值。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2010-12-26 10:40:39 | 只看该作者
    不熟悉 看看能不能读取注册表
    或者system32下的文件
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2010-12-26 22:08:48 | 只看该作者
    写个DLL来获取IP、MAC地址,然后在LR中调用
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2010-12-26 22:56:39 | 只看该作者
    可以考虑从注册表读取,比较简单有效,但得配置编译环境
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2010-12-27 15:19:23 | 只看该作者
    本帖最后由 婴儿 于 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分块),再在各块中查找需要的内容(如按网段查找)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2010-12-29 15:43:45 | 只看该作者
    同等
    lr_get_vuser_ip( );
    这个函数的使用,试过得到的是空值
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2015-7-7 17:51:54 | 只看该作者
    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");
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-7 11:28 , Processed in 0.077247 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表