TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #664 213
/dev/tcp - сетевое соединение средствами Bash

В Bash есть малоизвестная возможность работать с TCP через псевдоустройства /dev/tcp.

Никакого nc, telnet или отдельного сетевого клиента не требуется.

▪️Проверить, доступен ли TCP-порт

if (echo > /dev/tcp/127.0.0.1/5432) 2>/dev/null; then
echo "порт открыт"
else
echo "соединение не установлено"
fi


Bash сам пытается выполнить TCP connect() к указанному адресу.

▪️Можно получить обычный файловый дескриптор

exec 3<>/dev/tcp/example.com/80


Теперь FD 3 связан с TCP-соединением:

printf 'GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n' >&3

cat <&3
exec 3>&-


То есть сетевой сокет можно использовать почти как файл.

▪️Почему это удобно в скриптах

Например, простая проверка нескольких сервисов:

for port in 22 80 443 8080; do
if (echo > /dev/tcp/127.0.0.1/$port) 2>/dev/null; then
echo "$port: open"
else
echo "$port: closed"
fi
done


Это удобно для минимальных recovery/health-check скриптов, когда не хочется зависеть от nc.

▪️Но есть важный нюанс

/dev/tcp - не настоящий файл устройства. Bash распознаёт специальный путь и превращает обращение к нему в сетевой системный вызов.
Поэтому:

ls -l /dev/tcp


не покажет какой-то TCP-интерфейс.

И работает это именно как возможность Bash, а не универсальная функция любого /bin/sh.

Например, в Bash:

bash -c 'echo > /dev/tcp/127.0.0.1/22'


а поведение другого shell может быть совершенно другим.


BashTex 📱 #bash #TCP
  • 👍 5
More from @bash_tex
  1. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  2. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  3. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  4. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  5. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
  6. Sep 29, 2026tee + process substitution: один поток и несколько получателей Иногда нужно одновременно:…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →