У меня есть сценарий, который выполняет резервное копирование удаленных систем, и я хочу, чтобы он отображал дисковое пространство на удаленном устройстве резервного копирования до и после запуска сценария резервного копирования.
Благодаря другому сообщению вы узнали, как запускать удаленные команды через 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
Почему -т?