用當前使用者(如root)執行乙個指令碼,在指令碼中需要切換到其他使用者去(如ossadm)執行某條命令
直接在指令碼裡進行su ossadm 或者su - ossadm是行不通的,不管如何環境變數等一些東西比較容易混亂,載入不到對應使用者的環境變數
有兩種方式可以在指令碼裡進行切換
1,使用eof
#!/bin/bash
su - ossadm《實際上這種方式是有很大缺陷的,載入不到對應使用者的環境變數
2, 使用 su - ossadm -c " "
#!/bin/bash
su ossadm -c "cd /etc/config && bash test.sh"
如此可以使用命令切換到對應使用者執行完命令後又返回當前使用者 使用指令碼切換使用者執行命令
需要使用到spawn 和 expect 命令,可以是expect指令碼或者sh指令碼 相關參考 1 test.expect usr bin expect spawn su gw04 expect password send gw123 n send sudo ifconfig can0 down n...
Shell指令碼中實現切換使用者並執行命令操作
今天公司同事來找到我說要在伺服器上用另外乙個使用者執行python指令碼,但設定到crontab裡卻老是root使用者來執行,為了省事我就想了乙個偷懶的辦法,就是用shell指令碼切換到那個使用者,然後去執行那個python指令碼.好了,這篇文章我只演示怎麼用shell程式設計客棧指令碼切換到其他使...
shell指令碼,指定使用者執行shell命令
系統環境 centos7 如root使用者下,實現用elk使用者啟動es,如下 bin bash su elk eofecho start elasticsearch.nohup sh data elasticsearch bin elasticsearch echo start kibana.no...