Making HTTP requests from a container with no curl

📰 Dev.to · Schiff Heimlich

Learn how to make HTTP requests from a container without curl using Bash's TCP capabilities

intermediate Published 24 Jun 2026
Action Steps
  1. Use Bash to establish a TCP connection to a host and port using exec 3<>/dev/tcp/example.com/80
  2. Send an HTTP request using echo -e 'GET / HTTP/1.0 Host: example.com ' >&3
  3. Read the response using cat <&3
  4. Apply this technique to debug or test API endpoints in a containerized environment
Who Needs to Know This

DevOps and sysadmin teams can benefit from this technique when debugging containerized applications

Key Insight

💡 Bash's /dev/tcp/ pseudo-device allows for TCP connections, enabling HTTP requests without curl

Share This
🚀 Did you know Bash can make HTTP requests without curl? 🤯 Learn how to use /dev/tcp/ to debug your containerized apps #devops #sysadmin

Key Takeaways

Learn how to make HTTP requests from a container without curl using Bash's TCP capabilities

Full Article

Title: Making HTTP requests from a container with no curl

URL Source: https://dev.to/schiff_heimlich/making-http-requests-from-a-container-with-no-curl-2geb

Published Time: 2026-06-24T17:02:41Z

Markdown Content:
[Skip to content](https://dev.to/schiff_heimlich/making-http-requests-from-a-container-with-no-curl-2geb#main-content)

[![Image 1: DEV Community](https://media2.dev.to/dynamic/image/quality=100/https://dev-to-uploads.s3.amazonaws.com/uploads/logos/resized_logo_UQww2soKuUsjaOGNB38o.png)](https://dev.to/)

[Powered by Algolia](https://www.algolia.com/developers/?utm_source=devto&utm_medium=referral)

[Log in](https://dev.to/enter?signup_subforem=1)[Create account](https://dev.to/enter?signup_subforem=1&state=new-user)

## DEV Community

![Image 2](https://assets.dev.to/assets/heart-plus-active-9ea3b22f2bc311281db911d416166c5f430636e76b15cd5df6b3b841d830eefa.svg)0 Add reaction

![Image 3](https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg)0 Like ![Image 4](https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg)0 Unicorn ![Image 5](https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg)0 Exploding Head ![Image 6](https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg)0 Raised Hands ![Image 7](https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg)0 Fire

0 Jump to Comments 0 Save Boost

Copy link

Copied to Clipboard

[Share to X](https://twitter.com/intent/tweet?text=%22Making%20HTTP%20requests%20from%20a%20container%20with%20no%20curl%22%20by%20Schiff%20Heimlich%20%23DEVCommunity%20https%3A%2F%2Fdev.to%2Fschiff_heimlich%2Fmaking-http-requests-from-a-container-with-no-curl-2geb)[Share to LinkedIn](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fdev.to%2Fschiff_heimlich%2Fmaking-http-requests-from-a-container-with-no-curl-2geb&title=Making%20HTTP%20requests%20from%20a%20container%20with%20no%20curl&summary=You%20SSH%20into%20a%20minimal%20container%20image%20to%20debug%20something%2C%20and%20curl%20isn%E2%80%99t%20there.%20Neither%20is%20wget.%20You...&source=DEV%20Community)[Share to Facebook](https://www.facebook.com/sharer.php?u=https%3A%2F%2Fdev.to%2Fschiff_heimlich%2Fmaking-http-requests-from-a-container-with-no-curl-2geb)[Share to Mastodon](https://s2f.kytta.dev/?text=https%3A%2F%2Fdev.to%2Fschiff_heimlich%2Fmaking-http-requests-from-a-container-with-no-curl-2geb)

[Share Post via...](https://dev.to/schiff_heimlich/making-http-requests-from-a-container-with-no-curl-2geb#)[Report Abuse](https://dev.to/report-abuse)

[![Image 8: Schiff Heimlich](https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3949704%2F89c08e96-274f-4f09-a299-8ebdabdc7096.jpg)](https://dev.to/schiff_heimlich)

[Schiff Heimlich](https://dev.to/schiff_heimlich)
Posted on Jun 24

# Making HTTP requests from a container with no curl

[#devops](https://dev.to/t/devops)[#sysadmin](https://dev.to/t/sysadmin)[#containers](https://dev.to/t/containers)

You SSH into a minimal container image to debug something, and `curl` isn’t there. Neither is `wget`. You need to check if an endpoint is reachable or poke at an API, and you are stuck.

Bash can actually do TCP directly. It’s been able to since Bash 2.0-something.

## [](https://dev.to/schiff_heimlich/making-http-requests-from-a-container-with-no-curl-2geb#the-trick) The trick

```
exec 3<>/dev/tcp/example.com/80
echo -e "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n" >&3
cat <&3
```

`/dev/tcp/` is a bash-specific pseudo-device. Opening it sets up a TCP connection to the host and port you specify. The first line opens file descriptor 3 for read-write on that socket. You write your H
Read full article → ← Back to Reads