天天看點

30道shell程式設計題目

題目出自:http://oldboy.blog.51cto.com/2561410/1632876

提供自己做的答案,僅供學習測試用。

企業面試題1:(生産實戰案例):監控MySQL主從同步是否異常,如果異常,則發送短信或者郵件給管理者。提示:如果沒主從同步環境,可以用下面文本放到檔案裡讀取來模拟:

階段1:開發一個守護程序腳本每30秒實作檢測一次。

階段2:如果同步出現如下錯誤号(1158,1159,1008,1007,1062),則跳過錯誤。

階段3:請使用數組技術實作上述腳本(擷取主從判斷及錯誤号部分)

[[email protected]~]# mysql -uroot -p'oldboy' -S /data/3307/mysql.sock -e "show slavestatus\G;"
*************************** 1. row ***************************
               Slave_IO_State:Waiting for master to send event
                  Master_Host:10.0.0.179   #目前的mysql master伺服器主機
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File:mysql-bin.000013
         Read_Master_Log_Pos: 502547
               Relay_Log_File:relay-bin.000013
                Relay_Log_Pos:251
        Relay_Master_Log_File:mysql-bin.000013
             Slave_IO_Running:Yes
           Slave_SQL_Running: Yes
              Replicate_Do_DB: 
         Replicate_Ignore_DB: mysql
          Replicate_Do_Table: 
      Replicate_Ignore_Table: 
     Replicate_Wild_Do_Table: 
 Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
         Exec_Master_Log_Pos: 502547
              Relay_Log_Space:502986
              Until_Condition:None
               Until_Log_File: 
                Until_Log_Pos: 0
          Master_SSL_Allowed: No
          Master_SSL_CA_File: 
          Master_SSL_CA_Path: 
              Master_SSL_Cert: 
           Master_SSL_Cipher: 
               Master_SSL_Key: 
       Seconds_Behind_Master: 0   #和主庫比同步延遲的秒數,這個參數很重要
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0

               Last_SQL_Error:

[[email protected] ~]# vim check_slave.sh
#!/bin/bash
#authuser : liuwenzhi
#date :2016-09-25
#destination : this is a check mysql slave heath !
slave_status=(`mysql -uroot -p123456 -e 'show slave status\G'|grep Running |awk '{print $2}'`)
if [ "${slave_status[0]}" = "Yes" -a "${slave_status[1]}" = "Yes" ] ;then            
    echo "mysql_slave Running!"            
    exit 0
fi      

企業面試題2:

使用for循環在/oldboy目錄下通過随機小寫10個字母加強定字元串oldboy批量建立10個html檔案,名稱例如為:

[[email protected] oldboy]# sh /server/scripts/oldboy.sh [[email protected] oldboy]# ls  coaolvajcq_oldboy.html  qnvuxvicni_oldboy.html  vioesjmcbu_oldboy.html gmkhrancxh_oldboy.html  tmdjormaxr_oldboy.html  wzewnojiwe_oldboy.html jdxexendbe_oldboy.html  ugaywanjlm_oldboy.html  xzzruhdzda_oldboy.html qcawgsrtkp_oldboy.html  vfrphtqjpc_oldboy.html

[[email protected] ~]# cat oldboy.sh 
#!/bin/bash
#author : by  liuwenzhi
#date : 2016-09-25
#destination : test script num=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
for j in `seq 1 10`
do    
     for i in `seq 1 10`    
     do        
         suiji+=${num[$RANDOM%26]}    
     done
touch ${suiji}_oldboy.htmlsuiji=''
done      

企業面試題3:請用至少兩種方法實作!

将以上檔案名中的oldboy全部改成oldgirl(用for循環實作),并且html改成大寫。

企業面試題4:

批量建立10個系統帳号oldboy01-oldboy10并設定密碼(密碼為随機8位字元串)。

企業面試題5:

寫一個腳本,實作判斷10.0.0.0/24網絡裡,目前線上使用者的IP有哪些(方法有很多)

