标题: [技术讨论] Shell脚本怎样检查局域网中哪些端口被占用? [打印本页]
作者: hacker85 时间: 2012-3-17 22:25 标题: Shell脚本怎样检查局域网中哪些端口被占用?
- #!/bin/bash
- #检查局域网中哪些端口被占用
-
- for n in {2..255}; do
- #此处的“{}”中的数值为需要测试的IP尾号段,起止IP尾号用“..”隔开,并分配变量给“n” ------->这么写对吗?
- host=192.168.0.$n
- ping -c2 $host &>/dev/null
- if [ $? = 0 ]; then
- echo "$host 已被占用"
- else
- echo "$host"
- fi
- 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
那种方法是不靠谱的,试试:- chmod u+x test.sh
- ./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 |