Как получить вывод ssh, когда в команде есть команда для смены пользователя - PullRequest
0 голосов
/ 24 мая 2019

Когда я использую ssh для запуска команды на удаленной машине, я получу вывод из оболочки.Однако, если я добавлю

sudo su - user2

, я не получу вывод.Теперь я не могу сделать

ssh user2@host

Из-за некоторых проблем с разрешениями.

Есть ли способ получить выходные данные для следующей команды?

ssh user1@host 'sudo su - user2; wc -l tmp.txt'

Благодаря@laenkeio.Использование sudo -u user2 может запускать несколько простых программ.

Однако, когда мне нужно вызвать скрипт python, которому нужна переменная окружения для user2, скрипт не смог найти путь по умолчанию, используя sudo -u user2.

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Если у вас есть соответствующие права sudo на host, вы сможете сделать это с:

ssh -t user1@host 'sudo -u user2 wc -l tmp.txt'

Использование sudo -u означает «выполнить от имени пользователя2», что позволяет избежать лишних su -. И -t заставляет ssh выделить tty, чтобы sudo мог запросить ваш пароль.

0 голосов
/ 24 мая 2019

Если вы не можете выполнить ssh user2@host для какой-либо проблемы с разрешением, вы не сможете запустить ssh user1@host 'sudo su - user2; ... по той же причине ...
И даже при отсутствии разрешения при выполнении su - user выбудет запрошен пароль ...

...