telnet -l по-прежнему запрашивает логин

Вот простой скрипт, который сделает то, что вам нужно. Он минималистичный, но показывает основные шаги. Предположим, что этот скрипт называется:combine.sh

#!/bin/sh

#Add logic for better parsing of args.
IDENT=$1
SEARCHDIR=$2

# For each file in the Search Directory
# that starts with the Unique Identifier...
for f in "$SEARCHDIR/$IDENT"*; do

   datestr=$(echo "$f" | cut -d '.' -f2)
   value=$(cat "$f")
   echo "$datestr $value"
done

Тогда вы можете просто сделать:

$> combine.sh FT /path/to/my/datadir > FT.txt
1
24.02.2020, 16:45
1 ответ

Интересный вопрос, он показывает, как легко можно быстро настроить несколько разных сервисов, полностью изолированных друг от друга, с помощью Docker.

Я думаю, что telnetd по-прежнему запрашивает пароль, потому что с -l /bin/loginна стороне сервера, как вы можете видеть в Dockerfile для secobau/telnetd :альпийский -1.1:

ARG LOGIN=/bin/login
ARG PORT=23
ARG USER=user

ENV CMD "/usr/sbin/telnetd -p $PORT -b $ADDR -l $LOGIN -F"

Вы можете создать очень похожий Dockerfile, но заменить /bin/loginна /bin/shи это сработает. Например, новый Dockerfile может быть:

FROM alpine

ARG ADDR=0.0.0.0
ARG LOGIN=/bin/login
ARG PORT=23
ARG USER=user

ENV CMD "/usr/sbin/telnetd -p $PORT -b $ADDR -l /bin/sh -F"

EXPOSE $PORT

RUN apk update && apk upgrade && apk add busybox-extras
RUN adduser -D $USER && echo -e "\n\n" | passwd $USER

RUN echo "$CMD" | tee cmd.sh && chmod +x cmd.sh
CMD./cmd.sh

Построй:

docker build -t my/telnet.

Запустить:

docker container run --name my-telnet-server --publish 2323:23 --detach --restart unless-stopped  my/telnet

Теперь вы сможете войти в систему без ввода имени пользователя и пароля из клиентского контейнера.:

root@e55f8f1f3e55:/# telnet -l user 172.17.0.1 2323
Trying 172.17.0.1...
Connected to 172.17.0.1.
Escape character is '^]'.

/ #

Кстати, вам не нужно запускать docker с помощью sudo, просто добавьте себя в группу docker.

2
28.04.2021, 23:22

Теги

Похожие вопросы