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 服务和不打开的情况下分别执行观察是什么效果。