公司项目中的一项小功能,统计设备的连接数。其中用到shell脚本来获取已连接设备的统计。使用命令

/bin/netstat -an| grep ESTABLISHED | awk '{print $4}' | cut -d: -f1 | sort | uniq -c
 
在linux命令行下执行获取到的结果为
    2 192.168.0.135
 
而通过web 页面用php 的exec 函数来执行,获得结果是这样的:
    1

2 192.168.0.135

 
php 脚本如下:
<?php        
     exec ("cat /dev/null > /tmp/res.log") ;
//      exec ("/bin/netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c  ", $re);  
     exec ("/bin/netstat -an | grep ESTABLISHED ", $re);         
     foreach ($re as $re1)        
     {                 
        echo $re1."<br>";        
     }         
     echo "Over<br>" ;
?>
 
百思不得其解,后来在web端只执行 /bin/netstat -an | grep ESTABLISHED 来查看,获得接过分别如:
linux命令行下:
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
 
php 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
 
两种结果不一样了,通过web页面执行的多出来一条(如上面红色部分)。是Ipv6+v4地址的一种写法。即v6和v4的结果都统计出来了。
 
解决办法
/bin/netstat -an -A inet| grep ESTABLISHED | awk '{print $4}' | cut -d: -f1 | sort | uniq -c
 
指定使用协议为 inet 即不包括ipv6的内容。
 
问题是解决了,但具体怎么产生的这个问题,具体原因是什么。还没有弄清楚。还待后续研究中...
 
 
 
 

通过web php 执行shell脚本,获取的结果与直接在命令行下获取的结果不同。的更多相关文章

  1. 利用python执行shell脚本 并动态传参 及subprocess基本使用

    最近工作需求中 有遇到这个情况  在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法   最后还是选择了subprocess这个python标准库 su ...

  2. Web页面执行shell命令

    本文以apache为web服务器为例 安装apache服务yum -y install httpd 启动apachesystemctl restart httpd 创建shell脚本cd /var/w ...

  3. 秘钥登录服务器执行shell脚本

    做自动化的时候,有时候避免不了要和服务器有互动,刚巧碰上一个项目,需要执行命令才能完成本次测试. 昨天遇到的是秘钥形式的,只有秘钥和用户名,百度找了许久也没有思路,(能账号密码登录服务器的还简单些), ...

  4. Android程序执行shell脚本

    在做Android应用时,经常需要执行shell脚本,以快速实现某些功能: 在Android应用程序中执行shell脚本可以省去一大堆繁琐的代码,还可以避免不必要的错误: 比如:拷贝文件夹时,可以执行 ...

  5. 在PHP中调用php_ssh实现远程登陆linux服务器并执行shell脚本。

    这个功能主要用于在web端利用程序对远程服务器进行操作,通过PHP_ssh执行shell脚本来实现. 首先要安装php_ssh2组件,linux中centos7下有ssh2源,直接安装.window下 ...

  6. Linux中执行shell脚本的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  7. Linux中执行shell脚本的4种方法

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  8. 执行shell脚本的几种方法及区别

    执行shell脚本的几种方法及区别 http://blog.csdn.net/lanxinju/article/details/6032368 (认真看) 注意:如果涉及到脚本之间的调用一定要用 . ...

  9. Java SSH远程执行Shell脚本实现(转)

    前言 此程序需要ganymed-ssh2-build210.jar包(下载地址:http://www.ganymed.ethz.ch/ssh2/) 为了调试方便,可以将\ganymed-ssh2-bu ...

随机推荐

  1. LoadRunner脚本回放日志中的Warning信息

    关注LoadRunner脚本回放日志中的Warning信息   最近在与大家的讨论中发现了LoadRunner的很多问题,出于解决问题的出发点,我也就相关自己不理解的问题在Google中搜索了一番,并 ...

  2. The 18th Zhejiang University Programming Contest Sponsored by TuSimple -C Mergeable Stack

    题目链接 题意: 题意简单,就是一个简单的数据结构,对栈的模拟操作,可用链表实现,也可以用C++的模板类来实现,但是要注意不能用cin cout,卡时间!!! 代码: #include <std ...

  3. sg函数总结

    http://blog.csdn.net/luomingjun12315/article/details/45555495 这一段时间写的题和我接下来要展示的一些概念都来自这里↑. 必胜点和必败点的概 ...

  4. 【set】【链表】hdu6058 Kanade's sum

    f(l,r,K)表示区间l,r里面的K大值,问你所有连续子区间的f之和. l(i)表示i左侧第一个比它大的数的位置,r(i)表示i右侧第一个比它大的数的位置.可以用set处理出来. 把数从大到小排序, ...

  5. 【置换群】poj3270 Cow Sorting

    并不应该叫置换群……只是用到了置换而已,并没有群. 题解看这个吧,我就不写了:http://www.cnblogs.com/kuangbin/archive/2012/09/03/2669013.ht ...

  6. ThreadPoolExecutor(线程池)源码分析

    1. 常量和变量 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); // 高3位为线程池的运行状态,低29 ...

  7. Table 'hd_online' is marked as crashed and should be repaired索引损坏

    myisam 引擎表的索引损坏,解决方法 找到mysql的安装目录的/usr/local/mysql/bin/myisamchk工具,在命令行中输入: myisamchk -c -r /data/db ...

  8. python使用sqlite示例

    SQLite是一种嵌入式数据库,它的数据库就是一个文件.Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用. 操作关系数据库,首先需要连接到数据库 ...

  9. 将WPF版的弹幕播放器给优化了一下

    年前较闲的时候研究了一下WPF的性能优化,练手的时将之前写的弹幕播放器给重新写了一下.年前的时间不大够,没有写完,这两天接着弄了一下,基本上弄得差不多了. 主要重写了底层的渲染算法,优化后效果还是非常 ...

  10. 基于tiny4412的Linux内核移植(支持device tree)(二)

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...