Передайте несколько параметров в оболочку bash, используя fabri c in python - PullRequest
0 голосов
/ 05 мая 2020

Я использую fabri c в python для создания удаленной оболочки и выполнения определенных команд на удаленном хосте. Оболочка использует разрешения root, но некоторые команды нужно запускать от имени другого пользователя. У меня есть следующий код:

from fabric import Connection, Config

sudo_config = Config(overrides={'sudo': {'password': linux_pass}})
c = Connection(host, connect_kwargs={"password": linux_pass}, config=sudo_confing)
first_start = c.sudo('''su spluser -c bash -c "/opt/splunk/bin/splunk start --accept-license --seed-passwd PASSWORD"''')
print(first_start.stdout.strip())

, который возвращает ошибку

bash: / opt / splunk / bin / splunk start: нет такого файла или каталога

Я считаю, что происходит то, что параметры команды accept-license и seed-passwd неправильно интерпретируются как параметры для команды bash.

Я также пробовал использовать

runuser -u spluser -- "/opt/splunk/bin/splunk start --accept-license --seed-passwd PASSWORD"

, но столкнулись с аналогичными проблемами.

Как это можно реализовать?

Изменить: я также пробовал следующее

c.sudo("/opt/splunk/bin/splunk start --accept-license --seed-passwd PASSWORD", user='spluser')

, но все равно нет игральные кости.

...