Как заставить s sh с -o StrictHostKeyChecking = не работать на docker, чтобы s sh хост работал, не выходя из выполнения скрипта? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть скрипт, который запускает внутри контейнера docker некоторые действия, которые нам нужны для некоторых внутренних целей отладки:

set -eu
echo "Starting i/o test for host"
IP_HOST=$(ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17 | awk 'NR==1{print $1}')
echo "Detected IP of host is $IP_HOST"
sshpass -p tcuser ssh -o StrictHostKeyChecking=no docker@localhost -t -t
echo "Then"

выходные данные здесь дают точно:

bash-5.0# sh /etc/cron.d/iotesthost.sh
Mon Mar  2 12:43:59 UTC 2020
Starting i/o test for host
Detected IP of host is 172.17.0.1
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

и когда достигнута последняя строка, скрипт заставляет меня завершить выполнение bash или crond. Поэтому я не могу go продолжить обработку других строк после sshpass/ssh, поэтому я никогда не достиг echo "Then"

. Это является причиной выхода из сценария и способа его обхода, сохраняя все особенности принятия ключей (мне нужно, так как каждый раз, когда контейнер docker вызывает скрипт, он новый)

Если я игнорирую -t -t, я получаю ошибку в соответствии с { ссылка }

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