notes/os/shells/io/descriptors.txt
Ihar Hancharenka f73e61f31a m
2025-06-11 08:43:05 +03:00

24 строки
964 B
Plaintext

2024
https://rednafi.com/misc/http_requests_via_dev_tcp/
learned this neat Bash trick today where you can make a raw HTTP request using the /dev/tcp file descriptor without using tools like curl or wget. This came in handy while writing a health check script that needed to make a TCP request to a service.
The following script opens a TCP connection and makes a simple GET request to example.com:
#!/bin/bash
# Open a TCP connection to example.com on port 80 and assign file descriptor 3
# The exec command keeps /dev/fd/3 open throughout the lifetime of the script
# 3<> enables bidirectional read-write
exec 3<>/dev/tcp/example.com/80
# Send the HTTP GET request to the server
# >& redirects stdout to /dev/fd/3
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" >&3
# Read and print the server's response
# <& redirects the output of /dev/fd/3 to cat
cat <&3
# Close the file descriptor, terminating the TCP connection
exec 3>&-