腳本案例十三git
實例1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操做系統版本,內核版本, CPU型號,內存大小,硬盤大小。
mkdir -pv /root/bin
vim /root/bin/systeminfo.sh 代碼以下
#!/bin/bash
echo '主機名是:'
hostname
echo 'IPv4地址是:'
ifconfig | grep -w inet|tr -s ' '|cut -d ' ' -f 3
echo '操做系統版本:'
cat /etc/redhat-release
echo '內核版本:'
uname -r
echo 'cpu型號:'
lscpu |grep R
echo '內存大小:'
free -h|grep Mem|tr -s ' '|cut -d ' ' -f 1-2
echo '硬盤大小:'
fdisk -l |grep sd #或 lsblk
-----------------------------------------------------------------------------------------
實例2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄 備份到/root/etcYYYY-mm-dd中
vim /root/bin/backup.sh
方法一:
#!/bin/bash
echo "正在備份...."
cp -a /etc /root/etc`date +%F`
echo "備份完成"
方法二:計劃任務
#!/bin/bash
crontab -e
1 0 * * * cp -a /etc /root/etc`date +%F`
-----------------------------------------------------------------------------------------
實例3、編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空間利 用率最大的值
vim /root/bin/disk.sh
#!/bin/bash
echo "當前硬盤分區中空間利用率最大的值是:`df -h|grep "^/dev/sd"|tr -s " " |cut -d " " -f 5|sort -n|tail -1|cut -c -2`"
-----------------------------------------------------------------------------------------
實例4、編寫腳本/root/bin/links.sh,顯示正鏈接本主機的每一個遠 程主機的IPv4地址和鏈接數,並按鏈接數從大到小排序
vim /root/bin/links.sh
#!/bin/bash
echo "鏈接數和IPv4地址爲:` netstat -nt|tr -s " "| cut -d " " -f 5|sed -n '/^[[:digit:]]'/p |tr ":" "."|cut -d . -f 1-4|sort|uniq -c |sort -nr`"
-----------------------------------------------------------------------------------------
實例5、寫一個腳本/root/bin/sumid.sh,計算/etc/passwd 文件中的第10個用戶和第20用戶的ID之和
vim /root/bin/sumid.sh
#!/bin/bash
ID1=`sed -n '10p' /etc/passwd|cut -d: -f 3`
ID2=`sed -n '20p' /etc/passwd|cut -d: -f 3`
SUM=$[$ID1+$ID2]
echo "用戶ID和爲:$SUM"
-----------------------------------------------------------------------------------------
實例6、寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件 路徑做爲參數給腳本,計算這兩個文件中全部空白行之和
vim /root/bin/sumspace.sh
#!/bin/bash
A=`grep "^$" $1 | wc -l`
B=`grep "^$" $2 | wc -l`
C=$[$A+$B]
echo "全部空白行的和爲:$C"
-----------------------------------------------------------------------------------------vim
實例7、寫一個腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件
vim /root/bin/sumfile.sh
#!/bin/bash
A=`ls -A /etc | wc -l`
B=`ls -A /var | wc -l`
C=`ls -A /usr | wc -l`
SUM=$[$A+$B+$C]
echo "一級子目錄和文件的總和爲:$SUM"
-----------------------------------------------------------------------------------------
實例8、寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑做 爲參數;若是參數個數小於1,則提示用戶「至少應該給一個 參數」,並當即退出;若是參數個數不小於1,則顯示第一個 參數所指向的文件中的空白行數
vim /root/bin/argsnum.sh
#!/bin/bash
if [ $# -lt 1 ];then
echo "請輸入至少一個參數:"
exit 0
fi
if [ $# -gt 1 ];then
SUM=`grep "^$" $1 | wc -l`
echo "空白行爲:$SUM"
fi
-----------------------------------------------------------------------------------------
實例9、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址作爲參數,測試是否可連通。若是能ping通,則提示用戶「該IP地址可訪問」;若是不可ping通,則提示用戶「該IP地址不可訪問
vim /root/bin/hostping.sh
#!/bin/bash
if [ $# -lt 1 ];then
echo "請輸入參數:"
exit 0
fi
ping -c 1 -w 1 $1 &>/dev/null
if [ $? -eq 0 ];then
echo "該IP地址能夠訪問"
else
echo 「該IP地址不能夠訪問」
fi
-----------------------------------------------------------------------------------------
實例10、chmod -rw /tmp/file1,編寫腳本/root/bin/per.sh,判 斷當前用戶對/tmp/fiile1文件 是否不可讀且不可寫 ?
vim /root/bin/per.sh
#!/bin/bash
if [ ! -r /tmp/file1 -a ! -w /tmp/file1 ];then
echo "當前用戶對此文件無讀寫權限!"
else
echo "當前用戶對此文件可讀可寫!"
fi
-----------------------------------------------------------------------------------------
實例11、編寫腳本/root/bin/nologin.sh和login.sh,實現禁止和容許普通用戶登陸系統。
vim /root/bin/nologin.sh
#!/bin/bash
read -p "請輸入用戶名:" username
A=/bin/bash
B=`grep "^$username" /etc/passwd | cut -d: -f7`
C=`grep "^$username" /etc/passwd| cut -d: -f 3`
D=`grep "^$username" /etc/passwd`
if [ $? -ne 0 ];then
echo "系統無此用戶..."
elif [ $C -lt 1000 ];then
echo "$username 不是普通用戶,請從新輸入..."
elif [ "$B" == "$A" ];then
usermod -s /sbin/nologin $username
echo "禁止$username 登陸"
fi
vim /root/bin/login.sh
#!/bin/bash
read -p "請輸入用戶名:" username
A=/sbin/nologin
B=`grep "^$username" /etc/passwd | cut -d: -f 7`
C=`grep "^$username" /etc/passwd | cut -d: -f 3`
D=`grep "^$username" /etc/passwd`
if [ $? -ne 0 ];then
echo "系統無此用戶..."
elif [ $C -lt 1000 ];then
echo "$username 用戶不是普通用戶,請從新輸入..."
elif [ "$B" == "$A" ];then
usermod -s /bin/bash $username
echo "容許$username 登陸"
fibash
實例十二. 寫一個批量建立10個用戶的腳本users.sh。建立的用戶名由字母和數字組成。設置用戶的初始密碼跟用戶名相同,每建立一個用戶就顯示用戶的ID信息,再顯示用戶名、密碼信息。
vim users.sh
#!/bin/bash
if [ $# -lt 1 ];then
echo "請輸入參數add:"
exit 0
fi
if [ $1 == "add" ];then
for I in {1..10}; do
if id user$I &>/dev/null;then
echo "用戶 user$I 已存在"
else
useradd user$I
echo user$I | passwd --stdin user$I &> /dev/null
echo "user$I add sucessful"
id user$I
grep user$I /etc/passwd | cut -d : -f1
grep user$I /etc/shadow | cut -d : -f2
fi
done
fi
-----------------------------------------------------------------------------------------
實例十三.寫一個批量刪除上一題的10個用戶的腳本udel.sh。刪除以前顯示用戶的ID信息,要刪除用戶的家目錄。
vim udel.sh
#!/bin/bash
if [ $# -lt 1 ];then
echo "請輸入參數del:"
exit 0
fi
if [ $1 == "del" ];then
for I in {1..10};do
if id user$I &> /dev/null;then
id user$I
userdel -r user$I
echo "delete user$I sucessful"
else
echo "no user$I"
fi
done
fi
---------------------------------------------------------------------------------------ide