我正在嘗試使用python自動執行部署過程。在部署中,我首先執行「dzdo su - sysid」,然後執行部署過程。但我無法在Python中處理這部分。我在外殼裏做了類似的事情,我用了下面這段代碼,如何使用python腳本在sudo後執行一組命令
/bin/bash
psh su - sysid << EOF
. /users/home/sysid/.bashrc
./deployment.sh
EOF
這很好地處理了deployment.sh的執行。它執行sudo,然後使用sysid id執行腳本。 我正在嘗試使用python做類似的事情,但我無法在Python中找到< < EOF的替代方案。
我使用subprocess.Popen來執行dzdo部分,它執行dzdo,但是當我嘗試執行例如下一個命令時說「ls -l」,那麼這個命令不會與sysid一起執行,相反,我不得不退出sysid會話,一旦我退出,它將在我的主目錄中執行「ls -l」使用。有人可以幫助我嗎?
還有一件事,在這種情況下,我不調用任何deployment.sh但我會打電話給像CP命令,RM,等的mkdir
非常感謝你的BlackJack。你提供的解決方案是有效的。再告訴我一件事,如何在shell命令中使用shell變量。對於例如SHELL_COMMANDS = r'''\。 /users/home/$USER/deployment.py'''在這裏,你可以看到我正在嘗試傳遞$ USER,一個shell變量的路徑。但是Python當然不能擴展這個變量。你能告訴我,我可以在這裏使用shell變量嗎? – Kalpesh
因爲它由shell執行,所以根本不應該成爲問題。 – BlackJack