У меня есть скрипт, который запускает внутри контейнера 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
, я получаю ошибку в соответствии с { ссылка }