Сценарий оболочки для удаленного получения информации о подписке Red Hat

#bash #shell #ssh

#bash #оболочка #ssh

Вопрос:

Я пытаюсь написать скрипт для ssh на серверы, извлеченные из списка, а затем сообщить информацию о менеджере подписки. Вот скрипт, который у меня есть, но имеет проблемы:

 #!/bin/bash

SERVERLIST=`cat $HOME/Documents/RHEL_servers.txt | awk '{print $1}'`
SUBCOMMAND='sudo subscription-manager list --available'

#for HOSTS in $SERVERLIST; do echo $HOSTS;
#done

for HOSTS in $SERVERLIST; do ssh -t $HOSTS "($SUBCOMMAND)" > output.log;
done
  

Похоже, что при просмотре этого output.log происходит то, что скрипт зависает на шаге ввода моего пароля для запуска команды диспетчера подписки, но я этого не вижу. Я предполагаю, что он передает это соединению на удаленном компьютере, а не на моей стороне, я никогда не вижу возможности ввести свой пароль.
Есть ли какой-либо способ обойти это?
Конечный результат, на который я надеюсь, — это вывод команды списка-менеджера подписки — доступная команда, переданная на вывод.файл журнала, находящийся на моем компьютере.

Комментарии:

1. Чтобы было ясно, что, по моему мнению, это застряло, это перенаправление на output.log. Я могу запустить ту же команду через ssh -t без перенаправления и получить вывод на моем терминале.

2. Они (...) не нужны.

Ответ №1:

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

Вы должны иметь возможность передавать свой пароль непосредственно в sudo via ssh ; вы также можете использовать -S опцию принудительного sudo считывания пароля из его стандартного идентификатора.

В идеале вы могли бы настроить sudo на удаленных хостах запуск вашей команды без ввода пароля.

Комментарии:

1. Есть ли способ обойти это?

2. Я точно не помню, как -t это работает; возможно, вы просто сможете передать свой пароль ssh для sudo чтения. Лучшим решением, если оно доступно, было бы настроить sudo на удаленных хостах, чтобы вы могли запускать эту точную команду без пароля.

3. Вы также можете использовать -S опцию принудительного sudo считывания пароля из стандартного ввода.