web页面,php exec执行的命令与在linux命令行下执行获得的结果不一致

wanhl1990 2014-03-16 11:05:28
通过php exec执行shell脚本,但与在linux命令行下执行,获得的结果不一样。脚本内容如下:
/bin/netstat -an | grep ESTABLISHED | awk '{print $4}' | cut -d: -f1 | sort | uniq -c


在命令行下获取的结果:
2 192.168.0.135

而使用php 的exec脚本执行,通过web页面来执行,获取的结果:
1
2 192.168.0.135

这个 1 不清楚是怎么来的。哪位大神帮忙看下,问题出在哪里了!php脚本如下
<?php
exec ("/bin/netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c", $re);
foreach ($re as $re1)
{
echo $re1."<br>";
}
echo "Over<br>" ;
?>
...全文
406 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanhl1990 2014-03-17
  • 打赏
  • 举报
回复
引用 1 楼 qq120848369 的回复:
估计是nginx->php的连接引起的吧, 你可以让Php只调一下/bin/netstat -an | grep ESTABLISHED看看output是什么。
谢谢,通过/bin/netstat -an | grep ESTABLISHED 执行后,web页面得出的结果是这样的: tcp 0 0 192.168.0.1:22 192.168.0.135:50598 ESTABLISHED tcp 0 0 192.168.0.1:22 192.168.0.135:60212 ESTABLISHED tcp 0 0 192.168.0.1:22 192.168.0.135:50934 ESTABLISHED tcp 0 0 ::ffff:192.168.0.1:80 ::ffff:192.168.0.135:56387 ESTABLISHED 多出来红色的那一条。所以获取结果的时候多出来一个不正确的结果。使用netstat -an -A inet的方式,执行就获取到了与linux命令终端中一样的结果。可能是通过web php来执行时,获取的是v6与v4的共同结果吧。感谢您。呵呵,可能是自己想的太少了,没有试一下这个方法,谢谢。加分
qq120848369 2014-03-16
  • 打赏
  • 举报
回复
估计是nginx->php的连接引起的吧, 你可以让Php只调一下/bin/netstat -an | grep ESTABLISHED看看output是什么。

18,773

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