У меня проблема с ssh от crontab против устройства хранения Fujitsu DX200.
При запуске команды из терминала все работает нормально, используя ключи RSA, но когда я вставляю эту команду в скрипт и запустите его из cron с ошибкой: «Pseudo-terminal не будет выделен, потому что stdin не является терминалом».
Команда ssh user@dx200 "show performance -type host-io"
Согласно многим статьям в сети , добавив ряд -t в качестве аргумента в ssh, он должен принудительно выделить PTY. В RedHat, где был разработан скрипт, он работает, добавляя -t -t -t (или -ttt), но это не так, когда вы работаете на Ubuntu.
Использование ssh -T (Disable pseudo-tty allocation) приводит к сбою входа в dx200 с «FUJITSU Storage ETERNUS login требуется ...», то есть не регистрируется ключ RSA.
Другие решения из сети с использованием вариантов ssh ... /bin/bash <<EOF ... невозможны, потому что мы не можем запустить оболочку на устройстве хранения.
Любые идеи о том, как обойти эту проблему? [ ! d6]
Отвечая на мой вопрос ...
Добавление дополнительного аргумента -t в ssh разрешило проблему.
Теперь команда выглядит как ssh -t -t -t -t user@dx200 ...... (-tttt should сделайте то же самое).
Страница man на ssh говорит об этом -t:
-t Force pseudo-tty allocation. This can be used to execute arbi-
trary screen-based programs on a remote machine, which can be
very useful, e.g. when implementing menu services. Multiple -t
options force tty allocation, even if ssh has no local tty.
Но ничего о том, сколько «множественных», или что в коде ssh, что определяет количество -t необходимых параметров.
Отвечая на мой вопрос ...
Добавление дополнительного аргумента -t в ssh разрешило проблему.
Теперь команда выглядит как ssh -t -t -t -t user@dx200 ...... (-tttt should сделайте то же самое).
Страница man на ssh говорит об этом -t:
-t Force pseudo-tty allocation. This can be used to execute arbi-
trary screen-based programs on a remote machine, which can be
very useful, e.g. when implementing menu services. Multiple -t
options force tty allocation, even if ssh has no local tty.
Но ничего о том, сколько «множественных», или что в коде ssh, что определяет количество -t необходимых параметров.
Отвечая на мой вопрос ...
Добавление дополнительного аргумента -t в ssh разрешило проблему.
Теперь команда выглядит как ssh -t -t -t -t user@dx200 ...... (-tttt should сделайте то же самое).
Страница man на ssh говорит об этом -t:
-t Force pseudo-tty allocation. This can be used to execute arbi-
trary screen-based programs on a remote machine, which can be
very useful, e.g. when implementing menu services. Multiple -t
options force tty allocation, even if ssh has no local tty.
Но ничего о том, сколько «множественных», или что в коде ssh, что определяет количество -t необходимых параметров.