這些指令碼你都能寫出來嗎?RH033層級簡單指令碼

來源:互聯網
上載者:User
 

寫一個指令碼:
1、建立目錄/tmp/scripts
2、切換工作目錄至此目錄中
3、複製/etc/pam.d目錄至目前的目錄,並重命令為test
4、將目前的目錄中的test及其裡面的檔案和子目錄的屬主改為redhat
5、將test及其子目錄中的檔案的其它使用者的許可權改為沒有任何許可權

寫一個指令碼:
1、顯示當前系統日期和時間,而後建立目錄/tmp/lstest
2、切換工作目錄至/tmp/lstest
3、建立目錄a1d, b56e, 6test
4、建立空檔案xy, x2y, 732
5、列出目前的目錄下以a、x或者6開頭的檔案或目錄;
6、列出目前的目錄下以字母開頭,後跟一個任一數字,而後跟任意長度字元的檔案或目錄; 

寫一個指令碼,完成以下功能:
1、傳遞兩個整數給指令碼,讓指令碼分別計算並顯示這兩個整數的和、差、積、商

寫一個指令碼:
1、切換工作目錄至/var
2、依次向/var目錄中的每個檔案或子目錄問好,形如:
  (提示:for FILE in /var/*; 或for FILE in `ls /var`; )
   Hello, log
   Hello, run
3、統計/var目錄下共有多個檔案,並顯示出來

寫一個指令碼:
1、設定變數FILE的值為/etc/passwd
2、使用迴圈讀取檔案/etc/passwd的第2,4,6,10,13,15行,並顯示其內容;(提示:LINE=`head -2 /etc/passwd | tail -1`可以取得第2行)
3、把這些行儲存至/tmp/mypasswd檔案中

寫一個指令碼:
1、設定變數FILE的值為/etc/passwd
2、依次向/etc/passwd中的每個使用者問好,形如:  (提示:LINES=`wc -l /etc/passwd | cut -d" " -f1`)
 Hello, root.
3、統計一共有多少個使用者

寫一個指令碼:
1、設定變數FILE的值為/etc/passwd
2、依次向/etc/passwd中的每個使用者問好,並且說出對方的ID是什麼,形如:  (提示:LINES=`wc -l /etc/passwd | cut -d" " -f1`)
 Hello, root,your UID is 0.
3、統計一共有多少個使用者

寫一個指令碼:
1、添加10個使用者user1到user10,但要求只有使用者不存在的情況下才能添加;

寫一個指令碼:
1、通過ping命令測試192.168.0.151到192.168.0.254之間的所有主機是否線上,
 如果線上,就顯示"ip is up."
 如果不線上,就顯示"ip is down."

寫一個指令碼:
1、將/var/目錄下所有檔案的檔案名稱的首字母和尾字母顯示時改為大寫;

寫一個指令碼:
1、將/etc/sysctl.conf檔案中以非#(井號)開頭的行儲存至/tmp/sysctl.conf中
2、如果/tmp/sysctl.conf檔案中net.ipv4.ip_forward的值為0的話,則將其值修改為1
3、按次序逐個顯示等號之前的指令的名字,並在每一個指令名字添加其編號,形如:
  1 net.ipv4.ip_forward
  2 kernel.sysrq
4、為/tmp/sysctl.conf檔案中的每一行添加註釋,即在每一非空白行之前添加一個以#開頭的行,並儲存至檔案中。內容形如:
   # A parameter.
  
寫一個指令碼:
1、假設某檔案中有如下行:
/etc/inittab
/etc/pam.d/sudo
/usr/share/doc
/usr/local/
/etc/sysconfig/
/var/log/messages
2、取出如上檔案中每一行檔案名稱中不包含路徑的檔案名稱,比如,/etc/inittab的檔案名稱為inittab,/etc/sysconfig/的檔案名稱為sysconfig;
3、把每個檔案名稱的第二個字母顯示時改為大寫;

1、寫一個指令碼:
判斷一個檔案是否存在,如果存在就顯示其存在;

2、寫一個指令碼:
判斷一個檔案是否存在,如果存在就顯示其存在;否則就顯示其不存在;

3、寫一個指令碼:
1)讓使用者通過命令列傳遞一個路徑;
2)判斷:
 如果是普通檔案,顯示之;
 否則,如果是目錄,顯示之;
 否則,如果是連結,顯示之;
 否則,顯示無法識別

4、計算100以內所有偶數的和;

5、寫一個指令碼:
判斷使用者輸入的是否為Q或者q,如果是,就顯示”Quting...";否則,就顯示,“Are you crazy?”;

寫一個指令碼:
1、判斷一個指定的指令碼是否是語法錯誤;如果有錯誤,則提醒使用者鍵入Q或者q無視錯誤並退出,其它任何鍵可以通過vim開啟這個指定的指令碼;
2、如果使用者通過vim開啟編輯後儲存退出時仍然有錯誤,則重複第1步中的內容;否則,就正常關閉退出。

寫一個指令碼:
1、要求使用者從鍵盤輸入一個使用者名稱,判斷此使用者是否存在,如果存在,則返回此使用者的預設shell;如果不存在,提示使用者不存在。
2、判斷完成以後不要退出指令碼,而是繼續提示N|n(next)使用者輸入其它使用者名稱以做出下一個判斷,而鍵入其它任一字元可以退出;

寫一個指令碼:
1、向系統中添加20個使用者,名字為linuxer1-linuxer20,密碼分別為其使用者名稱,要使用while迴圈;
2、要求:在添加每個使用者之前事先判斷使用者是否存在,如果已經存在,則不再添加此使用者;
3、添加完成後,顯示linuxer1-linuxer20每個使用者名稱及對應的UID號碼和GID號碼,形如
   stu1, UID: 1000, GID: 1000  (此步要求使用awk實現)

寫一個指令碼:
1、掃描192.168.0網段內的主機的線上狀態,但需要提示使用者輸入一段IP位址範圍,方式是指定起始IP和結束IP;顯示結果形如:
   The host 192.168.0.1 is UP.
   The host 192.168.0.2 is DOWN.
2、使用while迴圈實現;
3、主機線上狀態的輸出結果既要顯示在螢幕上,同時要求所有主機資訊也儲存一份至/tmp/host_state;
4、為/tmp/host_state檔案中所有主機狀態為DOWN的行的行首添加一個#(井號);
5、分別顯示指定範圍內所有線上的主機總數和不線上主機總數;

寫一個指令碼:
顯示當前系統上所有其VSZ段的值大於4000的進程的進程名字、進程號和VSZ值的大小;

寫一個指令碼:
查看redhat使用者是否登入了系統,如果登入了,就通知當前指令碼執行者“redhat is logged on.”;
否則,就睡眠5秒鐘後再次進行測試;直到其登入狀態止退出;
要求:使用until迴圈

寫一個指令碼:
1、提示使用者選擇所要設定的網卡;
2、提示使用者使用dhcp或者static作為選定網卡的BOOTPROTO
  a、如果使用者選擇dhcp,則將其設定檔中的BOOTPROTO的值設為dhcp,而後重啟此網卡;
  b、如果使用者選擇static,則將其設定檔中的BOOTPROTO的值設為static,並提示使用者輸入IP地址,子網路遮罩和網關;其中網關可以為空白,但IP地址或子網路遮罩不可為空;設定完成後重啟此網卡;
3、無論上述動態或靜態設定,設定完成後將網卡IP地址設定後資訊再次顯示給使用者;

考慮:1、如果使用者沒有做出任何修改之前就不想設定了,如何退出?
      2、如果使用者已經設定了一些資訊,如IP地址等卻又不想設定了,而使用了Ctrl+c,如何處置?  
  
寫一個指令碼:
1、掃描192.168.0網段內的主機的線上狀態,但需要提示使用者輸入一段IP位址範圍,方式是指定起始IP和結束IP;顯示結果形如:
   The host 192.168.0.1 is UP.
   The host 192.168.0.2 is DOWN.
   說明:此段要求使用函數實現;
2、使用while迴圈實現;
3、主機線上狀態的輸出結果既要顯示在螢幕上,同時要求所有主機資訊也儲存一份至/tmp/host_state;
4、為/tmp/host_state檔案中所有主機狀態為DOWN的行的行首添加一個#(井號);
5、分別顯示指定範圍內所有線上的主機總數和不線上主機總數;

寫一個指令碼:
1、提示使用者輸入一個使用者名稱;
2、使用函數實現:
   判斷一個使用者是否存在,使用者名稱通過參數傳遞而來;
   如果存在,就顯示此使用者的shell和UID
   如果不存在,就說此使用者不存在;

寫一個指令碼:
1、提示使用者可以輸入”mem"查看本機實體記憶體使用資訊,"swap"顯示虛擬記憶體使用資訊;
2、當使用者輸入mem時,擷取當前主機實體記憶體的大小,已經使用的空間及空閑空間大小;如果已用空間超出總空間的90%,則以紅色字型警告;否則,則以綠色字型顯示空間剩餘百分比;
3、當使用者輸入"swap"時,擷取當前主機虛擬記憶體的大小,已經使用的空間及空閑空間的大小;如果已用空間超出總空間的90%,則以紅色字型警告;否則,則以綠色字型顯示空間剩餘百分比;
4、其它資訊則說明是錯誤輸入;

寫一個指令碼:
1、用一個函數實現擷取當前主機實體記憶體的大小,已經使用的空間及空閑空間大小;如果已用空間超出總空間的90%,則以紅色字型警告;否則,則以綠色字型顯示空間剩餘百分比;
2、用一個函數實現擷取當前主機虛擬記憶體的大小,已經使用的空間及空閑空間的大小;如果已用空間超出總空間的90%,則以紅色字型警告;否則,則以綠色字型顯示空間剩餘百分比;
3、顯示一個提示給使用者,說明輸入mem可以顯示實體記憶體空間使用方式;輸入swap可以顯示虛擬記憶體空間使用方式;其它任一字元提示使用者指令碼使用方法後退出指令碼;

寫一個指令碼:
1、定義一個函數
   1)可以接受參數mem或swap;
   2)當接受參數mem時擷取當前主機實體記憶體的大小,已經使用的空間及空閑空間大小;如果已用空間超出總空間的90%,則以紅色字型警告;否則,則以綠色字型顯示空間剩餘百分比;
   3)當接受參數swap時擷取當前主機虛擬記憶體的大小,已經使用的空間及空閑空間大小;如果已用空間超出總空間的90%,則以紅色字型警告;否則,則以綠色字型顯示空間剩餘百分比;
3、在主程式中顯示一個提示給使用者,說明輸入mem可以顯示實體記憶體空間使用方式;輸入swap可以顯示虛擬記憶體空間使用方式;其它任一字元提示使用者指令碼使用方法後退出指令碼;

寫一個指令碼
1、如果/tmp/net目錄存在就切換至此目錄,否則就先建立此目錄,而後切換進去;
2、下載ftp://192.168.0.254/pub/Files/rh033.txt至此目錄中,並將名字設定為在原名字後面添加上當前日期和時間,形如:
  rh033-2011-04-25-09-31-10.txt
3、下載完成後向使用者報告完成下載。

寫一個指令碼:
1、建立一個函數,能接受兩個參數:
1)第一個參數為URL,即可下載的檔案;第二個參數為目錄,即下載後儲存的位置;
2)如果使用者給的目錄不存在,則提示使用者是否建立;如果建立就繼續執行,否則,函數返回一個51的錯誤值給呼叫指令碼;
3)如果給的目錄存在,則下載檔案;下載命令執行結束後測試檔案下載成功與否;如果成功,則返回0給呼叫指令碼,否則,返回52給呼叫指令碼;
2、主函數:
1)提示使用者輸入要下載檔案的URL和儲存的目錄;
2)調用函數執行下載;如果函數返回0,則告訴使用者下載成功;如果函數返回51,則告訴使用者使用者給定的目錄不存在導致下載失敗;如果函數返回52,則告訴使用者下載過程失敗;

 

百度的兩道shell編程面試題:
1、寫指令碼實現,可以用shell、perl等。在目錄/tmp下找到100個以abc開頭的檔案,然後把這些檔案的第一行儲存到檔案new中。
2、寫指令碼實現,可以用shell、perl等。把檔案b中有的,但是檔案a中沒有的所有行,儲存為檔案c,並統計c的行數。

某公司Shell指令碼面試題

一個文字檔內容如下:
user1  abcd
user2  g23d
user3  vgq2
……    ……

根據檔案內容大量建立使用者,第一列為使用者名稱,第二列為對應使用者的密碼;

 

寫一個指令碼:
1、下載檔案ftp://192.168.0.254/pub/Files/access_log至/tmp目錄;
2、分析並顯示/tmp/access_log檔案中位於行首的IP中出現次數最多的前5個,並說明每一個出現了多少次;
3、取出/tmp/access_log檔案中以http://開頭,後面緊跟著一個網域名稱或IP地址的字串,比如:http://www.linux.com/install/images/style.css 這個串的http://www.linux.com的部分;而後顯示出現次數最多的前5個;
要求:第2、3功能各以函數的方式實現;

營運工程師面試題:
編寫shell指令碼擷取原生網路地址。比如:原生ip地址是:192.168.100.2/255.255.255.0,那麼它的網路地址是192.168.100.1/255.255.255.0。

卡巴斯基面試題:
某檔案內容如下:
 jack  huaxue   90
 tom  huaxue    70
 jack  shuxue    99
 tom  shuxue    80

要求算出jack和tom的2科的平均分,用shell實現

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.