1. 程式人生 > >在sudo ./rjsupplicant.sh時遇到command not found的情況——Linux銳捷校園網的連線

在sudo ./rjsupplicant.sh時遇到command not found的情況——Linux銳捷校園網的連線

喵哥實驗室最近找工作的師兄師姐在做筆試的時候都會遇到Linux相關的題目,作為一個“有理想、有抱負的上進青年”,喵哥決定重新撿起Linux。

在使用Linux的第一個問題就是連線校園網,雖然校園網有無線,雖然有限校園網現在可以用網頁登入,但是喵哥覺得,使用Linux就要用到它的骨髓,學習它的精華。所以使用shell是自不可少的。

喵哥在自家學校的網路中心下載下來Linux版的銳捷認證客戶端,解壓後的檔案長這樣:

根據README檔案其實很好理解並去操作,把銳捷正常執行起來,但是,喵哥這個“Debug”的命,一下就被喵哥試出了錯誤:

由於喵哥不喜歡馬賽克,所以就沒把登入的命令輸入完全,其實完整的格式是這樣的:

簡寫:sudo ./rj*.sh -a 1 -d 1 -u 有戶名 -p 密碼 -s internet -S 1

全寫:sudo ./rjsupplicant.sh --auth=1 --dhcp=1 --user=使用者名稱 --password=密碼 --save=1

其實輸入完全,執行的結果也是會出現“command not found”的結果,這是為什麼呢?喵哥在網路上一搜一大把,總結如下:

  1. 在/etc/sudoers檔案內增加這麼一行:Defaults secure_path=”/bin:/usr/bin:/usr/local/bin:…”;
  2. 使用指令碼的完全路徑,不是辦法的辦法;
  3. 使用sudo的env選項,像這樣sudo env PATH=$PATH xxx.sh;
  4. 把指令碼拷貝或連結到系統$PATH中;
  5. 重新編譯sudo,不帶–with-secure-path選項了(終極解決辦法);
  6. .sh中出現了不應該出現的空格,比如在“=”兩邊不可以出現空格。

喵哥花了一個多小時把這些方法反反覆覆使了個好幾次,連重啟大法都用上了,這些方法都沒有解決喵哥的問題,第六個方法感覺有點考驗技術,喵哥認真的把rjsupplicant.sh裡的空格都刪了,最後可以執行rjsupplicant.sh時,出現了死迴圈。。。所以不是太懂.sh的人還是不要輕易去修改指令碼。(我是小白,不姓白)

那麼是什麼原因導致喵哥無法執行rjsupplicant.sh呢?靈光一閃,喵哥想起之前root安卓手機時檢視檔案許可權學到的知識,然後喵哥就去搜索Linux檔案許可權。通常Linux的檔案許可權是這樣表示的:

                                         drwx-wx---

d表示這個檔案時有目錄的,即資料夾,此外還有l,表示連結,-表示為檔案。後面的九個空是三個一組分開的,三個組分別是:u(使用者許可權)、g(組許可權)、o(不同組其他使用者許可權)。每組用rwx表示,沒有的用-填空,其中r=4,w=2,x=1,加起來就是7。所以-rwx-w----,用數字表示就是720。

檢視檔案的許可權在路徑下輸入ll即可

可見,rjsupplicant.sh是沒有執行許可權的,喵哥無法執行它是自然的。那麼就根據網上的教程修改檔案許可權。規則如下:

  1. 使用chmod命令修改檔案許可權;
  2. chmod 數字 檔名,如chmod 720 abc,即把rwx-w----許可權給了abc檔案;
  3. chmod u=x abc,給使用者許可權新增執行許可權,g和o類似,如果全部改變,用chmod a=x abc;
  4. 許可權可以做加減法,這個跟rwx的數字意義呼應起來了,如chmod u+x abc。

由於喵哥的檔案缺的是執行許可權,那麼就在使用者許可權下新增執行許可權,即chmod u+x rjsupplicant.sh

chmod命令執行過程是沒有問題的,但是修改檔案許可權失敗了,rjsupplicant.sh還是不可執行。然後就是去找關於檔案許可權修改失敗的解決方法。直到喵哥看到一篇介紹Linux掛載行動硬碟檔案沒有執行許可權的文章,我才意識到,這個跟我存放檔案的位置有關。有兩個解決方案:

  1. 把掛載的分割槽解除安裝掉,然後再重新掛載,使得改掛載分割槽的檔案有執行許可權;
  2. 把.sh拷貝到Linux的分割槽下。

喵哥把檔案拷貝到Linux下的文件資料夾。再按照前面的方法修改檔案的許可權,成功了

然後登入校園網也成功了,棒!