溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SHELL腳本練習(xí)

發(fā)布時(shí)間:2020-08-21 10:56:59 來(lái)源:網(wǎng)絡(luò) 閱讀:248 作者:90001丶冷眸 欄目:系統(tǒng)運(yùn)維

1.編寫(xiě)腳本 sumid.sh,計(jì)算/etc/passwd?件中的第10個(gè)?戶和第20?戶的ID之和

#!/bin/bash
S_O=head /etc/passwd | tail -1 | cut -d: -f3
S_T=head -20 /etc/passwd | tail -1 | cut -d: -f3
echo -e "/etc/passwd 文件中的第10個(gè)和第20個(gè)用戶的ID之和為:\e[1;33m$[${S_O}+${S_T}]\e[0m"

2.編寫(xiě)腳本 sumspace.sh,傳遞兩個(gè)?件路徑作為參數(shù)給腳本,計(jì)算這兩個(gè)?件中所有空??之和

#!/bin/bash
read -p "please input One path : " ONE_PATH
read -p "please input Two path : " TWO_PATH
S_ONE=grep "^$" ${ONE_PATH} |wc -l
S_TWO=grep "^$" ${TWO_PATH} |wc -l
echo "file spaces is : ${S_ONE} ${S_TWO}"
sum=$[${S_ONE}+${S_TWO}]
echo -e "${ONE_PATH}、${TWO_PATH} space sum is \e[31m${sum}\e[0m"

3.編寫(xiě)腳本 sumfile.sh,統(tǒng)計(jì)/etc, /var, /usr?錄中共有多少個(gè)?級(jí)??錄和?件

#!/bin/bash
read -p "please input first_dir_path : " FIRST
read -p "please input second_dir_path : " SECOND
read -p "please input three_dir_path : " THREE
FIR_F=find ${FIRST} -maxdepth 1 | wc -l
SEC_F=find ${SECOND} -maxdepth 1 | wc -l
THR_F=find ${THREE} -maxdepth 1 | wc -l
FIR_S=find ${FIRST} -maxdepth 1 -type d | wc -l
SEC_S=find ${SECOND} -maxdepth 1 -type d | wc -l
THR_S=find ${THREE} -maxdepth 1 -type d | wc -l
fir_dir=$[${FIR_S}+${SEC_S}+${THR_S}-3]
echo -e "\e[1;33m${FIRST}、${SECOND}、${THREE}\e[0m three first dirs sum : \e[1;31m${fir_dir}\e[0m"
SUM=$[${FIR_F}+${SEC_F}+${THR_F}]
echo -e "\e[1;33m${FIRST}、${SECOND}、${THREE}\e[0m three files sum : \e[1;31m$[${SUM}-${fir_dir}]\e[0m"

4.編寫(xiě)腳本 argsnum.sh,接受?個(gè)?件路徑作為參數(shù);如果參數(shù)個(gè)數(shù)?于1,則提??戶“?少應(yīng)該給?個(gè)參數(shù)”,并?即退出;如果參數(shù)個(gè)數(shù)不?于1,則顯?第?個(gè)參數(shù)所指向的?件中的空??數(shù)

