Как определить, есть ли у пользователя ssh-ключи в Perl-скрипте - PullRequest
0 голосов
/ 29 августа 2018

У меня есть следующий скрипт в tcsh, который выглядит следующим образом:

df=`ssh $some_server 2>/dev/null df $2 -k` 
echo $df

Perl скрипт запускает этот tcsh скрипт, и у меня есть два следующих вопроса:

  1. Что делает первая команда?
  2. Как определить, есть ли у меня ключи ssh, перед запуском этой команды (например, из сценария perl или сценария tcsh?

Как я понимаю, если у меня нет ключей ssh, он запросит пароль. Я хотел бы напечатать основное предупреждение пользователю, если у него нет ключей ssh.

1 Ответ

0 голосов
/ 04 сентября 2018

Когда ssh не удается установить соединение с сервером, он не сообщает вам причину, но вы можете запустить его в подробном режиме и впоследствии проанализировать вывод.

Например, используйте следующую команду:

ssh -vvv -i $path_to_key -o BatchMode=yes \
    -l $remote_user $remote_host echo ok 2>error.log

И после этого, если это не удается, проверьте error.log причину проблемы.

Обратите внимание, что выходные данные отладки могут изменяться между различными версиями ssh, поэтому любое решение, которое зависит от него, никогда не будет очень надежным. Вы должны рассмотреть это просто намек.

...