В копилку полезных админских утилит -
socat. Это инструмент для организации двунаправленной передачи данных между самыми разными источниками: файлами, сокетами (TCP, UDP, Unix), устройствами, stdin/stdout и даже псевдотерминалами.▪️ Простой пример как telnet. Передаем данные с консоли ( - ) на SMTP сервер:
socat - TCP4:smtp.networkadmin.ru:25
Пробуем:
helo networkadmin.ru
mail from:<admin@networkadmin.ru>
И получаем, к примеру:
503 5.5.4 Error: send AUTH command first.
Так вы можете проверить, требует ли сервер авторизацию - чтобы, например, не стать открытым релеем для спама.
▪️ Локальный TCP-прокси на удалённый веб-сервер
socat TCP4-LISTEN:8080,reuseaddr,fork TCP4:192.168.50.10:80
Теперь можно обращаться к удалённому серверу через localhost:
curl http://localhost:8080 -L -H "Host: networkadmin.ru"
▪️ Проксирование Unix-сокета на TCP-порт. Допустим, MySQL слушает только через сокет:
socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/run/mysqld/mysqld.sock
Теперь подключение к localhost:3307 будет работать как к сокету:
telnet 127.0.0.1 3307
▪️ Удаленный Unix-сокет, как будто он локальный. На машине-клиенте:
socat UNIX-LISTEN:/run/mysqld/mysqld.sock,fork,reuseaddr,unlink-early,user=mysql,group=mysql,mode=777 \
TCP:192.168.50.10:3307
Теперь любой софт может работать с удаленной базой, как с локальной. Без изменений конфигурации сервера.
#socat #linux
🧑💻 NetworkAdmin