[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[技术讨论] Shell脚本怎样检查局域网中哪些端口被占用?

  1. #!/bin/bash
  2. #检查局域网中哪些端口被占用
  3. for n in {2..255}; do
  4. #此处的“{}”中的数值为需要测试的IP尾号段,起止IP尾号用“..”隔开,并分配变量给“n”   ------->这么写对吗?
  5.          host=192.168.0.$n
  6.          ping -c2 $host &>/dev/null
  7.          if [ $? = 0 ]; then
  8.                       echo "$host 已被占用"
  9.          else
  10.                       echo "$host"
  11.          fi
  12. done
复制代码

TOP

回复 2# find


    这个不对吧,我在终端里运行的时候,显示:ping: unknown host 192.168.0.{2..255}

TOP

回复 3# hacker85


你是怎样执行这个脚本的?
./testsh
. ./test.sh
sh test.sh

TOP

回复 4# find


    sh ./IP

TOP

明天来看你的回复,谢谢先。

TOP

回复 6# hacker85


那种方法是不靠谱的,试试:
  1. chmod u+x test.sh
  2. ./test.sh
复制代码

TOP

回复 7# find


    呵,还是不行,结果如下:
6@6:~/下载$ chmod u+x IP
6@6:~/下载$ sh ./IP
192.168.1.{2..255} 已被占用
6@6:~/下载$ ping: unknown host 192.168.1.{2..255}

TOP

回复 8# hacker85


运行的时候不要使用:
sh ./IP
而是使用:
./IP

TOP

本帖最后由 hacker85 于 2012-3-18 11:11 编辑

回复 9# find


    为什么呢?!不是一个道理吗?
====================分割线==========
不加sh确实可以运行。
====================分割线==========
不过这个代码的效率不是太高。
当一台想用ssh连接一台设备的时候,这个设备虽然开机,但是它
本身却没有进行网络通讯,则ssh就不会连接成功,这样的设备如
ipad,当它待机的时候,虽然ip还是分配给了它,可是这个时候
用别的设备去连接的时候,会发现无法连接,我想这是IOS系统的
一个安全措施吧。但是它给我们这个代码带来了一个消息,就是虽
然ip被分配出去了,也就是说自己知道它被占用了,可以程序结果
不会显示已占用。

TOP

回复 10# hacker85


./test.sh会调用你脚本里面指定的/bin/bash去解释执行这个脚本
sh test.sh调用的是sh

TOP

返回列表