免费注册 查看新帖 |

Chinaunix

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

system 执行系统调用无输出 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-24 10:44 |只看该作者 |倒序浏览
脚本的目标是读主机IP列表,实现在本地主机上执行命令,收集远程主机上的配置信息。

perl 脚本如下:
#!/usr/bin/perl -w
while(<>){
        chomp;
        print "$_ SAN_MAP\n";
        system('icmd -i' .$_. ' -c /sbin/sh /opt/hp/cms/sanmap20151113.sh');
        print "$?\n";
        #$output = `'/usr/bin/icmd -i $_ -c "/sbin/sh /opt/hp/cms/sanmap20151113.sh"'`;
        #print "$output\n";
        print "\n\n\n\n";
        sleep 10;
}

脚本执行结果如下:
10.96.168.52 SAN_MAP
0




10.96.168.53 SAN_MAP
0




10.96.168.54 SAN_MAP
0

截断


shell 脚本可以正常执行,脚本和输出如下:
while read line
do
echo $line
echo "--------------------------------------------------------"
icmd -i $line -c 'sh /opt/hp/cms/sanmap20151113.sh|egrep -E "fcd16|fcd17|fcd22|fcd23"'
sleep 10
done < yya_ip

10.96.168.52
--------------------------------------------------------
/dev/fcd16       2/0/0/5/0/0/0   33,36    0x5001438021dd2b0c            xxxxx ONLINE 33,32 DSM_READY 0x50060e80166e5704 93783 1E
/dev/fcd17       2/0/0/5/0/0/1   36,36    0x5001438021dd2b0e            xxxxx ONLINE 36,32 DSM_READY 0x50060e80166e5714 93783 2E
/dev/fcd22       3/0/0/5/0/0/0   33,37    0x5001438021dd2b30            xxxxx ONLINE 33,33 DSM_READY 0x50060e80166e570c 93783 1N
/dev/fcd23       3/0/0/5/0/0/1   36,37    0x5001438021dd2b32            xxxxx ONLINE 36,33 DSM_READY 0x50060e80166e571c 93783 2N

截断

高手们有时间的话,请帮忙看看为什么perl的system无输出呢?

论坛徽章:
0
2 [报告]
发表于 2015-12-28 10:38 |只看该作者
本帖最后由 ts99 于 2015-12-28 10:55 编辑

有人能帮忙看看么

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
3 [报告]
发表于 2015-12-28 10:47 |只看该作者
``反引号捕获标准输出的内容,你在shell下怎么写 `` 里面就怎么写

论坛徽章:
0
4 [报告]
发表于 2015-12-28 11:32 |只看该作者
你这个system 是执行了的,只是你不是用``来获取SHELL的执行结果,所以你什么都看不到,另外你print $?   输出为0,说明上一步system是执行成功的

论坛徽章:
0
5 [报告]
发表于 2015-12-28 14:45 |只看该作者
``的方式我试过,报很多错。exec ,system, ``都尝试过。不明白的是为什么system没有输出。

论坛徽章:
0
6 [报告]
发表于 2015-12-28 14:51 |只看该作者
本帖最后由 ts99 于 2015-12-28 14:52 编辑

谢谢楼上两位的回答,``格式可以的,应该我之前写的有问题。再次感谢两位。结贴!
最终脚本如下:
#!/usr/bin/perl -w
while(<>){
        chomp;
        print "$_ SAN_MAP\n";
        #system('icmd -i' .$_. ' -c /sbin/sh /opt/hp/cms/sanmap20151113.sh');
        $output = `icmd -i $_ -c "/sbin/sh /opt/hp/cms/sanmap20151113.sh"`;
        #print "$?\n";
        print "$output\n";
        print "\n\n\n\n";
        sleep 10;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP