Board logo

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

作者: hacker85    时间: 2012-3-17 22:25     标题: 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
复制代码

作者: find    时间: 2012-3-17 22:54


作者: hacker85    时间: 2012-3-17 23:08

回复 2# find


    这个不对吧,我在终端里运行的时候,显示:ping: unknown host 192.168.0.{2..255}
作者: find    时间: 2012-3-17 23:12

回复 3# hacker85


你是怎样执行这个脚本的?
./testsh
. ./test.sh
sh test.sh
作者: hacker85    时间: 2012-3-17 23:13

回复 4# find


    sh ./IP
作者: hacker85    时间: 2012-3-17 23:20

明天来看你的回复,谢谢先。
作者: find    时间: 2012-3-18 09:10

回复 6# hacker85


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

作者: hacker85    时间: 2012-3-18 10:27

回复 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}
作者: find    时间: 2012-3-18 10:47

回复 8# hacker85


运行的时候不要使用:
sh ./IP
而是使用:
./IP
作者: hacker85    时间: 2012-3-18 10:52

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

回复 9# find


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

回复 10# hacker85


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




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2