Как разделить вывод awk к нескольким строкам для передачи по каналу

Я в настоящее время соединяю быстрый сценарий, который развертывает несколько бродячих машин локально в dev целях. Паритет процедуры состоит из добавления ssh ключа к бродячим полям.

До сих пор получение пути ssh ключей довольно легко: vagrant ssh-config | grep IdentityFile | awk '{print $2}'

Это дает ожидаемый вывод:

/Users/admin/vms/.vagrant/machines/deploy-node.vagrant/virtualbox/private_key/Users/admin/vms/.vagrant/machines/backend-node.vagrant/virtualbox/private_key/Users/admin/vms/.vagrant/machines/app-node.vagrant/virtualbox/private_key

Однако передавая результат по каналу к ssh-add выдает исключение:

ssh_askpass: должностное лицо (/usr/X11R6/bin/ssh-askpass): Никакой такой файл или каталог

Когда я вручную ввожу команды один за другим, ssh-add работы хорошо: ssh-add /Users/admin/vms/.vagrant/machines/deploy-node.vagrant/virtualbox/private_key

Идентификационные данные добавляются...

Поэтому я полагаю, что проблема прибывает из результата awk это возвращает блок 3 строк вместо 3 раза строки к каналу.

Это подозрение может быть подтверждено путем издания: vagrant ssh-config | grep IdentityFile | awk '{print $2}' | wc -l это возвращается 3, когда я ожидал бы получать 3 раза это 1 значение.

был бы кто-то знать, как разделить результат awk так ssh-add работы правильно?

2
задан 5 October 2018 в 09:49

1 ответ

Можно заставить его работать с упорядочиванием awk добавить символ новой строки (\n) к каждой строке:

vagrant ssh-config | awk '/IdentityFile/{print $2"\n"}'

И затем передайте это по каналу к ssh-add.

1
ответ дан 2 December 2019 в 04:41

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

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