免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6648 | 回复: 14
打印 上一主题 下一主题

用perl的SOCKET模拟登陆设备遇到的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-30 11:13 |显示全部楼层 |倒序浏览
本帖最后由 wbc1223 于 2014-05-30 13:51 编辑

我现在想通过登陆厂家的硬件设备,执行指令把设备的反馈的结果得到,方便统计。
我用wireshark抓包,根据抓包过程用Perl写了个脚本,现在是设备登陆成功了,但是执行指令执行不下去。
登陆成功后,程序就卡在登陆上,程序过一会自动退出。

此外,还有两个问题咨询一下:
     1、如何设置接受数据的等待时间,方便接受完数据后再输入下一条指令
     2、如何设置接收数据的缓冲区的大小,接受的数据从wireshark上抓包看到需要2个以上的数据包来承载反馈结果
有哪位高手帮忙指点一下。

wireshark的包文件: wireshark抓包.rar (1.8 KB, 下载次数: 18)

抓包过程如下:
1、登陆设备过程抓包.jpg
  
2、向设备输入一条指令的抓包.jpg

3、退出设备抓包.jpg

4、执行脚本反馈结果.jpg



脚本如下:
use Socket qw(:all);
use strict;

#129.9.96.11:1400
my $address = sockaddr_in(1400,inet_aton('129.9.96.11'));
socket(SOCK, AF_INET, SOCK_STREAM, IPPROTO_TCP) || die $!;
my $result=connect(SOCK, $address) || die $!;
print $result."\n";

##################################################登陆设备过程
    my @aHead =(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                0x00,0x03,0x00,0x18,0x00,0x00,0x00,0x00);
    my $msg_out = join "", map{chr($_)} @aHead;
    $msg_out .= sprintf(':login:"%s","%s"%c%c',"szhw","nesoft",13,10);
    syswrite(SOCK, $msg_out);
#print SOCK hex()';
while(<SOCK>)
{
  print;
}
undef @aHead;
undef $msg_out;
####################################################登陆设备过程
sleep 3;

####################################################向设备输入一条指令过程
    my @aHead =(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x23,
                0x00,0x00,0x00,0x00,0x3a,0x70,0x74,0x6e,0x2d,0x65,0x74,0x79,
                0x2d,0x67,0x65,0x74,0x2d,0x70,0x6f,0x72,0x74,0x63,0x75,0x72,
                0x72,0x61,0x74,0x65,0x3a,0x31,0x2c,0x30,0x78,0x66,0x66,0x2c,0x31,0x0d,0x0a);
    my $msg_out = join "", map{chr($_)} @aHead;
    #print $msg_out."\n";
    syswrite(SOCK,$msg_out);
while(<SOCK>)
{
  print;
}  
undef @aHead;
undef $msg_out;
#################################################向设备输入一条指令过程   
sleep 3;

################################################退出设备过程
    my @aHead =(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                0x03,0x00,0x09,0x00,0x00,0x00,0x00,0x3a,0x6c,
                0x6f,0x67,0x6f,0x75,0x74,0x0d,0x0a);
    my $msg_out = join "", map{chr($_)} @aHead;
    #print $msg_out."\n";
    syswrite(SOCK,$msg_out);
while(<SOCK>)
{
  print;
}  
undef @aHead;
undef $msg_out;   
################################################退出设备过程
   

close SOCK or die "close: $!";

#问题,1、如何设置接受数据的等待时间,方便接受完数据后再输入下一条指令
#     2、如何设置接收数据的缓冲区的大小,接受的数据从wireshark上抓包看到需要2个以上的数据包来承载反馈结果

论坛徽章:
0
2 [报告]
发表于 2014-05-30 13:42 |显示全部楼层
不能,与设备通信不是用的telnet,我写的脚本里的端口号是1400,不是telnet的23

论坛徽章:
0
3 [报告]
发表于 2014-05-30 13:46 |显示全部楼层
附件中我已上传wireshark的抓包文件,各位高手们看看有没有遗漏

论坛徽章:
0
4 [报告]
发表于 2014-06-03 09:27 |显示全部楼层
是华为的设备,端午放假了,今天刚回来上班,待会我试试!

论坛徽章:
0
5 [报告]
发表于 2014-06-03 09:31 |显示全部楼层
之前我倒是写过用telnet登陆华为的交换机设备,PON设备;但是这种设备好像是不是,华为有自己的登陆工具:navigator;
待会我用SecureCRT改一下端口号看看能不能登录设备。

论坛徽章:
0
6 [报告]
发表于 2014-06-03 09:58 |显示全部楼层
刚才我用SecureCRT工具登陆了一下设备,几乎用了所有的登陆选项:
  1、telnet+端口号(端口号有23改为1400)
  2、SSH1+端口号(端口号有23改为1400)
  3、SSH2++端口号(端口号有23改为1400)
  4、TELNET/SSL+端口号(端口号有23改为1400)
以上登录方式都不能与设备进行交互,证明用TELNET是不能登录设备的。

论坛徽章:
0
7 [报告]
发表于 2014-06-03 09:59 |显示全部楼层
回复 5# laputa73


    刚才我用SecureCRT工具登陆了一下设备,几乎用了所有的登陆选项:
  1、telnet+端口号(端口号有23改为1400)
  2、SSH1+端口号(端口号有23改为1400)
  3、SSH2++端口号(端口号有23改为1400)
  4、TELNET/SSL+端口号(端口号有23改为1400)
以上登录方式都不能与设备进行交互,证明用TELNET是不能登录设备的。

论坛徽章:
0
8 [报告]
发表于 2014-06-03 10:01 |显示全部楼层
刚才我用SecureCRT工具登陆了一下设备,几乎用了所有的登陆选项:
  1、telnet+端口号(端口号有23改为1400)
  2、SSH1+端口号(端口号有23改为1400)
  3、SSH2++端口号(端口号有23改为1400)
  4、TELNET/SSL+端口号(端口号有23改为1400)
以上登录方式都不能与设备进行交互,证明用TELNET是不能登录设备的。

论坛徽章:
0
9 [报告]
发表于 2014-06-03 13:51 |显示全部楼层
如果他提供的客户端可以用cmd模式登录的话,你可以用spawn的方式封装下,这样就不用费时间去解析他的协议了。
   
   不能用CMD的方式登录,华为开发了一个登录工具:OptiX Navigator,只有通过这个工具才能用命令行登录这个设备,和电脑上的cmd没用关系。
   
   我重申一下,我现在能登录到设备上去了,也能得到登录设备后的反馈结果,但是我用相同方式往设备发送指令则得不到结果,我想问一下这是问什么?
   有谁能仔细看看附件:wireshark的抓包,看看问题出在了什么地方?

论坛徽章:
0
10 [报告]
发表于 2014-06-03 13:55 |显示全部楼层
补充一下:wireshark的抓包是我用navigator登录设备过程的抓包。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP