O código em questão não depende realmente de /dev/tcp
existente em um sistema de arquivos. Pelo contrário, é uma característica do próprio Bash. Por exemplo, se você escrever uma solicitação HTTP simples para o descritor de arquivo 3 em seu exemplo, deverá obter uma resposta:
> ls /dev/tcp ls: /dev/tcp: No such file or directory
> exec 3<>/dev/tcp/google.com/80
> echo -e "GET / HTTP/1.1\n\r" >&3
> cat <&3
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html;
charset=UTF-8
[...SNIP...]
Se isso não funcionar em seu shell, é possível que o shell padrão que você está usando não tenha esse recurso específico.
Outras formas populares de fazer conexões TCP / UDP dentro de scripts de shell incluem o netcat
e socat
.