Использование ssh в скрипте cron

У меня проблема с запуском ssh из crontab для устройства хранения Fujitsu DX200.

При запуске команды из терминала все работает нормально, подключаясь с использованием ключей RSA, но когда я встраиваю команду в сценарий и запускаю ее из cron, происходит сбой: «Псевдо-терминал не будет выделен, потому что stdin не является терминалом».

Команда: ssh user@dx200 "show performance -type host-io"

Согласно многим статьям в сети, добавление числа -t в качестве аргумента для ssh должно привести к принудительному выделению PTY. В RedHat, где был разработан скрипт, он работает путем добавления -t -t -t (или -ttt), но это не так при работе в Ubuntu.

Использование ssh -T (Отключить псевдо-tty выделение) приводит к сбою входа в dx200 с помощью «FUJITSU Storage ETERNUS требуется вход в систему ...» - то есть, не входя в систему с ключом RSA.

Другие решения из сети, использующие варианты ssh ... /bin/bash <<EOF ..., невозможны, потому что мы не можем запустить оболочку на устройстве хранения.

Есть идеи, как обойти эту проблему?

3
задан 3 May 2018 в 14:36

1 ответ

Ответ на мой собственный вопрос...

Добавление дополнительного -t аргумент ssh решил проблему.

Команда теперь похожа ssh -t -t -t -t user@dx200 ...... ( -tttt должен сделать то же).

Страница справочника на ssh say's это о-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 опции требуются.

1
ответ дан 1 December 2019 в 17:28

Другие вопросы по тегам:

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