我在寫一個調用很多其他腳本的bash腳本。
幾個腳本必須以user_1身份執行,但幾個腳本必須以user_2身份執行。
腳本應該按照嚴格的順序調用。我以user_1的身份啓動腳本,並多次使用su來成爲user_2。這些時間蘇需要一個密碼,所以我不得不重新輸入多次。 我想避免這種情況,但su沒有密碼參數。
sudo和expect沒有安裝。使用更多用戶執行腳本
回答
我已經用ssh解決了這個問題。我爲user_1生成了身份驗證密鑰併發布到了user2。密碼不再需要。
ssh -l user_1 hostname "command_1; command_2"
爲user_1和user_2分叉(使用'&')。他們應該使用「鎖定文件」(信號量)進行通信(與客戶端服務器類似)。例如USER_1什麼事情而user_2檢查是「鎖文件」存在於,而...睡眠循環
也許這是愚蠢的,但你可以使用
ssh [email protected]
結束鍵
如果你碰巧有zsh的,我想你可以很容易地做到這一點 - 是這樣的:
#!/bin/zsh
coproc user1_script
su user2
do_stuff
echo "your_turn" >&p
read MY_TURN
do_more_stuff
echo "your_turn" >&p
read MY_TURN
...
user1_script:
#!/bin/zsh
read MY_TURN
do_stuff
echo your_turn
read MY_TURN
do_more_stuff
...
如果你被困住了,並且擁有zsh,無論如何它都值得一試。
Bash 4和ksh也有coprocesses。 – 2010-09-07 14:53:59
你可以以root身份運行。聽起來有風險嗎?如果你不小心與前面加上蘇每個命令,並添加用戶名,像這樣:
蘇-c「SCRIPT1」 USER_1 & &蘇-c「SCRIPT2」 user_2
這將(假設你開始以root )將用戶更改爲user_1,然後再運行script1,然後回到root,然後更改爲user_2以運行script2 ..全部不需要多個密碼。
聽起來不錯,但我的腳本必須在公司服務器上運行。 root密碼僅爲系統管理員所知。 – 2010-09-10 11:36:46
你能否提供一些關於你爲什麼需要這兩個用戶的更多細節?你有兩個密碼..你可能最後結果文件嗎? – Spaceghost 2010-09-10 15:36:50
這將是一個安裝腳本。我們爲我們的應用使用了2種不同的工具。這兩種工具都需要作爲特殊用戶進行安裝。這個規則是工具生產者所要求的。這些工具的組件是相互構建的。這意味着我必須安裝第一個工具,而不是啓動一些組件。接下來,我必須安裝2.工具,從第一個工具啓動其他組件,執行一些其他操作。這是粗略的情況。 – 2010-09-13 08:50:19
- 1. 在使用非root用戶執行csh腳本期間更改用戶
- 2. 使用ISQL執行腳本
- 3. 使用.load腳本執行
- 4. 腳本用於登錄用戶和執行另一個腳本
- 5. 作爲特定用戶執行腳本
- 6. 執行腳本忽略用戶的PYTHONPATH
- 7. 更多時間來執行php腳本
- 8. 終止用戶腳本 - 使單個腳本適合多個用戶運行?
- 9. Bash腳本使用參數執行多個程序使用xterm
- 10. 在shell腳本中使用GNU並行執行多個mysql腳本並行
- 11. 用subprocess.call使用shebang執行python腳本
- 12. MYSQL用戶權限執行更新腳本?
- 13. 更改Groovy腳本的用戶/執行者
- 14. Asp.Net Web用戶控件上的JQuery腳本多執行一次
- 15. 如何在多個用戶(模式)執行SQL腳本 - ORACLE
- 16. 多用戶RVM - 使用sudo執行Ruby腳本時gem路徑不同
- 17. bash腳本,它執行一個提示用戶的python腳本
- 18. 執行用戶輸入另一個腳本的Bash腳本
- 19. 是用戶從shell執行的pelican可執行腳本?
- 20. 多個執行js腳本
- 21. 腳本執行很多次
- 22. 使用UIWebView-stringByEvaluatingJavaScriptFromString執行的腳本將可用多長時間?
- 23. 用rails執行大腳本
- 24. 用C++執行腳本
- 25. NiFi使用Groovy執行腳本:java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver
- 26. Postgresql:使用密碼腳本執行psql
- 27. 使用PHP創建可執行腳本
- 28. 如何使用java執行shell腳本
- 29. sshj使用nohup執行腳本
- 30. 如何使用crontab執行腳本
這也是我的第一個想法,它肯定是一個偉大的解決方案。我覺得這太危險了。當劇本變得更加複雜時,將來可能會導致問題。 – 2010-09-10 11:42:08