Вот простой скрипт, который сделает то, что вам нужно. Он минималистичный, но показывает основные шаги. Предположим, что этот скрипт называется: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
Интересный вопрос, он показывает, как легко можно быстро настроить несколько разных сервисов, полностью изолированных друг от друга, с помощью 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.