使用Bash 编写的 TCP 端口扫描器
来源:互联网 发布:610特大网络诈骗告破 编辑:程序博客网 时间:2024/04/20 13:19
http://www.oschina.net/translate/tcp-port-scanner-in-bash
#!/bin/bashalarm(){perl -e 'eval {$SIG{ALRM} = sub{die};alarm shift;system(@ARGV);};if ($@) { exit 1 }' "$@";}scan(){ if [[ -z $1 || -z $2 ]];thenecho "Usage: $0 <host> <port, ports, port-range>"return fi local host=$1 local ports=() case $2 in*-*) IFS=- read start end <<< "$2" for ((port=start; port<=end; port++));do ports+=($port) done ;; *,*) IFS=, read -ra ports <<< "$2" ;;*) ports+=($2) ;; esac for port in "${ports[@]}" doalarm 1 "echo > /dev/tcp/$host/$port && echo \"port $port is open\"" ||echo "port $port is closed" done}scan $
讲解:
alarm函数使用perl语言实现的,不太明白。
local host=$1 local ports=()local用来生命变量是局部变量的,shell中声明的变量是全局变量,如果想声明局部变量需要使用local。
其中ports位数组,但是这是第一次看到这样的用法。
IFS=- read start end <<< "$2"
IFS=- read start end <<< "$2"其中IFS为 Interal Field Separator,即“内部区域分隔符”,,它也是一个内置环境变量,存储着默认的文本分隔符,默认下这分隔符是空格符(space character),制表符(tab) 以及新行(newline) 。先看下面一个简单示例:
http://www.groad.net/bbs/read.php?tid-6675.html
http://bash.cyberciti.biz/guide/$IFS
for port in "${ports[@]}"${ports[@]} 是获取数组中全部的元素。
- 使用Bash 编写的 TCP 端口扫描器
- 回忆.初学C语言时编写的第一个程序.TCP端口扫描器
- Java编写的多线程端口扫描器
- Tcp 端口扫描器 (Python)
- 编写端口扫描器
- Python3实现TCP端口扫描器
- java编写一个端口扫描器
- 用python编写端口扫描器
- python socket编写端口扫描器
- 1-编写一个端口扫描器
- Python之端口扫描器编写
- 基于Linux的Tcp端口扫描器的实现
- Java编写的多线程本机端口扫描器
- 用Python编写一个高效的端口扫描器
- 端口扫描器的实现
- 端口扫描器的实现
- 单线程TCP端口扫描器源码
- Java多线程编写高效端口扫描器
- JTable清空列表的方法
- 实现循环单链表各种基本运算的算法
- Bootstrap 基础CSS - 排版(Typography)
- 进入注册表
- 在客户端程序中使用REST SOE
- 使用Bash 编写的 TCP 端口扫描器
- 说说实习那半年,别了2012。。。
- 实现单链表各种基本运算的算法
- PCB --元件封装
- boa web服务器在PC上移植
- 实现双链表的各种基本运算的算法
- JVM内存分配
- 查看硬盘分区表信息工具:fdisk0 for linux-0.11 附下载地址
- 进程间通信的方式