If you're ever in the situation where you have access to a shell and need to download/install something, but don't have curl, wget, netcat or even telnet, find a handy bash script that lets you download a file from an HTTP source as a reply to this post.

It even fits in a single toot 😂

function __fakecurl() {
read proto server path <<<$(echo ${1//// })
DOC=/${path// //}
HOST=${server//:*}
PORT=${server//*:}
[[ x"${HOST}" == x"${PORT}" ]] && PORT=80

exec 3<>/dev/tcp/${HOST}/$PORT
echo -en "GET ${DOC} HTTP/1.1\r\nHost: ${HOST}\r\n\r\n" >&3
(while read line; do
[[ "$line" == $'\r' ]] && break
done && cat) <&3
exec 3>&-
}

Follow

@fribbledom
I'm confused about the syntax, what does exec 3<>... exactly do?

@uvok

IO redirection (read/write) of /dev/tcp/${HOST}/$PORT

@uvok

There are three standard file descriptions: STDIN, STDOUT, and STDERR. They are assigned to 0, 1, and 2 respectively.

3 is the first unused descriptor, which we're setting up to read from and write to a TCP socket (the virtual device /dev/tcp/host/port).

Sign in to participate in the conversation
The Vulpine Club

The Vulpine Club is a friendly and welcoming community of foxes and their associates, friends, and fans! =^^=