socat примеры использования и отладки: Docker, echo - сервер
Утилита socat в Linux позволяет устанавливать двунаправленные байтовые потоки между двумя точками, которые могут быть файлами, сетевыми соединениями, терминалами, файлами устройств и т.д. Это делает socat очень гибким инструментом для отладки программного обеспечения.
Пример создания простого TCP эхо-сервера и клиента
Когда вы вводите текст в терминале клиента и нажимаете Enter, этот текст отправляется на сервер, который затем отправляет его обратно, и вы видите этот текст в терминале клиента.
Настроим эхо-сервер: Запустите socat для создания TCP-сервера, который слушает порт 1234 и отправляет обратно все, что ему отправляют.
socat -v TCP-LISTEN:1235,fork exec:'/bin/cat'
Здесь TCP-LISTEN:1234 указывает socat открыть TCP-сервер на порту 1234, а fork позволяет обрабатывать множество соединений. Ключ -v позволяет отслеживать передачу данных. Exec указывает какую команду выполнять при получении запроса от клиента (эхо-функциональность). Клиенты, подключающиеся к этому серверу, будут видеть свои сообщения, отправленные обратно, благодаря использованию cat, который читает данные и сразу же их возвращает.
Настроим клиента: Теперь можно использовать другой экземпляр socat, nc или telnet, чтобы подключиться к этому серверу как клиент.
socat STDIN TCP:127.0.0.1:1235 OR nc 127.0.0.1 1235 OR telnet 127.0.0.1 1235
Здесь STDIN означает, что данные будут читаться со стандартного ввода (например, из терминала), а TCP:localhost:1234 указывает подключение к TCP-серверу, который вы создали на шаге 1.
socat прокси сетевая отладка сервера Docker
Настроим прокси сервер socat для более подробного вывод команд докер, например вам нужно отладить проблему запуска контейнера. Нужно, при помощи socat, вставить доменный сокет Unix между вашим запросом и сокетом сервера Docker, чтобы посмотреть, что проходит через него.
Запустите socat прокси командой, где ключ fork гарантирует, что socat не завершит работу после первого запроса.
socat -v UNIX-LISTEN:/tmp/dockerapi.sock,fork UNIX-CONNECT:/var/run/docker.sock &
Весь трафик, проходящий в каждом направлении, socat будет видеть и будет дополнять любой вывод клиента docker. Запустим например какую-нибудь стандартную команду клиента docker. Мы увидим кроме данных выводимой самой командой также подробные HTTP запросы и ответы, данные будут в формате JSON.
docker -H unix:///tmp/dockerapi.sock ps -a
fg выводим список фоновых задач и останавливаем запущенный socat.
Заключение
Использование socat - это мощный способ отладки не только Docker, но и любых других сетевых сервисов.
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах