shell指令碼中使用其他使用者執行指令碼

來源:互聯網
上載者:User

2,在某些軟體安裝過程中,要建立獨立使用者,然後以該使用者運行某些安裝操作,如gitolite安裝過程,建立git使用者並執行安裝

方法1:sudo -u user ...

sudo -u git -H  <<-Codels ~cat test#other cmdsCode
後面的相繼命令在Code之前的會是以切換後的使用者執行。

方法2: su

su命令

    #!/bin/sh    echo ~/    su - test <<HERE    echo ~/    ls -al    HERE    echo ~/sudo su - user1echo #HOMEecho `ls -ltr`

可以用sudo命令,它的作用是“excute a command as another user",預設為root使用者,可以用 -u 指定使用者名稱(假設要以user身份執行prog程式):sudo -u user prog就可以了。

另一個命令su,是用另一個身份運行shell,再用新的shell運行指定程式(su只能運行在shell終端裡面,雖然可以把命令寫成類似sudo的樣子[su -c user prog],但它的實現原理實際上還是先運行一個shell,再通過shell運行其他程式)。

http://www.shareup.me/metadocs/11197 

Shell中通常將EOF與 << 結合使用,表示後續的輸入作為子命令或子Shell的輸入,直到遇到EOF為止,再返回到主調Shell。如下:

export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
sqlplus $USERID @$OUT_FILE << EOF
exit
EOF

當把這段代碼放在Shell中時,會在Shell指令碼執行完畢後自動結束SQLPLUS的命令提示字元狀態。

<<EOF
(內容)
EOF

可以把EOF替換成其他東西,意思是把內容當作標準輸入傳給程式。這裡再簡要回顧一下< <的用法。當s h e l l看到< <的時候,它就會知道下一個詞是一個分界符。在該分界符以後的內容都被當作輸入,直到s h e l l又看到該分界符位於單獨的一行)。這個分界符可以是你所定義的任何字串。提示,最好在行首,不要加空格。

方法1.需要,自動登入mysql(root:root,passwd:123456),查詢test庫,test1表裡的user=aa的記錄.

#!/bin/sh
mysql -uroot -p123456 <<EOF
use test;
select * from testaa while a=10000; ###1000 not usr single quote mark,because a is int 
                                                  # type,only char type need single quote mark.

exit

EOF

 

在shell中:$0: 擷取當前指令碼的名稱$#: 傳遞給指令碼的參數個數$$: shell指令碼的進程號$1, $2, $3...:指令碼程式的參數 

方法2:用expect指令碼

 expect用法:參考 http://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html

 開機自啟動可以將指令碼放到/etc/rc.d目錄下的rc.local中即可

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.