免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: hwcomcn
打印 上一主题 下一主题

[已解决]perl子程序名可以用变量代替吗 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-08-15 14:41 |只看该作者
本帖最后由 hwcomcn 于 2014-08-15 14:47 编辑

回复 10# q1208c


telnet到多台思科的设备

要投一百多个测试大项,大多一个测试项投一条命令,有的测试项有多条命令


最花时间的是下面2种情况:
1. 有的测试项要投上千条,我这里最多的一个测试项就有5千个命令
2. 其中也有一个测试项虽然只有一条命令,一个cmd执行达数分钟,(就是telnet投入思科命令,返回要等几分钟)比如有一个条测试项的一条命令要要返回1百万行的文本信息
为此还纠结了下
因为telnet默认buffer只有1兆,改成120兆,才把这1百万行的数据给抓全
  1. $conn = new Net::Telnet(Timeout => 1800, Max_buffer_length => 120_000_000, Prompt => '/[#>]\s*$/');
复制代码
目前执行这1百多个测试大项的脚本执行时间是50分钟


因为任务做完了,
还有额外时间
就想起用多线程telnet改善了
我想可能会把时间缩短些吧
即使效果不理想,也可以把perl多线程给掌握

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
12 [报告]
发表于 2014-08-15 15:14 |只看该作者
我已经走了不少弯路 ~ {:2_169:}
这个必须顶啊,很帅,值得拥有 ~ {:2_168:}
  1. my @sublist = ("proj_001","proj_002","proj_003","proj_004","proj_005","proj_006","proj_007","proj_008");

  2. $_ = \&{$_} for @sublist;
复制代码
回复 4# stanley_tam


   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
13 [报告]
发表于 2014-08-15 16:51 |只看该作者
回复 11# hwcomcn

那为什么要多线程/进程呢?

完全可以使用多个实例呀. 这样, 每个实例更容易维护.

而且, 多线程也好, 多进程也好. 程序的复杂度都大幅上升.
   

论坛徽章:
0
14 [报告]
发表于 2014-08-16 13:53 |只看该作者
回复 13# q1208c


    你是说用在shell环境下个多个console下且同时执行perl脚本吗?
    这个也想过
    现在是单个perl脚本执行时间过长
    想把单个脚本执行的时间缩短,所以想起尝试多线程
   

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
15 [报告]
发表于 2014-08-16 14:12 |只看该作者
本帖最后由 laputa73 于 2014-08-16 14:15 编辑

回复 11# hwcomcn


  设备的并发数是有限制的,
  你用多进程并发登录的话设备响应可能更慢.或者登录不上.
  

论坛徽章:
0
16 [报告]
发表于 2014-08-16 19:46 |只看该作者
本帖最后由 hwcomcn 于 2014-08-16 19:47 编辑

回复 15# laputa73

思科那型号的设备貌似默认同时telnet数最大5个

且可以用思科命令进入路由的特权模式修改的

所以这个应该不是最主要的担心

多进程执行和登陆有可能没提高多少效率甚至更慢,这个非常有可能的。但没试过,不清楚。想象中理论上可行。这个可能要看perl和思科路由设备的这方面的特性了决定了,所以想尝试看看实际效果

要是能做出来,最后不管效果如何,报告一声哈

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
17 [报告]
发表于 2014-08-18 06:57 |只看该作者
回复 14# hwcomcn

如果你的单个脚本是针对单台设备的话, 那你不用试了. 设备上基本上只一个管理CPU来处理你的请求, 就算你用8个telnet进去, 也是排队处理, 不会快很多.

我的意思是, 多个进程, 每个进程针对一个设备. 这样对于每台设备来说, 只有一个进程, 不会更快. 但对于你来说, 由于同时对多个设备操作, 所以, 整体上, 时间是短了.

而且, 你可以更好的优化单台设备的语句.
   

论坛徽章:
0
18 [报告]
发表于 2014-08-18 15:01 |只看该作者
回复 17# q1208c


你说的登录到多台设备 和我说的同时执行perl,是一个意思

这个并行登录设备进行操作应该没有太大问题,

在shell下执行脚本:
#/usr/bin/csh -f
perl xx.pl -h host_ip -u username -p password& (地址,用户,密码作为命令参数)
perl xx.pl -h host_ip -u username -p password&
perl xx.pl -h host_ip -u username -p password&
perl xx.pl -h host_ip -u username -p password&
...


应该就可以并行执行

就想到能在同一个设备并行投命令,并行网络传命令让思科设备返回数据到桌面

你说的有道理,可能并行发给设备的命令,还是要排队等待执行,速度维持不变。若这样,缩短时间那是没有招了
至于提高perl语句,提高效率。这方面是很多可以优化的,但是这次测试通过抓出每条命令投入的时间点,发现perl执行的速度忽略不计,时间都花在在投入大量的命令和接收大量的数据上了。因为耗时间的测试项都是命令成千上万的或是数据成百万行的。

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
19 [报告]
发表于 2014-08-18 16:11 |只看该作者
回复 18# hwcomcn

哈哈, 那没办法了. 应该是设备输出的效率问题了. 这个估计没什么好办法以了.

只能通过同时对多台设备执行来提高整体的时间利用率了.
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP