学以致用二十二-----写一个基本环境设置的脚本
每次安裝完系統后,需要配置一些基礎的環境。因此試著寫了一個腳本,以后再裝了新的操作系統后,可以用這個腳本來實現配置。
功能:1、更改主機名
? ? ? ? ? ?2、關閉禁用防火墻
? ? ? ? ? ?3、關閉sellinux
? ? ? ? ? ?4、增加時間戳
? ? ? ? ? ?5、關閉編輯或者輸出錯誤的警告音
代碼如下:
1 #!/usr/bin/bash2 #2018-10-183 #lion4 #setup base environment include hosname selinux firewalld 5 selinux_file=/etc/selinux/config6 Color_text()7 {8 echo -e "\e[1;$2m$1\e[0m"9 }10 Echo_red()11 {12 echo $(Color_text "$1" "31") 13 }14 Echo_green()15 {16 echo $(Color_text "$1" "32") 17 }18 Echo_yellow()19 {20 echo $(Color_text "$1" "33") 21 }22 Echo_blue()23 {24 echo $(Color_text "$1" "34") 25 }26 update_hostname()27 {28 read -p "input new hostname:" host_name29 echo $host_name > /etc/hostname30 #echo -e "Hostname updated successful\n" 31 Echo_green "Hostname updated successful\n"32 }33 34 close_firewall()35 {36 systemctl stop firewalld.service37 systemctl disable firewalld.service &> /dev/null38 systemctl status firewalld.service &> /dev/null39 [ $? -ne 0 ] && Echo_green "firewall closed successful\n"40 }41 disable_selinux()42 {43 status=$(cat ${selinux_file} | grep '^SELINUX' | awk -F'=' 'NR==1{print $2}')44 if [ "${status}" != "disabled" ] ; then45 sed -i "s/SELINUX=${status}/SELINUX=disabled/g" /etc/selinux/config46 else47 Echo_yellow "selinux has diabled\n"48 fi49 }50 add_timestamp()51 {52 histtime=$(grep 'HISTTIMEFORMAT' /etc/profile)53 [ -z "${histtime}" ] && echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile && source /etc/profile || Echo_green "timesstamp has added\n"54 }55 #vim_check()56 #{57 # vim_version=$(vi --vesion | grep 'IMProved' | awk '{print $5}')58 # if [ ${vim_version} < 8 ];then59 # yum remove vi 60 # . vim_install61 # else62 # #echo -e "vim version is already 8,nothing to do\n"63 # Echo_yellow "vim version is already 8,nothing to do\n"64 # fi65 #}66 67 off_warning_voice()68 {69 echo "setterm -blength 0" >> /etc/bashrc70 sed -i '/bell-style/s/^#//g' /etc/inputrc71 }72 menu()73 {74 clear75 Echo_blue "\t\tCheck base envionment"76 echo -e "\t1.Update hostname"77 echo -e "\t2.Close firewalld"78 echo -e "\t3.Disable selinux"79 echo -e "\t4.Add timetamp"80 echo -e "\t5 warining voice"81 echo -e "\t0.Exit menu"82 read -p "Enter an option:" choice83 # echo -en "Enter an option:"84 # read -n 1 choice85 }86 87 while [ 1 ]88 do89 menu90 case $choice in91 0)92 break93 ;;94 1)95 update_hostname96 ;;97 2)98 close_firewall99 ;; 100 3) 101 disable_selinux 102 ;; 103 4) 104 add_timestamp 105 ;; 106 5) 107 off_warning_voice 108 ;; 109 *) 110 clear 111 Echo_red "invalid option\n" 112 esac 113 #echo -en "\tHit any key to continue:" 114 #read -n 1 line 115 read -p "Hit any key to continue:" 116 done寫此次代碼的目的:
1、 加強對函數調用的學習
2、while 循環 ,?
? ? ? while [ 1 ] ? ?表示無限循環,注意[ 1 ] ?中括號里兩邊是有空格的,shell腳本對空格控制挺嚴格
3、學會菜單的使用及case的用法,已esac結尾
4、read的用法
? ? ? read -n 1 line 表示只接受一個字符串輸入,如果超出則馬上輸出,(由于輸出的效果不佳,已注釋)
5、字體顏色的函數調用
Color_text(){echo -e "\e[1;$2m$1\e[0m"}6、加強 if語句的練習
7 、 [ -z ?條件 ] ?是否為空
8、?status=$(cat ${selinux_file} | grep '^SELINUX' | awk -F'=' 'NR==1{print $2}')
? ? ? ?復習 awk的用法 ?-F'=' ?以=為分隔符,默認是空格為分隔符
? ? ? ? NR==1{print $2}
? ? ? ? NR,表示awk開始執行程序后所讀取的數據行數.此處表示打印出第一行,第二列
9、 ?復習sed的用法
? ? ? ?sed -i "s/SELINUX=${status}/SELINUX=disabled/g" /etc/selinux/config
? ? ? ?sed -i ‘s/old/new/g’ ? ?替換
? ? ? ?sed -i '/bell-style/s/^#//g' /etc/inputrc ?先匹配bell-style這行,然后把行首的#替換為空,等價于刪除行首的#
? ? ? ? ?/s/^#//g
10、?systemctl disable firewalld.service &> /dev/null
? ? ? ? &> 輸入輸出不打印出來,重定向到/dev/null里
11、echo -e ? 處理特殊字符,使其生效
? ? ? ?echo -n ?不換行輸出
? ? ? ?echo -ne 兩者結合
以前對shell腳本不理解,或者是看到別人寫的腳本,只能看懂一部分,因此對shell腳本總有點抵觸或者發忪的情緒在里面,通過這段時間對shell腳本的加強練習,以及自己去寫腳本,不斷嘗試和修改,并借鑒其他腳本好的用法,終于對shell腳本有了全新的認識
并且對shell腳本的興趣也越發濃厚。
多看,多練習,多總結,生活源于一點一滴的積累
?
? ? ? ?
? ??
??
轉載于:https://www.cnblogs.com/liongong/p/9819953.html
總結
以上是生活随笔為你收集整理的学以致用二十二-----写一个基本环境设置的脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一次EXPDP数据泵性能问题诊断和调优
- 下一篇: Effective_STL 学习笔记(七