企業實戰題6:請用至少兩種方法實作!

寫一個腳本解決DOS***生産案例

提示:根據web日志或者或者網絡連接配接數,監控當某個IP并發連接配接數或者短時内PV達到100,即調用防火牆指令封掉對應的IP,監控頻率每隔3分鐘。防火牆指令為:iptables -I INPUT -s 10.0.1.10 -j DROP。

企業實戰題7:

開發mysql多執行個體啟動腳本:

已知mysql多執行個體啟動指令為:mysqld_safe--defaults-file=/data/3306/my.cnf &

停止指令為:mysqladmin -u root -poldboy123 -S /data/3306/mysql.sockshutdown

請完成mysql多執行個體啟動啟動腳本的編寫

要求:用函數,case語句、if語句等實作。

企業實戰題8:如何實作對MySQL資料庫進行分庫備份,請用腳本實作

企業實戰題9:如何實作對MySQL資料庫進行分庫加分表備份,請用腳本實作

企業面試題10:請用至少兩種方法實作!

bash for循環列印下面這句話中字母數不大于6的單詞(昆侖萬維面試題)。

I am oldboy teacher welcome to oldboy training class.

企業面試題11:開發shell腳本分别實作以腳本傳參以及read讀入的方式比較2個整數大小。以螢幕輸出的方式提醒使用者比較結果。注意:一共是開發2個腳本。當用腳本傳參以及read讀入的方式需要對變量是否為數字、并且傳參個數做判斷。 

企業面試題12:列印選擇菜單,一鍵安裝Web服務:

[[email protected]]# sh menu.sh

    1.[install lamp]

    2.[install lnmp]

    3.[exit]

    pls input the num you want:

要求:

1、當使用者輸入1時,輸出“startinstalling lamp.”然後執行/server/scripts/lamp.sh,腳本内容輸出"lampis installed"後退出腳本;

2、當使用者輸入2時,輸出“startinstalling lnmp.”然後執行/server/scripts/lnmp.sh輸出"lnmpis installed"後退出腳本;

3、當輸入3時,退出目前菜單及腳本;

4、當輸入任何其它字元,給出提示“Input error”後退出腳本。

5、要對執行的腳本進行相關條件判斷,例如:腳本是否存在,是否可執行等。 

企業面試題13:

1、監控web服務是否正常,不低于3種監控政策。

2、監控db服務是否正常,不低于3種監控政策。

要求間隔1分鐘,持續監控。

企業面試題14:監控memcache服務是否正常,模拟使用者(web用戶端)檢測。

使用nc指令加上set/get來模拟檢測,以及監控響應時間及命中率。

企業面試題15:面試及實戰考試題:監控web站點目錄(/var/html/www)下所有檔案是否被惡意篡改(檔案内容被改了),如果有就列印改動的檔案名(發郵件),定時任務每3分鐘執行一次(10分鐘時間完成)。

企業面試題16:企業案例:寫網絡服務獨立程序模式下rsync的系統啟動腳本

例如:/etc/init.d/rsyncd{start|stop|restart} 。

要求:

1.要使用系統函數庫技巧。

2.要用函數,不能一坨SHI的方式。

3.可被chkconfig管理。

企業面試題17:老男孩教育天津項目學生實踐抓阄題目:

好消息,老男孩教育訓練學生外出企業項目實踐機會(第6次)來了(本月中旬),但是,名額有限,隊員限3人(班長帶隊)。

是以需要挑選學生,是以需要一個抓阄的程式:

要求:

1、執行腳本後,想去的同學輸入英文名字全拼,産生随機數01-99之間的數字,數字越大就去參加項目實踐,前面已經抓到的數字,下次不能在出現相同數字。

2、第一個輸入名字後,螢幕輸出資訊,并将名字和數字記錄到檔案裡,程式不能退出繼續等待别的學生輸入。

