Как это?
socat tcp-listen:8080,reuseaddr,fork system:'ls; exec socat - tcp\:localhost\:80'
1-й параметр получает ,вилка
иметь сокат
продолжайте слушать для большего количества соединений
система:
предпочтительнее исполнитель:
иметь интерпретатор оболочки и легко запускать дополнительную команду после лс
команда,
что является новым сокат
команда
который будет иметь stdin/stdout, подключенный к выходу/входу удаленного клиента, и снова перенаправит его в двух направлениях к следующему месту назначения. Обратите внимание, что его :
разделитель (и несколько других специальных символов) необходимо экранировать с помощью \
чтобы не путать первый сокат
команда. Если эта строка становится более сложной, становится проще просто выполнить такой скрипт:
socat tcp-listen:8080,reuseaddr,fork exec:/path/to/myscript.sh
с /путь/к/myscript.sh
:
#!/бин/ш
лс
исполняемый сокат - tcp:localhost:80
исполнитель
в команде оболочки является необязательным, но позволяет избежать бесполезного ухода за оболочкой.
сокат
также экспортирует несколько собственных переменных, которые можно повторно использовать в скрипте, которые вы можете проверить, например, так (с установленным соединением):
$ env - socat TCP-LISTEN:8080,reuseaddr,fork exec:printenv
SOCAT_PID=1057351
SOCAT_PPID=1057284
SOCAT_VERSION=1.7.4.1
СОКАТ_СОКАДДР=127.0.0.1
SOCAT_SOCKPORT=8080
SOCAT_PEERADDR=127.0.0.1
SOCAT_PEERPORT=42970