#!/bin/bash
[[ $# -lt 1 ]] && (echo "at least one argument"&&exit)|| echo -e "\e[1;31m$1\e[0m 文件空白行數(shù)為:\e[1;33mgrep '^$' $1|wc -l\e[0m"

5.編寫(xiě)腳本 hostping.sh,接受?個(gè)主機(jī)的IPv4地址做為參數(shù),測(cè)試是否可連通。如果能ping通,則提??戶“該IP地址可訪問(wèn)” ;如果不可ping通,則提??戶“該IP地址不可訪問(wèn)”

#!/bin/bash
read -p "please input IP:" IP
LOG_COLOR='\e[1;31m'
AND_COLOR='\e[0m'
A=[[ "$IP" =~ ^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]];echo $?;
B=ping -c1 -w1 $IP &>/dev/null;echo $?;
if [ $A -eq 0 ];then
if [ $B -eq 0 ];then
echo -e "${LOG_COLOR}該IP地址可以訪問(wèn)${AND_COLOR}"
else
echo -e "${LOG_COLOR}該IP地址不可訪問(wèn)${AND_COLOR}"
fi
else
echo -e "${LOG_COLOR}IP 格式輸入不正確${AND_COLOR}"
exit
fi

6.編寫(xiě)腳本 checkdisk.sh,檢查磁盤(pán)分區(qū)空間和inode使?率,如果超過(guò)80%,就發(fā)?播警告空間將滿

#!/bin/bash
disk=df|egrep /dev/sd|tr -s ' ' '%'|cut -d% -f5|sort -nr|head -n1
inode=df -i|egrep /dev/sd|tr -s ' ' '%'|cut -d% -f5|sort -nr|head -n1
[ $disk -ge 80 -o $inode -ge 80 ] && wall space will full.

7.編寫(xiě)腳本 per.sh,判斷當(dāng)前?戶對(duì)指定參數(shù)?件,是否不可讀并且不可寫(xiě)

#!/bin/bash
[ ! -r $1 -a ! -w $1 ] && echo "$1 is not read and write" || exit

8.編寫(xiě)腳本 excute.sh ,判斷參數(shù)?件是否為sh后綴的普通?件,如果是,添加所有?可執(zhí)?權(quán)限,否則提??戶?腳本?件

#!/bin/bash
[[ $1 =~ .sh$ ]] && [ -f $1 ] && (chmod a+x $1;echo "$1 is .sh")||echo "$1 is not
.sh"

9.編寫(xiě)腳本 nologin.sh 和 login.sh,實(shí)現(xiàn)禁?和允許普通?戶登錄系統(tǒng)

#!/bin/bash
[ -f /etc/nologin ] && echo “nologin”|| (touch /etc/nologin;echo “nologin”)
!/bin/bash
[ -f /etc/nologin ] && ( rm -f /etc/nologin;echo “l(fā)ogin”)||echo “l(fā)ogin”

10.編寫(xiě)腳本 createuser.sh,實(shí)現(xiàn)如下功能:使??個(gè)?戶名做為參數(shù),如果指定參數(shù)的?戶存在,就顯?其存在,否則添加之;顯?添加的?戶的id號(hào)等信息

#!/bin/bash
read -p "please input username:" user
id $user &>/dev/null
[[ ! $? -eq 0 ]] && (useradd $user &> /dev/null && echo "add $user user") ||echo "the user is exits"

11.編寫(xiě)腳本 yesorno.sh,提??戶輸?yes或no,并判斷?戶輸?的是yes還是no,或是其它信息

#!/bin/bash
read -p "please input yes or no :" ANS
[[ "$ANS" =~ ^(Yy?)$ ]] && echo yes
[[ "$ANS" =~ ^(Nn?)$ ]] && echo no

12.編寫(xiě)腳本 filetype.sh,判斷?戶輸??件路徑,顯?其?件類(lèi)型(普通,?錄,鏈接,其它?件類(lèi)型)

#!/bin/bash
read -p "please input file path: " PT
file $PT >/testdir/shell/test.txt
leixing=egrep -o "link|text|block|directory" /testdir/shell/test.txt
case $leixing in
text)
echo "the path is file"
;;
link)
echo "the path is Link"
;;
block)
echo "the path is Block"
;;
directory)
echo "the path is Directory"
;;
*)
echo "the path is Others"
esac

13.編寫(xiě)腳本 checkint.sh,判斷?戶輸?的參數(shù)是否為正整數(shù)

#!/bin/bash
read?-p?"please?input?a?number:"?num
[[ $num =~ ^[0-9]+$ ]] && echo “$num is int”||{echo ”lease?input?a?number”;exit;}

