В немного связанной теме я хотел сделать то же самое sudo с несколькими командами через SSH, но ничего из вышеперечисленного не сработало.
Например, в Ubuntu,
$ ssh host.name sudo sh -c "whoami; whoami"
[sudo] password for ubuntu:
root
ubuntu
хитрость обнаруженная здесь заключается в двойной кавычке команды.
$ ssh host.name sudo sh -c '"whoami; whoami"'
[sudo] password for ubuntu:
root
root
Другие опции, которые также работают:
ssh host.name sudo sh -c "\"whoami; whoami\""
ssh host.name 'sudo sh -c "whoami; whoami"'
В принципе, двойные кавычки необходимы, потому чтоЯ думаю, что клиентская оболочка, в которой запускается SSH, удаляет самый внешний набор кавычек.Смешайте и сопоставьте кавычки с вашими потребностями (например, переменные должны быть переданы в).Однако YMMV с кавычками, особенно если удаленные команды являются сложными.В таком случае такой инструмент, как Ansible, сделает лучший выбор.