скрипт ssh не должен запрашивать пароль, если аутентификация с открытым ключом не удалась

printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"

Это зарезервирует 10, 15 и 20 символов для трех строк, а также оставит -выравнивание строк внутри этого пробела.

Пример сценария:

set -- PROPIA silo2 INT SRO silo3 SYS
while [ "$#" -gt 0 ]; do
    printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"
    shift 3
done

Выход:

App:PROPIA      Region:silo2            Env:INT
App:SRO         Region:silo3            Env:SYS
2
29.01.2020, 16:25
2 ответа

Согласно предложению,

sshимеет опцию -o batchmode=yes, которая предотвращает любое взаимодействие.

  • пароль не запрашивается

  • нет подтверждения иностранной подписи

Это приведет к коду ошибки, если соединение не установлено.

1
28.04.2021, 23:25

Вы можете использовать timeoutв дополнение к ограничению времени выполнения ssh:

timeout 10 ssh -o ConnectTimeout=2 -o PasswordAuthentication=no -q $x exit returncode=$?

или

timeout --preserve-status 10 ssh -o ConnectTimeout=2 -o PasswordAuthentication=no -q $x exit returncode=$?

Обязательно выберите хороший тайм-аут. 2 секунды ConnectTimeoutплюс 8 секунд на бег exitбудет достаточно; даже при высокой нагрузке.

3
28.04.2021, 23:25

Теги

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