在shell腳本中使用sudo


    今天讓我的ubuntu 64位 在宿舍接入了校園網,使用的依舊是xrgsu,xrgsu這個渣渣只有32位,木有64位,於是安裝了32位庫,安裝了xrgsu,然后為了避免每次認證都要輸入帳號和密碼,利用expect執行認證腳本,這個腳本叫做ruijie.sh(來自西電開源wiki)。

    然而人的懶惰是無極限的。我的wlan0,也就是無線網卡每次開機的時候應該會是打開的,而且由於我還在其它地方連接其它類型的網絡,比如實驗室的無線網絡,於是我想再寫一個腳本,在執行ruijie.sh之前先根據wlan0是不是打開來做一點處理。

    很明顯,要是wlan0打開的話,我需要關閉wlan0,用命令

ifconfig wlan0 down

就可以關閉。由於我是telnetning用戶,所以我需要在命令前面加上sudo,像這樣

sudo ifconfig wlan0 down

但是平常在tty執行的時候,會彈出"[sudo]password for telnetning:",我輸入密碼就能執行,但是在腳本中顯然不能人工輸入。順便提一下,更改sudoers文件其實也是起不到什么作用的。首先想到的就是用expect,但是,這個,或許有更簡單點的方法。

在man sudo中我們可以看到這么一段:

-S          The -S (stdin) option causes sudo to read the password from
                   the standard input instead of the terminal device.  The
                   password must be followed by a newline character.

翻譯過來就是  sudo 的 -S 選項允許從stdin讀入密碼,那這樣就好辦了。

測驗一下:

echo "password" | sudo -S visudo

用echo將我的password傳遞給sudo了,於是順利執行。

這下就好解決我的問題了:

echo “password” | ifconfig wlan0 down

比較簡單的一種方法,呵呵


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM