bash socket 编程

在bash环境中,你可以打开一个socket,并通过它发送数据. 并不需要安装curl或者lynx等程序.

通过两个特殊的设备文件, 可以打开网络socket

/dev/tcp/host/port

如果 host是一个有效的主机名或者IP地址, 端口号是一个整数或者常见的服务名(如dns, http), 那么bash将打开一个TCP连接
/dev/udp/host/port

打开到host:port的UDP连接

(echo >/dev/tcp/localhost/80) &>/dev/null && echo “TCP port 80 open” || echo “TCP port 80 close”

用来判断本机的80端口是否打开

另外, 一段crontab脚本

!/bin/bash

exec 8<>/dev/tcp/zhiwei.li/80

if [ $? -eq 0 ] ; then

    printf "GET /status HTTP/1.0rn" >&8
    printf "Host: zhiwei.lirn" >&8
    printf "User-Agent: Mozilla/5.0rn" >&8
    printf "rn" >&8

    while read -u 8 -r -t 2 block;
    do
            echo $block
            echo "$(date) - web server is running."
            while read -u 8 line ;
            do
                    echo $line
            done
            exec 8&-
            exit
    done

fi

echo “need reboot”
….
参考资料
http://xpt.sourceforge.net/techdocs/nix/shell/gsh05-ShBash/ar01s28.html
http://www.cyberciti.biz/tips/spice-up-your-unix-linux-shell-scripts.html

你可能感兴趣的:(bash socket 编程)