bash: команда не найдена (sshpass) - PullRequest
0 голосов
/ 08 мая 2018

У меня есть machine A и machine B. Из моего local machine X я хотел запустить bash-скрипт, который подключался бы к Machine A, а затем к Machine B, чтобы проверить версию пакета на Machine B.

Сейчас у меня установлено два или более пакетов на Machine B.

Проверка версии отдельного пакета:

sshpass -p 'Password' ssh admin@A.A.A.A -p 30025  "sshpass -p 'Password' ssh B.B.B.B "dpkg -s env.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/'""

Результат:

Package: env.ns,Version: 51.0.0n

Проверка нескольких пакетов:

sshpass -p 'Password' ssh admin@A.A.A.A -p 30025  "sshpass -p 'Password' ssh B.B.B.B "dpkg -s env.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/' && dpkg -s agent.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/'""

Результат:

Package: env.ns,Version: 51.0.0n
-bash: dpkg: command not found

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

Ожидаемый результат:

Package: env.ns,Version: 51.0.0
Package: agent.ns,Version: 51.0.0

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

попробуйте использовать ';' вместо '&&'

sshpass -p 'Password' ssh admin@A.A.A.A -p 30025  "sshpass -p 'Password' ssh B.B.B.B "dpkg -s env.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/' ; dpkg -s agent.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/'""
0 голосов
/ 08 мая 2018

Все, что стоит за &&, выполняется отдельной командой. Может быть, вы можете попробовать расширение скобок: добавьте обе команды в фигурные скобки, как это {command1, command2} (не уверен, будет ли это работать)

Если расширение фигурных скобок не работает, вам придется повторить команду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...