企業面試題18:老男孩linux企業面試題:

已知下面的字元串是通過RANDOM随機數變量md5sum|cut-c 1-8截取後的結果,請破解這些字元串對應的md5sum前的RANDOM對應數字?

21029299

00205d1c

a3da1677

1f6d12dd

890684b

企業面試題19:批量檢查多個網站位址是否正常 

要求:shell數組方法實作,檢測政策盡量模拟使用者通路思路

http://www.etiantian.org

http://www.taobao.com

http://oldboy.blog.51cto.com

http://10.0.0.7 

企業面試題20(中企動力)::用shell處理以下内容

1、按單詞出現頻率降序排序!

2、按字母出現頻率降序排序!

the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation

企業面試題21:輸出正方形、等腰三角形、直角梯形,見如下内容

http://oldboy.blog.51cto.com/2561410/1718607

企業面試題22:開發通過web界面展示監控Nginx代理節點狀态,效果圖如下。

30道shell程式設計題目

lvs+keepalived叢集部分Shell企業案例:

企業面試題23、【LVS主節點】手工開發ipvsadm管理lvs的腳本ip_vs

   實作:/etc/init.d/lvs {start|stop|restart}

企業面試題24、【LVS主節點】模拟keepalived健康檢查功能管理LVS節點,

當節點挂掉(檢測2次,間隔2秒)從伺服器池中剔除,好了(檢測2次,間隔2秒)加進來

提示:利用ipvsadm指令實作添加和減少LVS節點。

企業面試題25、【LVS用戶端節點】開發LVS用戶端設定VIP以及抑制ARP的管理腳本

    實作:/etc/init.d/lvsclient {start|stop|restart}

企業面試題26、【LVS備節點】模拟keepalved vrrp功能,監聽主節點,如果主節點不可通路則備節點啟動并配置LVS實作接管主節點的資源提供服務(提醒:注意ARP緩存) 

企業面試題27、請用shell或Python編寫一個正方形(oldboy_square.sh),接收使用者輸入的數字。

例如:

[[email protected] ~]# sh oldboy_square1.sh  Please Enter a number:5 ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ [[email protected] ~]# sh oldboy_square2.sh   Please Enter a number:9 ■■■■■■■■■ ■■■■■■■■■ ■■■■■■■■■ ■■■■■■■■■ ■■■■■■■■■ ■■■■■■■■■ ■■■■■■■■■ ■■■■■■■■■ ■■■■■■■■■

企業面試題28、請用shell或Python編寫一個等腰三角形(oldboy2_triangle.sh),接收使用者輸入的數字。

例如:

[[email protected] ~]# sh oldboy2_triangle.sh  Please Enter a number:5     *    ***   *****  ******* ********* [[email protected] ~]# sh oldboy2_triangle.sh  Please Enter a number:8        *       ***      *****     *******    *********   ***********  ************* ***************

企業面試題29、請用shell或Python編寫一個畫直角梯形程式(oldboy4.sh),接收使用者輸入的參數n,m

例如:

[[email protected] ~]# sh oldboy4.sh 4 6 **** ***** ******

27,28,29三道題參考http://oldboy.blog.51cto.com/2561410/1718607

企業面試題30:寫一套簡單的企業代碼上線釋出系統案例,利用SVN對代碼及配置檔案進行管理,在辦公室伺服器上從svn取出指定版本的代碼和配置,釋出到IDC機房分發機伺服器上,在分發伺服器或者負載均衡器上或者應用伺服器本地實作代碼平滑釋出、上線、復原腳本(具體設計請參考課堂講解的企業代碼釋出方案)。

企業面試題31:請設計一套Git+Saltstack實作代碼的線上釋出及管理方案。

(可參考跟老男孩學習Linux運維:Shell進階程式設計實戰一書内容)

轉載的網友,請務必保留本文章的全部内容,謝謝。

轉載于:https://blog.51cto.com/zxlwz/1856283

繼續閱讀