Shell进行TCP和UDP网络编程
首先需要了解 Linux 系统中 /dev/tcp
和 /dev/udp
这两个神奇的目录。
这两个设备目录为 Shell Bash 编程提供了一种可以进行网络编程的功能。在 Bash 程序中使用 /dev/tcp/ip/port
的方式就可以创建一个 socket 作为客户端去连接服务端的 ip:port。
这里我们用一个检查 HTTP 协议的 80 端口是否打开的例子来说明它的使用方法:
(trusty)zzm@localhost:~$ cat tcp.sh
#!/bin/bash
ipaddr=127.0.0.1
port=80
if ! exec 5<> /dev/tcp/$ipaddr/$port
then
exit 1
fi
echo -e "GET / HTTP/1.0\n" >&5
cat <&5
ipaddr
的部分还可以写成主机名的形式。大家可以用此脚本分别在本机打开 Web 服务和不打开的情况下分别执行观察是什么效果。