как запустить командную строку в Linux от другого пользователя - PullRequest
0 голосов
/ 17 января 2019

Мне нужно выполнить bash-скрипт из программы на python (python2.7) в red hat, в то время как этот bash-скрипт должен запускаться от другой учетной записи пользователя как отговоренный пользователь.

В Linux я сначала переключусь на пользователя splunk su - splunk, затем наберу команду ./mybashFile под пользователем как splunk

Вот что я попробовал:

import  subprocess
cmd1=subprocess.Popen(["su","-","splunk"],shell=True,stdout=subprocess.PIPE)
cmd2=subprocess.Popen(["./path/myBashFile.sh"],shell=True,stdin=cmd1.stdout,stdout=subprocess.PIPE)
cmd2.stdout

Я все еще не могу запустить этот bash-файл от имени пользователя-спленка. Эта команда не может перейти к другой учетной записи.

1 Ответ

0 голосов
/ 17 января 2019

cmd1 и cmd2 - два разных процесса, не влияющих друг на друга. Если вы хотите пойти по маршруту su, вам нужно будет вызвать сценарий оболочки через это:

...["su","-","splunk", "-c", "./path/myBashFile.sh"]...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...