在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