зеркало из
https://github.com/iharh/notes.git
synced 2025-10-30 05:06:05 +02:00
24 строки
964 B
Plaintext
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>&-
|