Рассматриваемый код фактически не зависит от / dev / tcp
, существующего в файловой системе. Скорее, это особенность самого Bash. Например, если вы напишете простой HTTP-запрос к файловому дескриптору 3 в своем примере, вы должны получить ответ:
> 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...]
Если это не работает в вашей оболочке, возможно, что используемая вами оболочка по умолчанию не есть эта особенность.
К другим популярным способам установления соединений TCP / UDP внутри сценариев оболочки относятся утилиты netcat
и socat
.
Попробуйте установить:
set mime_forward=yes
set mime_forward_rest=yes
Затем все вложения включаются в пересылаемое сообщение.
В качестве альтернативы есть функция resend-message
, связанная с <ESC>e
, которая делает почти то же самое, чего вы пытаетесь достичь. Я нашел этот пост в блоге .
Но есть и недостатки: