Назад | Перейти на главную страницу

Как вернуть многострочность из удаленной команды SSH

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

Благодаря другому сообщению вы узнали, как запускать удаленные команды через SSH, такие как (ключи SSH были настроены для автоматического входа в систему).

echo `ssh -t user@host uname -a`

Однако как я могу получить многострочный ответ от такой команды, как

echo `ssh -t user@host df`

Ответ показывает только последнюю строку вывода из df

Это звучит чересчур сложно, как где-то SSH и вызывает команду.
Просто введите:

ssh user@host df

Вуаля. :)

Редактировать 1
Пример разбора удаленного вывода:

ssh user@host df -P | tail -n +2 | awk '{print $6 "," $4}'

Выводит список разделенных запятыми точка монтирования, доступное пространство лайк:

/,1393276
/usr,3524132
/var,2560004

Возможно, это не самый эффективный или элегантный способ, но как насчет чего-то вроде:

REMOTEDF = "имя пользователя SSH @ имя хоста df"

echo "Предварительное резервное копирование df с имени хоста"
эхо date >> $ HOME / df-backups.out
echo "" >> $ HOME / df-backups.out
$ REMOTEDF >> $ HOME / df-backups.out
echo "" >> $ HOME / df-backups.out

- выполнить резервную копию -

echo "Резервное копирование имени хоста завершено; df после резервного копирования:"
эхо date >>
$ HOME / df-backups.out
echo "" >> $ HOME / df-backups.out
$ REMOTEDF >> $ HOME / df-backups.out
echo "" >> $ HOME / df-backups.out

здесь эхо - источник неприятностей. Уберите эхо, и вы получите многострочный вывод. Почему бы просто не сделать ssh username@hostname cmd Почему -т?