Em suma
Você não pode fazer o que descreve de maneira a usar cat
para gravar em um arquivo e enviá-lo pela rede. No entanto, existem ferramentas que podem fazer isso. Eu recomendo olhar em netcat
ou socat
(socat é mais flexível, mas um pouco mais confuso). Qualquer um provavelmente estará em seus repositórios de distribuição.
Explicação
No Linux, os soquetes IP existem no espaço do usuário e não possuem um arquivo no sistema de arquivos em si.
Para demonstrar isso, corri $ lsof -i :15115
(a porta 15115 está associada ao Skype):
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
skype 3836 eightbit 43u IPv4 9020794 0t0 TCP *:15115 (LISTEN)
skype 3836 eightbit 44u IPv4 9020795 0t0 UDP *:15115
Portanto, o processo 3836
tem um descritor de arquivo numerado 43
para o soquete TCP 15115
(o 'u' significa apenas que o arquivo está aberto com permissões r + w).
Então, se eu fizer $ ls -l /proc/3836/fd/43 && file /proc/3836/fd/43
, obtenho:
lrwx------ 1 eightbit eightbit 64 Sep 26 00:37 /proc/3836/fd/43 -> socket:[9020794]
/proc/3836/fd/43: broken symbolic link to socket:[9020794]
Como você pode ver, o socket não é realmente um arquivo.