企業Shell面試題及企業運維實戰共30道案例
1.1 批量生成隨機字符文件名案例
使用for循環在/oldboy目錄下批量創建10個html文件,其中每個文件需要包含10個隨機小寫字母加固定字符串oldboy,名稱示例如下:
[root@oldgirl C19]# ls /oldboy
apquvdpqbk_oldboy.html mpyogpsmwj_oldboy.html txynzwofgg_oldboy.html
bmqiwhfpgv_oldboy.html mtrzobsprf_oldboy.html vjxmlflawa_oldboy.html
jhjdcjnjxc_oldboy.html qeztkkmewn_oldboy.html
jpvirsnjld_oldboy.html ruscyxwxai_oldboy.html
解答:
方法1:
#!/bin/bash DIR=/oldboy . /etc/init.d/functions [ ! -d $DIR ] || mkdir /oldboy -p cd $DIR &>/dev/null || { echo "cd $DIR fail" exit 2 } cd $DIR && { for i in {1..10} do touch $(echo $RANDOM|md5sum|tr [0-9] [a-z]|cut -c 1-10)_oldboy.html action 'file create success' /bin/true exit 0 done } echo "file create fail"
方法2 :
#!/bin/bash dir=/oldboy [ -d $dir ] || mkdir -p $dir cd $dir && \ for i in {1..10} do shu=$(uuidgen|tr '0-9-' 'a-z'|cut –c 1-10) touch ${shu}_oldboy.html done
1.2 批量改名特殊案例
將以上面試題19.1.1中結果文件名中的oldboy字符串全部改成oldgirl(最好用for循環實現),並且將擴展名html全部改成大寫。
解答:
#!/bin/bash dir=/oldboy cd $dir && \ for i in $(ls $dir) do shu=$(echo $i |cut -c 1-10) mv ${shu}_oldboy.html ${shu}_oldgirl.HTML done
1.3 批量創建特殊要求用戶案例
批量創建10個系統帳號oldboy01-oldboy10並設置密碼(密碼為隨機數,要求字符和數字等混合)。
不用for循環的實現思路:http://user.qzone.qq.com/49000448/blog/1422183723
解答:
#!/bin/bash . /etc/init.d/functions file=/tmp/user_pass.txt for i in oldboy{01..10} do useradd $i &>/dev/null if [ $? -eq 0 ];then action "$i 創建成功" /bin/true mima=$(echo $RANDOM|md5sum|cut -c 1-10) echo $mima|passwd --stdin $i &>/dev/null if [ $? -eq 0 ];then action "$i 設置密碼成功" /bin/true echo else action "$i 設置密碼失敗" /bin/false echo exit 2 fi echo ${i}:$mima >>/tmp/user_pass.txt else action "$i 已經存在" /bin/false fi done
1.4 掃描網絡內存活主機案例
寫一個Shell腳本,判斷10.0.0.0/24網絡里,當前在線的IP有哪些?
解答:
nmap -sT 10.0.0.0/24 掃描網絡
#!/bin/sh # [ -f /etc/init.d/functions ] && . /etc/init.d/functions function IP_count(){ for n in 10.0.0.{0..255} do IP_check=`nmap -sP $n|grep "Host is up"|wc -l` if [ ${IP_check} -eq 1 ];then action "$n" /bin/true let i+=1 fi done } function main(){ IP_count echo "The total number of online IP Addresses is " $i } main
#!/bin/bash source /etc/init.d/functions for i in 10.0.0.{1..254} do { ping -c 1 -W 1 $i &>/dev/null if [ $? -eq 0 ] then action "$i" /bin/true fi sleep 10 } & #並發執行 ping命令,同時開啟254個進程 done
1.5 解決DOS攻擊生產案例
寫一個Shell腳本解決DOS攻擊生產案例。
請根據web日志或者或者網絡連接數,監控當某個IP並發連接數或者短時內PV達到100(讀者根據實際情況設定),即調用防火牆命令封掉對應的IP。防火牆命令為:iptables-I INPUT -s IP地址 -j DROP。
解答:
#!/bin/bash web_log=/application/access.log awk '{i[$1]++}END{for (IP in i) print IP,i[IP]}' $web_log|awk '$2>1000 {print $1,$2}'|column -t|sort -rnk2 >/tmp/web_log.txt IP=$(awk '{i[$1]++}END{for (IP in i) print IP,i[IP]}' $web_log |awk '$2>1000{print $1}') echo "超過並發連接數IP" cat /tmp/web_log.txt for i in $IP do iptables -I INPUT -s $i -j DROP done
1.6 MySQL數據庫分庫備份
請實現對MySQL數據庫進行分庫備份,用腳本實現。
解答:
1.7 MySQL數據庫分庫分表備份
如何實現對MySQL數據庫進行分庫加分表備份,請用腳本實現。
解答:
1.8 篩選符合長度的單詞案例
利用bash for循環打印下面這句話中字母數不大於6的單詞(某企業面試真題)。
I am oldboy teacher welcome to oldboy trainingclass
解答:
#!/bin/bash for i in I am oldboy teacher welcome to oldboy training class do if [ "${#i}" -le 6 ];then echo $i fi done
1.9 MySQL主從復制異常監控案例
開發一個守護進程腳本每30秒監控MySQL主從復制是否異常(包括不同步以及延遲),如果異常,則發送短信並發送郵件給管理員存檔。提示:如果沒主從復制的環境,可以把下面文本放到文件里讀取來模擬主從復制狀態:
解答:
1.10 比較整數大小經典案例
綜合實戰案例:開發shell腳本分別實現以腳本傳參以及read讀入的方式比較2個整數大小。用條件表達式(禁止if)進行判斷並以屏幕輸出的方式提醒用戶比較結果。
注意:一共是開發2個腳本。當用腳本傳參以及read讀入的方式需要對變量是否為數字、並且傳參個數不對給予提示。
解答:
1. 腳本傳參
#!/bin/bash [ $# -ne 2 ] && echo "USAGE: sh $0 int1 int2" && exit 2 n1=$1 n2=$2 expr $n1 + 1 &>/dev/null [ $? -eq 2 ] && echo "the first is not int" && exit 3 expr $n2 + 1 &>/dev/null [ $? -eq 2 ] && echo "the second is not int" && exit 3 [ "$n1" -gt "$n2" ] && echo "$n1 > $n2" && exit [ "$n1" -eq "$n2" ] && echo "$n1 = $n2" && exit echo "$n1 < $n2"
2. red讀入
#!/bin/bash read -p "the first num:" n1 read -p "the second num:" n2 [ -z "$n1" -o -z "$n2" ] && echo "請輸入數據" && exit 2 expr $n1 + 1 &>/dev/null [ $? -eq 2 ] && echo "the first is not int" && exit 3 expr $n2 + 1 &>/dev/null [ $? -eq 2 ] && echo "the second is not int" && exit 3 [ "$n1" -gt "$n2" ] && echo "$n1 > $n2" && exit [ "$n1" -eq "$n2" ] && echo "$n1 = $n2" && exit echo "$n1 < $n2"
1.11 菜單自動化軟件部署經典案例
綜合實例:打印選擇菜單,按照選擇一鍵安裝不同的Web服務。
示例菜單:
[root@oldboy scripts]# shmenu.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"后退出腳本,工作中就是正式lamp一鍵安裝腳本;
2、當用戶輸入2時,輸出“startinstalling lnmp.提示” 然后執行/server/scripts/lnmp.sh輸出"lnmpis installed"后退出腳本,工作中就是正式lnmp一鍵安裝腳本;
3、當輸入3時,退出當前菜單及腳本;
4、當輸入任何其它字符,給出提示“Input error”后退出腳本;
5、要對執行的腳本進行相關的條件判斷,例如:腳本文件是否存在,是否可執行等判斷,盡量用上前面講解的知識點。
解答:
#!/bin/bash cat <<EOF ================== echo 1.[install lamp] 2.[install lnmp] 3.[exit] ================== EOF read -p "pls input the num you want:" install case $install in 1) echo "start install lamp" if [ -x /server/scripts/lamp.sh ];then /server/scripts/lamp.sh else echo "/server/scripts/lamp.sh 沒有執行權限" fi ;; 2) echo "start install lnmp" if [ -x /server/scripts/lnmp.sh ];then /server/scripts/lnmp.sh else echo "/server/scripts/lamp.sh 沒有執行權限" fi ;; 3) exit ;; *) echo "請選擇[1-3]" esac
1.12 Web及MySQL服務異常監測案例
用if條件語句實現對Nginx Web服務以及MySQL數據庫服務是否正常進行檢測,如果服務未啟動,則啟動相應服務。
解答:
1. nginx異常檢測
#!/bin/bash . /etc/init.d/functions nginx_server=$(netstat -lntup|grep -wc nginx) if [ $nginx_server -eq 0 ];then echo "nginx 沒有運行,啟動nginx" /application/nginx/sbin/nginx if [ $? -eq 0 ];then action 'nginx start' /bin/true else action 'nginx start' /bin/falese fi else echo "nginx 已經運行" fi ##狀態碼 http=$(curl -I 10.0.0.5 -s -w %{http_code} -o /dev/null) if [ "$http" -eq 200 ];then echo -e "狀態碼:$http\nnginx 訪問正常" else echo -e "狀態碼:$http\nnginx 訪問失敗" fi
2. mysql異常檢測
#!/bin/bash . /etc/init.d/functions mysqld=$(netstat -lntup|grep -c mysqld) function db_Start (){ /etc/init.d/mysqld start &>/dev/null if [ $mysqld -eq 0 ];then action "Starting MySQL. SUCCESS!" /bin/true else action Starting MySQL. fail! fi } if [ $mysqld -eq 0 ];then echo "MySQL not running Starting MySQL" db_Start else echo "MySQL running!" fi
1.13 監控Memcached緩存服務是否正常
監控Memcached緩存服務是否正常,模擬用戶(web客戶端)檢測。
使用nc命令加上set/get來模擬檢測。
解答:
#!/bin/bash . /etc/init.d/functions cache_server=$(netstat -lntup|grep -wc memcached) #判斷是否運行 if [ "$cache_server" -eq 0 ];then echo "mecached 沒有運行,啟動memcached" systemctl start memcached.service if [ $? -eq 0 ];then action 'memcached start' /bin/true fi else echo "memcached 運行正常" fi #測試讀寫 set_zhi=$(uuidgen|cut -c -8) set=${#set_zhi} printf "set key008 0 0 $set\r\n${set_zhi}\r\n"|nc 127.0.0.1 11211 &>/dev/null if [ $? -eq 0 ];then get=$(printf "get key008\r\n"|nc 127.0.0.1 11211|awk 'NR==2'|tr -d '\r') else echo "set 賦值失敗" exit 2 fi if [ "$set_zhi" == "$get" ];then echo "memcached 讀寫正常" else echo "memcached 讀寫失敗" fi
1.14 開發腳本入侵檢測與報警案例
面試及實戰考試題:監控web站點目錄(/var/html/www)下所有文件是否被惡意篡改(文件內容被改了),如果有就打印改動的文件名(發郵件),定時任務每3分鍾執行一次。
解答:
#!/bin/bash html_dir=/var/www/html file_data=/tmp/html_file.txt md5_data=/tmp/html_md5zhi.txt . /etc/init.d/functions status=$1 case $status in 1) find $html_dir -type f >$file_data [ $? -eq 0 ] && action '文件庫生成:$file_data' /bin/true find $html_dir -type f|xargs md5sum >$md5_data [ $? -eq 0 ] && action 'md5值生成:$md5_data' /bin/true ;; 2) while true do md5_zhi=$(md5sum -c $md5_data 2>/dev/null |grep "失敗") if [ -n "$md5_zhi" ];then echo "文件內容被修改或刪除的文件:$md5_zhi $(date +%F_%H:%M)" #echo "文件內容被修改或刪除的文件:$md5_zhi $(date +%F_%H:%M)" |mail -s "${html_dir}惡意篡改" 243541755@qq.com sleep 30 fi hthl_file=$(find $html_dir -type f >/tmp/html_file-yanzheng.txt) file_yanzheng=$(diff /tmp/html_file*) if [ -n "$file_yanzheng" ];then echo "文件被改動: $file_yanzheng $(date +%F_%H:%M)" sleep 30 fi done ;; *) echo -e "$0:{1|2}\n1:刷新文件庫和md5值\n2:實時監控站點目錄$html_dir" esac
1.15 開發Rsync服務啟動腳本案例
寫網絡服務獨立進程模式下Rsync的系統啟動腳本,例如:/etc/init.d/rsyncd {start|stop|restart}。
要求:
1.要使用系統函數庫技巧。
2.要用函數,不能一坨SHI的方式。
3.可被chkconfig管理。
解答:
#!/bin/bash source /etc/init.d/functions rsync=$(netstat -lntup|grep -wc rsync) [ ! -f /etc/rsyncd.conf ] && echo "rsync /etc/rsyncd.conf not" && exit 2 status=$1 case $status in start) if [ $rsync -ne 0 ];then echo "rsync 正在運行" else rsync --daemon action 'rsync start' /bin/true fi ;; stop) pkill rsync if [ $? -eq 0 ];then action 'rsync stop' /bin/true else echo "停止失敗,rsync沒有運行" fi ;; restart) if [ $rsync -ne 0 ];then pkill rsync if [ $? -eq 0 ];then sleep 1 rsync --daemon action 'rsync restart' /bin/true else action 'rsync stop' /bin/false fi else echo "重啟失敗,rsync沒有運行" fi ;; *) echo "$0:{start|stop|restart}" esac
1.16 開發MySQL多實例啟動腳本
開發MySQL多實例啟動腳本:
已知MySQL多實例啟動命令為:mysqld_safe --defaults-file=/data/3306/my.cnf &
停止命令為:mysqladmin -u root -poldboy123 –S /data/3306/mysql.sock shutdown
請完成mysql多實例啟動啟動腳本的編寫
要求:用函數,case語句、if語句等實現。
解答:
1.17 天津項目學生實踐抓鬮案例
好消息,培訓學生外出企業項目實踐機會(第6次)來了(本月中旬),但是,名額有限,隊員限3人(班長帶隊)。
因此需要挑選學生,因此需要一個抓鬮的程序:
要求:
1、執行腳本后,想去的同學輸入英文名字全拼,產生隨機數01-99之間的數字,數字越大就去參加項目實踐,前面已經抓到的數字,下次不能在出現相同數字。
2、第一個輸入名字后,屏幕輸出信息,並將名字和數字記錄到文件里,程序不能退出繼續等待別的學生輸入。
解答:
echo $(($RANDOM%99+1)) 生成1-99隨機數
#!/bin/bash log_file=/tmp/zhajiu.txt [ -f $log_file ] && rm -f "$log_file" || touch "$log_file" [ -f $log_file ] && > $log_file || touch $log_file function wait() { echo -en '\033[33m隨機抽取中,請稍等.\033[0m'; for ((i=0;i<3;i++)) do echo -n ".";sleep 1 done } function name() { while true do read -p "請輸入學生姓名:" name if [ "$name" == "exit" ];then echo -en '\033[33m正在退出程序,拜拜.\033[0m'; for ((i=0;i<3;i++)) do echo -n ".";sleep 1 done echo exit fi name_test=$(egrep -wc $name $log_file) if [ $name_test -eq 0 ];then name_panduan=1 break else echo "已經參加,請重新輸入" continue fi done } function shuzi() { while true do name if [ $name_panduan -eq 1 ];then shu=$(echo $(($RANDOM%99+1))) shuzi_test=$(egrep -wc $shu $log_file) if [ $shuzi_test -eq 0 ] ;then echo "$name:$shu" >> $log_file wait echo " " echo echo -e "\033[34m抓鬮結果\033[0m" echo "$name:$shu" echo echo -e "\033[34m獲獎名單\033[0m" echo -e "\033[34m------------------------\033[0m" awk -F ":" "{print $2}" /tmp/zhajiu.txt|column -t|sort -rnk 2 -t:|head -3 echo -e "\033[34m------------------------\033[0m" echo echo fi fi done } echo echo echo -e "\033[33m --------------- 好消息,好消息------------------ 學生外出企業項目實踐機會(第6次)來了(本月中旬) 名額有限,隊員限3人(班長帶隊)。 --------------- 同學們來抓鬮吧------------------\033[0m" echo echo echo -e " \033[31m退出程序請輸入:exit\033[0m" echo shuzi
1.18 破解RANDOM隨機數案例
已知下面的字符串是通過RANDOM隨機數變量md5sum后,再截取一部分連續字符串的結果,請破解這些字符串對應的使用md5sum處理前的RANDOM對應的數字?
21029299
00205d1c
a3da1677
1f6d12dd
890684b
解答:
生成字典包
for i in {0..32767} do echo "${i}:$(echo $i|md5sum)" >>/tmp/zidian.txt done
跑字典
[root@backup oldboy]# egrep "21029299|00205d1c|a3da1677|1f6d12dd|890684b" /tmp/zidian.txt 1346:00205d1cbbeb97738ad5bbdde2a6793d - 7041:1f6d12dd61b5c7523f038a7b966413d9 - 10082:890684ba3685395c782547daf296935f - 25345:a3da1677501d9e4700ed867c5f33538a - 25667:2102929901ee1aa769d0f479d7d78b05 -
1.19 批量檢查多個網站地址是否正常
企業面試題:批量檢查多個網站地址是否正常
要求:
1、使用shell數組方法實現,檢測策略盡量模擬用戶訪問。
2、每10秒鍾做一次所有的檢測,無法訪問的輸出報警。
3、待檢測的地址如下
http://blog.oldboyedu.com
http://blog.etiantian.org
http://oldboy.blog.51cto.com
http://10.0.0.7
解答:
curl -I http://oldboy.blog.51cto.com -s -w %{http_code} -o /dev/null -L
-L 跟隨跳轉
#!/bin/bash . /etc/init.d/functions #定義url數組 checa_count=0 url_list=( http://blog.oldboyedu.com http://blog.etiantian.org http://oldboy.blog.51cto.com http://10.0.0.7 ) function wait() { echo -n '3秒后,執行檢查URL操作.'; for ((i=0;i<3;i++)) do echo -n ".";sleep 1 done } function checa_url() { wait echo for ((i=0;i<"$(echo ${#url_list[*]})";i++)) do status_code=$(curl -I ${url_list[$i]} -s -w %{http_code} -o /dev/null -L) if [ $status_code -eq 200 ];then action "${url_list[$i]}" /bin/true else action "${url_list[$i]}" /bin/false fi done ((checa_count++)) } function main() { while true do checa_url echo "-----Checa Count:${checa_count}-----" sleep 10 done } main
1.20 單詞及字母去重排序案例
用shell處理以下內容
1、按單詞出現頻率降序排序!
2、按字母出現頻率降序排序!
the squid project provides a number ofresources to assist users design,implement and support squid installations.Please browse the documentation and support sections for more infomation,byoldboy training.
課堂實戰考察某企業shell面試考試題
http://oldboy.blog.51cto.com/2561410/1686891
解答:
[root@backup scripts]# cat /tmp/zimu.txt
the squid project provides a number ofresources to assist users design,implement and support squid installations.Please browse the documentation and support sections for more infomation,byoldboy training.
1.21 開發腳本管理服務端LVS案例
請在LVS負載均衡主節點上,開發管理LVS服務的腳本ip_vs。
實現:利用ipvsadm可以啟動並配置好LVS服務,腳本形式:/etc/init.d/lvs{start|stop|restart}
解答:
1.22 LVS節點健康檢查及管理腳本案例
請在LVS負載均衡主節點上,模擬keepalived健康檢查功能管理LVS節點,
當節點掛掉從服務器池中剔除,好了再加到服務器池中來。
解答:
1.23 LVS客戶端配置腳本案例
請在LVS客戶端節點上,開發LVS客戶端設置VIP以及抑制ARP的管理腳本
實現:/etc/init.d/lvsclient{start|stop|restart}
解答:
1.24 模擬keepalved軟件高可用案例
請在LVS服務端備用節點上,模擬keepalved vrrp功能,監聽主節點,如果主節點不可訪問則備節點啟動並配置LVS實現接管主節點的資源提供服務(提醒:注意ARP緩存),提示此題要借助19.1.21的功能。
解答:
1.25 編寫正(或長)方形圖形案例
請用shell或Python編寫一個正(或長)方形,接收用戶輸入的數字。
解答:
#!/bin/bash function integer() { expr 1 + $1 &>/dev/null if [ $? -eq 2 ];then echo "usage $0:請輸入整數" exit fi } read -p "please enter a number:" num integer $num for ((i=1;i<=$num;i++)) do for ((m=1;m<=$num;m++)) do echo -n "■ " done echo done
1.26 編寫等腰三角形圖形字符案例
請用shell或Python編寫一個等腰三角形,接收用戶輸入的數字。
解答:
#!/bin/bash function integer() { expr 1 + $1 &>/dev/null if [ $? -eq 2 ];then echo "usage $0:請輸入整數" exit fi } read -p "please enter a number:" num integer $num for ((i=1;i<=num;i++)) do for ((m=$num-$i;m>0;m--)) do echo -n " " done for ((h=1;h<=$((2*$i-1));h++)) do echo -n '*' done echo done
1.27 編寫直角梯形圖形字符案例
請用shell或Python編寫一個畫直角梯形程序,接收用戶輸入的參數n(n>2),m。
解答
#!/bin/bash if [ $# -ne 2 ];then echo "USAGE:$0 num1(>2) num2" exit fi for n in `seq $1 $2` do for ((m=1;m<=$n;m++)) do echo -n "*" done echo done
1.28 51CTO博文爬蟲案例
獲取51CTO博客列表倒序排序考試題
老男孩教育培訓機構需求:需求入下:
請把http://oldboy.blog.51cto.com地址中的所有博文,按照時間倒序列表如下:
2013-09-13運維就是一場沒有硝煙的戰爭
http://oldboy.blog.51cto.com/2561410/1296694
2016-04-17運維人員寫項目方案及推進項目的基本流程思路
http://oldboy.blog.51cto.com/2561410/1764820
附加:高級要求:
生成html頁面,並設置超鏈接。
結果如下:
http://oldboy.blog.51cto.com/2561410/1862041
解答:
grep 取
#!/bin/bash url="http://blog.51cto.com/oldboy/p" html=/tmp/blog.html [ -f $html ] && rm -f $html for i in {1..29} do curl -s ${url}$i |grep -A 1 "\"tit\"" |sed -r 's#<span.*span>#<br>#' >>$html done
awk 取
#!/bin/bash LANG="zh_CN.UTF-8" url="http://blog.51cto.com/oldboy/p" html=/tmp/blog.html [ -f /tmp/time.txt ] && rm -f /tmp/time.txt [ -f /tmp/url.txt ] && rm -f /tmp/url.txt [ -f /tmp/name.txt ] && rm -f /tmp/name.txt [ -f /tmp/blog.html ] && rm -f /tmp/blog.txt for i in 1 do curl -s ${url}$i|awk -F ":|<" '/<a href="javascript:;" class="time fl/ {print $3}' >>/tmp/time.txt curl -s ${url}$i|awk -F "\"" '/<a class="tit" href="/{print $4}' >>/tmp/url.txt curl -s ${url}$i|awk '/ <\/a>/{print $1}'|grep -v "</a>" >>/tmp/name.txt paste -d ' ' /tmp/time.txt /tmp/url.txt /tmp/name.txt >>/tmp/blog.html done
paste –d
paste命令用於將文本文件或標准輸出中的內容粘貼到新的文件,它可以將來自於不同文件的數據粘貼到一起,形成新的文件
1.29 Nginx負載節點狀態監測案例
開發通過Web界面展示監控Nginx代理節點狀態,效果圖如下,當節點宕機時,以紅色展示,當節點正常時以綠色展示。
解答:
#!/bin/bash html_file=/application/nginx/html/index.html port=80 web_IP=( 172.16.1.9 172.16.1.18 ) function web_check() { for ((i=0;i<"$(echo ${#web_IP[*]})";i++)) do web_Status[$i]=$(nmap ${web_IP[$i]} -p $port|grep -c open) done } function html_tihuan() { if [ "${web_Status[0]}" -eq 0 ];then #echo ${web_IP[0]} Down! sed '27s#green#red#;27s#OK!#Down!#' -i $html_file else #echo ${web_IP[0]} OK! sed '27s#red#green#;27s#Down!#OK!#' -i $html_file fi if [ "${web_Status[1]}" -eq 0 ];then #echo ${web_IP[1]} Down! sed '33s#green#red#;33s#OK!#Down!#' -i $html_file else #echo ${web_IP[1]} OK! sed '33s#red#green#;33s#Down!#OK!#' -i $html_file fi } function main() { while true do web_check html_tihuan done } main
html文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <meta http-equiv="refresh" content="1"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> h4{text-align: center;} </style> </head> <body> <h4> - </h4> <h4> 老男孩教育43期 </h4> <h4> web節點健康檢查 </h4> <table width="400" height="200" border="1" align="center"> <tr align="center" valign="middle"> <td bgcolor="gray">主機名</td> <td bgcolor="gray">IP地址</td> <td bgcolor="gray">端口</td> <td bgcolor="gray">狀態</td> </tr> <tr align="center" valign="middle"> <td >web01</td> <td >172.16.1.9</td> <td >80</td> <td bgcolor="green">OK!</td> </tr> <tr align="center" valign="middle"> <td >web04</td> <td >172.16.1.18</td> <td >80</td> <td bgcolor="green">OK!</td> </tr> </table> <body background="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1522434774423&di=bf83edcd87b36ce3b6572231a1749e9a&imgtype=0&src=http%3A%2F%2Fwww.blended-html.com%2Fbackground-images%2Fbi-background-frame.png"></body> </html>
1.30 企業代碼上線發布系統案例
寫一套簡單的企業代碼上線發布系統案例,利用SVN對代碼及配置文件進行管理,在辦公室服務器上從svn取出指定版本的代碼和配置,發布到IDC機房分發機服務器上,在分發服務器或者負載均衡器上或者應用服務器本地實現代碼平滑發布、上線、回滾腳本(具體設計請參考課堂講解的企業代碼發布方案)。