У меня есть программа, когда она запускается, и начинает вывод списка на порт 12345.
$ ./cool_script.pl
. Мой администратор Linux говорит, что он запрещает открывать порты. Он говорит, что мне разрешено использовать ~ / cool_script.sock (сокет домена unix) для общения. По-видимому, его сервер nginx может читать и записывать данные на носок, как если бы это был порт TCP.
В любом случае, есть ли способ обернуть исполняемый файл (./cool_script.pl) так, чтобы его попытка открыть прослушивающий порт была перенаправлена в файл .sock.
Что я пробовал: прочитайте документацию для socat
Этот пример вам подходит: https://coderwall.com/p/c3wyzq/forwarding-tcp-traffic-to-a-unix-socket
В основном:
Forwarding port 15432 to socket /srv/mongodb-27017.sock:
socat -d -d TCP4-LISTEN:15432,fork UNIX-CONNECT:/srv/mongodb-27017.sock
Вам нужно будет изменить работу программы. Заставьте его слушать Unix-сокет вместо TCP. Предполагая, что программа динамически связана со стандартной библиотекой (практически все программы), вам не нужно изменять саму программу, просто способ ее запуска. Вы можете сделать это с помощью LD_PRELOAD
, загрузив оболочку для функции открытия сокета TCP, которая вместо этого открывает сокет Unix. ttu
делает именно это (согласно его документации, я никогда не использовал это).