1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名, IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

#!/bin/bash
echo "hostname: `hostname`"
echo "ipv4 addr: `ifconfig |egrep -o "\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>" | head -1`"
echo "ipv4 addr: `ifconfig ens33 | grep "inet " | tr -s " " | awk '{print $2}'`"
echo "OS version: `cat /etc/redhat-release`"
echo "kernel version: `uname -r`"
echo "CPU version: `lscpu | grep "Model name" | tr -s " " | cut -d: -f2`"
echo "memery max_size: `cat /proc/meminfo | head -1 | cut -d: -f2`"
echo "disk max_size: `fdisk -l | head -2 | tail -1| cut -d" " -f3,4`"  

shell脚本练习后续可能继续追加~~~_第1张图片
2、编写脚本/root/bin/backup.sh,可实现将/etc/目录备份到 /root/etcYYYY-mm-dd中

#!/bin/bash
echo "copy will start...."
sleep 3
cp -av /etc /root/etc`date +%F`                                                                                 
echo "copy finished "

shell脚本练习后续可能继续追加~~~_第2张图片
3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

#!/bin/bash
echo "the max value is : `df | grep "/dev/sd*" | tr -s " " "%" | cut -d% -f5 | sort -nr | head -1`"  

shell脚本练习后续可能继续追加~~~
4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址 和连接数,并按连接数从大到小排序

#!/bin/bash
echo "the connecting hosts: ` netstat -tun | tr -s ' ' | awk '{print $5}' | grep -v "[a-zA-Z]" | uniq -c | sort -nr `"

shell脚本练习后续可能继续追加~~~
5、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第 20用户的ID之和

#!/bin/bash                                                                                                     
Id1=`cat /etc/passwd | sed -n "10 p" | awk -F: '{print $3}'`
Id2=`cat /etc/passwd | sed -n "20 p" | awk -F: '{print $3}'`
echo "two user's id sum=$[$Id1+$Id2]"

shell脚本练习后续可能继续追加~~~
6、编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

#!/bin/bash
read -p "please input file name no.1: " first_name
read -p "please input file name no.2: " second_name****
f1=`cat $first_name | grep "^[[:space:]]*$" | wc -l`
f2=`cat $second_name | grep "^[[:space:]]*$" | wc -l`
echo "the two file space line sum=$[$f1+$f2]"

shell脚本练习后续可能继续追加~~~
7、编写脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级 子目录和文件

#!/bin/bash                                                                                                   
sum1=`ls -A /etc | wc -l`
sum2=`ls -A /var | wc -l`
sum3=`ls -A /usr | wc -l`
echo "/etc /var /usr file sum=$[$sum1+$sum2+$sum3]"

shell脚本练习后续可能继续追加~~~
8、编写脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数 个数小于9,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数 不小于1,则显示第一个参数所指向的文件中的空白行数

#!/bin/bash                                                                                                   
# 接收一个文件路径作为参数,如果参数个数小于1,则提示用户至少应该给一个参数,并且立即退出,如果参数
#个数不小于1 则显示第一个参数所指向的文件中的空白行数
if (($#<"1"))
        then
                echo "至少应该给一个参数"
        else
                echo "space line: `cat $1 | grep "^[[:space:]]*$" | wc -l`"
fi

shell脚本练习后续可能继续追加~~~_第3张图片
9、编写脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测 试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可 ping通,则提示用户“该IP地址不可访问”

#!/bin/bash                                                                                                   
ping -c1 $1 &>/dev/null
if (($?<"1"))
        then
                echo "this host is up"
        else
                echo "can not arrived"
fi

shell脚本练习后续可能继续追加~~~_第4张图片
10、编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如 果超过80%,就发广播警告空间将满

#!/bin/bash
b_max=`df | grep -E "^/dev/sd*" | tr -s " " "%" | cut -d% -f5 | sort -nr |head -1`
i_max=`df -i | grep -E "^/dev/sd*" | tr -s " " "%" | cut -d% -f5 | sort -nr |head -1`
[ $b_max -gt 80 -o $i_max -gt 80 ] && wall hard disk full || echo "not warning"

unset b_max
unset i_max

shell脚本练习后续可能继续追加~~~_第5张图片
将数值故意调低之后
shell脚本练习后续可能继续追加~~~_第6张图片
11、编写脚本/bin/per.sh,判断当前用户对指定参数文件,是否不可读并且不可写

#!/bin/bash
read -p "please input file name: " fn
if [ ! -r $fn -a ! -w $fn ]
        then
                echo "`whoami` can not read and write "
        else
                echo "`whoami` can read and write file"
fi

shell脚本练习后续可能继续追加~~~_第7张图片
12、编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是且非空,添加所有人可执行权限,否则提示用户非脚本文件

#!/bin/bash
read -p "please input filename: " fn
if [[ $fn =~ ..*\.sh$ ]]
        then
                if [[ -s $fn && -f $fn ]]
                        then
                                chmod a+x $fn
                                echo "OK"
                        else
                                echo "file is not suit"
                                exit
                fi
        else
                echo "please input suit file "
                exit
fi

1和1.sh是空文件 per.sh是之前练习的shell脚本
shell脚本练习后续可能继续追加~~~_第8张图片
13、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统

#!/binbash
if [ -e /etc/nologin ]
        then
                echo "stop user loading "
        else
                touch /etc/nologin
                echo "stop user load"
 fi        
#!/bin/bash
if [ -e /etc/nologin ]
        then
                rm -rf /etc/nologin
                echo "user can load"
        else
                echo "user can load"
fi

shell脚本练习后续可能继续追加~~~
shell脚本练习后续可能继续追加~~~_第9张图片
shell脚本练习后续可能继续追加~~~
shell脚本练习后续可能继续追加~~~_第10张图片