LINUX.ORG.RU

netcat сервер - запуск другого сервера


0

1

Всем добрый день. Мучаюсь с неткатом, есть сервер который слушает порт, с порта приходит номер другого порта и он должен открыть новый сервер на этом порту

пока что это выглядит так

сервер:

$cat server.sh
#!/bin/bash
echo 'enter new port'
read port
echo "port: $port"
nohup nc -l -p $port &
echo "new server started on $port"

$nc -l -p 1234 -e server.sh

клиент:

nc localhost 1234
6660

в теории я должен получить в ответ номер нового порта и соединение должно разорваться, но этого не происходит, новый сервер как я понял запускается и не дает закрыться текущему сеансу.

Поможите плиззз!


Дело именно в том, что дочерний nc наследуют stdin и stdout от server.sh. А вы ему запретите:

nohup nc -l -p $port <&- >&- &
LeninGad
()
Ответ на: комментарий от AlexDi

На самом деле дочернему nc всё-таки надо иметь осмысленный stdin, иначе он будет умирать при коннекте. То есть проблему с невыходом родительского nc мы так решим, но дочерний nc ничего осмысленного делать не будет. Надо как-то так:

$ cat serverinstance.sh 
#!/bin/bash
echo I am here
read w
echo "Hello, $w"

$ grep serverinstance server.sh 
nohup nc -l -p $port -e ./serverinstance.sh <&- >&- &

$ nohup nc -l -p $port -e ./server.sh <&- >&- &
LeninGad
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.