Bash Socket 编程

Bash Socket 编程 
你可以在bash中开启一个socket链接,并且传输数据。Bash有两个特殊的设备文件:

• /dev/tcp/host/port - 如果hostname,和port是合法的话,bash会尝试开启一个TCP连接。
• /dev/udp/host/port - 如果hostname和port是合法的话,bash会开启一个UDP连接。

你可以利用这个技术来测试一台主机的端口是否是开启的,而不需要使用nmap或者port扫描器:

view sourceprint?
1 # find out if TCP port 25 open or not

2 (echo >/dev/tcp/localhost/25) &>/dev/null && echo "TCP port 25 open" || echo "TCP port 25 close"
你可以 使用循环来查找开着的端口:

view sourceprint?1 echo "Scanning TCP ports..."

2 for p in {1..1023}

3 do

4 (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"

5 done
输出:
Scanning TCP ports...
22 open
53 open
80 open
139 open
445 open
631 open

下面的这个例子让你的脚本扮演HTTP客户端:

view sourceprint?
01 #!/bin/bash

02 exec 3<> /dev/tcp/${1:-www.cyberciti.biz}/80

03

04 printf "GET / HTTP/1.0\r\n" >&3

05 printf "Accept: text/html, text/plain\r\n" >&3

06 printf "Accept-Language: en\r\n" >&3

07 printf "User-Agent: nixCraft_BashScript v.%s\r\n" "${BASH_VERSION}" >&3

08 printf "\r\n" >&3

09

10 while read LINE <&3

11 do

12 # do something on $LINE

13 # or send $LINE to grep or awk for grabbing data

14 # or simply display back data with echo command

15 echo $LINE

16 done
关于GUITools和Cronjob
如果你使用cronjob来调用你的脚本的话,你要通过“ export DISPLAY=[user's machine]:0 ”命令来设置本地的 display/input 服务。例如调用 /home/vivek/scripts/monitor.stock.sh脚本,它使用了 zenity 工具:

view sourceprint?
1 @hourly DISPLAY=:0.0 /home/vivek/scripts/monitor.stock.sh

所有的命令你都可以通过“man”来查询详细的使用方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值