14.讓所有?戶的PATH環(huán)境變量的值多出?個(gè)路徑,例如
/usr/local/apache/bin

vim /etc/profile
export PATH=/usr/local/apache/bin:$PATH
source /etc/profile 生效

15.?戶root登錄時(shí),將命令指?符變成紅?,并?動(dòng)啟?如下別名:

rm=‘rm –i’
cdnet=‘cd /etc/sysconfig/network-scripts/’
editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eth0’
editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 或
ifcfg-ens33 ’
(如果系統(tǒng)是CentOS7)
[root@CentOS ~]# vim ~/.bashrc
alias rm='rm –i'
alias cdnet='cd /etc/sysconfig/network-scripts/'
alias editnet1='vim /etc/sysconfig/network-scripts/ifcfg-eth0'
alias editnet2='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
export PS1='[\e[1;31m][\u@\h \W]\$[\e[0m]' 紅色
source ~.bashrc 生效

16.任意?戶登錄系統(tǒng)時(shí),顯?紅?字體的警?提醒信息“Hi,dangerous!”

[root@CentOS ~]# vim /etc/issue
^[[031m " Hi,dangerous!" ^[[0m"

17.編寫(xiě)?成腳本基本格式的腳本,包括作者,聯(lián)系?式,版本,時(shí)間,描述等

[root@CentOS ~]# vim .vimrc
set nu
set ignorecase
set cursorline
set autoindent
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#")
call
setline(3,"#"
)
call setline(4,"#Author: w")
call setline(5,"#QQ: 1")
call setline(6,"#Date: ".strftime("%Y-%m-%d"))
call setline(7,"#FileName: ".expand("%"))
call setline(8,"#URL: http://www.magedu.com")
call setline(9,"#Description: The test script")
call setline(10,"#Copyright (C): ".strftime("%Y")." All rights
reserved")
call
setline(11,"#

")
call setline(12,"")
endif
endfunc
autocmd BufNewFile * normal G

18.編寫(xiě)腳本 systeminfo.sh,顯?當(dāng)前主機(jī)系統(tǒng)信息,包括主機(jī)名,IPv4地址,操作系統(tǒng)版本,內(nèi)核版本, CPU型號(hào),內(nèi)存??,硬盤(pán)??

#!/bin/bash
LOG_COLOR='\e[1;33m'
AND_COLOR='\e[0m'
echo -e "當(dāng)前主機(jī)信息如下:"
echo -e "主機(jī)名:${LOG_COLOR}${HOSTNAME}${AND_COLOR}"
echo -e "IPV4 地址為:${LOG_COLOR}ifconfig | grep broadcast | tr -s " " | cut -d" " -f3"${AND_COLOR}
echo -e "操作系統(tǒng)版本為:${LOG_COLOR}uname -r"${AND_COLOR}
echo -e "內(nèi)核版本為:${LOG_COLOR}cat /etc/redhat-release | cut -d"." -f1-2"${AND_COLOR}
echo -e "CPU型號(hào)為:${LOG_COLOR}lscpu | grep Model | tail -1 | tr -s ' ' | cut -d: -f2"${AND_COLOR}
echo -e "內(nèi)存大小為:${LOG_COLOR}free -mh | head -2 | tail -1 | tr -s ' ' | cut -d" " -f2"${AND_COLOR}
echo -e "硬盤(pán)容量為:${LOG_COLOR}fdisk -l | head -2 | tail -1 | awk -F ':|,' '{print $2}'"${AND_COLOR}

19.編寫(xiě)腳本 backup.sh,可實(shí)現(xiàn)每?將/etc/?錄備份到/root/etcYYYY-mm-dd中

#!/bin/bash
cp /etc /testdir/etcdate +%F
echo "/etc 備份完成"

20.編寫(xiě)腳本 disk.sh,顯?當(dāng)前硬盤(pán)分區(qū)中空間利?率最?的值

#!/bin/bash
echo "當(dāng)前硬盤(pán)分區(qū)中空間利用率最大的值為:df |grep /dev/sd |grep -o "[0-9]{1,3}%" | sort -rn | head -1"

21.編寫(xiě)腳本 links.sh,顯?正連接本主機(jī)的每個(gè)遠(yuǎn)程主機(jī)的IPv4地址和連接數(shù),并按連接數(shù)從?到?排序

#!/bin/bash
echo "正在連接本主機(jī)的每個(gè)遠(yuǎn)程主機(jī)的 IPV4 的地址和連接數(shù)為:"
echo "netstat -tan | tr -s " " : | cut -d: -f6 | grep ^[0-9] | sort | uniq -c"

22.編寫(xiě)腳本 reset.sh,對(duì)新系統(tǒng)進(jìn)行環(huán)境配置

#!/bin/bash
#字體顏色
LOG_COLOR='\e[1;33m'
AND_COLOR='\e[0m'
#網(wǎng)卡名
N_N=ifconfig|head -1 | tr -s " " : |cut -d: -f1
#網(wǎng)卡配置文件所在目錄
D_NET="/etc/sysconfig/network-scripts/ifcfg-${N_N}"
#yum源配置文件所在目錄
D_YUM="/etc/yum.repos.d/"
#關(guān)閉seliunx
setenforce 0 &>/dev/null
sed -i 's#^SELINUX=.#SELINUX=disabled#g' /etc/selinux/config
echo -e "${LOG_COLOR}SELINUX已經(jīng)修改完畢,重啟即生效。${AND_COLOR}"
read -p "即將修改主機(jī)名,請(qǐng)給主機(jī)起一個(gè)可愛(ài)的名字吧:" HOST
#更改主機(jī)名
hostname ${HOST}
cat >/etc/hostname <<EOF
${HOST}
EOF
echo -e "${LOG_COLOR}名ok,接下來(lái)是yum配置${AND_COLOR}"
#配置yum源
mkdir /media/cdrom -p &>/dev/null
mount /dev/sr0 /media/cdrom &>/dev/null
mkdir ${D_YUM}backup &>/dev/null
mv ${D_YUM}C ${D_YUM}backup
cat >>${D_YUM}CentOS.repo <<EOF
[CentOS]
name=CentOS
baseurl=file:///media/cdrom
gpgcheck=0
EOF
echo '/dev/sr0 /media/cdrom iso9660 defaults 0 0' >>/etc/fstab
yum clean all &>/dev/null
yum makecache &>/dev/null
echo -e "${LOG_COLOR}yum配置完成。${AND_COLOR}"
#關(guān)閉防火墻
systemctl stop firewalld.service &>/dev/null
systemctl disable firewalld.service &>/dev/null
echo -e "${LOG_COLOR}防火墻已經(jīng)關(guān)閉,并禁止開(kāi)機(jī)啟動(dòng)${AND_COLOR}"
#更改IP
read -p "接下來(lái)配置IP\n請(qǐng)鍵入IP地址:" IPAD
read -p "請(qǐng)鍵入子網(wǎng)掩碼:" NET
read -p "請(qǐng)鍵入網(wǎng)關(guān)地址:" GAT
sed -i 's#^BOOT.*#BOOTPROTO=static#g' ${D_NET}
cat >>${D_NET} <<EOF
IPADDR=${IPAD}
NETMASK=${NET}
GATEWAY=${GAT}
EOF
systemctl restart network.service &>/dev/null
echo -e "${LOG_COLOR}網(wǎng)卡配置已生效${AND_COLOR}"
sleep 1
echo -e "${LOG_COLOR}主機(jī)環(huán)境配置完成,系統(tǒng)自動(dòng)重啟 3...${AND_COLOR}"
sleep 1
echo -e "${LOG_COLOR}2..${AND_COLOR}"
sleep 1
echo -e "${LOG_COLOR}1...${AND_COLOR}"
sleep 1
reboot

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI