1 编写脚本argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给 一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数
#!/bin/bash
#********************************************************************
#Author:dawn
#Date:2020-08-09 14:41:30
#FileName:argsnum.sh
#URL:https://blog.csdn.net/xiao_dan_
#Version:1.0
#Description:The test script
#********************************************************************
#$@ 接收所有的参数,使用双引号标记,表示所有参数都是独立字符串,不是整体
DIRS="$@"
#$# 参数的个数
args_num=$#
# 初始空白行
line=0
if [ ${args_num} -lt 1 ];then
echo -e "\033[1;31m至少应该给一个参数 \033[0m"
exit 1
else
dir=$1
line=`cat ${dir} | grep ^$ |wc -l`
echo -e "${dir}中的空白行共计\033[1;31m【${line}】\033[0m"
fi
2 编写脚本 hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提 示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”
[root@CentOS8 scripts]#cat hostping.sh
#!/bin/bash
#********************************************************************
#Author:dawn
#Date:2020-08-09 16:09:52
#FileName:hostping.sh
#URL:https://blog.csdn.net/xiao_dan_
#Version:1.0
#Description:The test script
#********************************************************************
read -p "请输入要连接的ip 地址:" IPADDR
RED="\033[1;31m"
END="\033[0m"
if ! [[ ${IPADDR} =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]];then
echo -e "${RED}IP地址不合法!!!${END}"
exit 1
else
ping -c1 -W3 ${IPADDR} &> /dev/null
if [ $? -ne 0 ];then
echo -e "${RED}该IP地址不可访问!!!${END}"
else
echo "该IP地址可访问"
fi
fi
3 编写脚本 checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满
#!/bin/bash
#********************************************************************
#Author:dawn
#Date:2020-08-09 16:09:52
#FileName:hostping.sh
#URL:https://blog.csdn.net/xiao_dan_
#Version:1.0
#Description:The test script
#********************************************************************
#1.获取磁盘分区的使用率
#2.遍历使用率,如果使用率超过80%,发送广播
for i in `df -h|tr -s ' ' %|cut -d% -f5|tail -n +2`
do
#待改进,广播里没有告知是哪个磁盘分区
if [ $i -ge 80 ];then
wall "警告!磁盘分区使用率过高"
fi
done
#3.获取inode使用率
#4.遍历使用率,如果使用率超过80%,发送广播
for i in `df -i|tr -s ' ' %|cut -d% -f5|tail -n +2`
do
#待改进,广播里没有告知是哪个磁盘分区
if [ $i -ge 80 ];then
wall "警告!inode使用率过高!"
fi
done
4 编写脚本 per.sh,判断当前用户对指定参数文件,是否不可读并且不可写
#!/bin/bash
#********************************************************************
#Author:dawn
#Date:2020-08-09 20:09:10
#FileName:per.sh
#URL:https://blog.csdn.net/xiao_dan_
#Version:1.0
#Description:The test script
#********************************************************************
read -p "请输入要检测的文件" FILENAME
# -a filename 判断文件是否存在
if ! [ -a ${FILENAME} ];then
echo -e "\033[1;31m请输入正确格式的文件\033[0m"
exit 1
fi
# -r 判断是否具有可读权限,-w 判断是否具有可写权限,这里的 -a 表示 and
if ! [ -r ${FILENAME} -a -w ${FILENAME} ];then
echo -e "\033[1;32m该文件不可读且不可写\033[0m"
else
echo -e "\033[1;36m该文件正常\033[0m"
fi
5 编写脚本 excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限, 否则提示用户非脚本文件
#!/bin/bash
#********************************************************************
#Author:dawn
#Date:2020-08-09 20:38:19
#FileName:excute.sh
#URL:https://blog.csdn.net/xiao_dan_
#Version:1.0
#Description:The test script
#********************************************************************
read -p "请输入需添加执行权限的文件" FILENAMES
if [ ${FILENAMES} -lt 1 ];then
echo -e "\033[1;31m请输入文件\033[0m"
exit 1
fi
for i in "$@"
do
if [[ $i =~ *.sh$ ]];then
chmod +x $i
ls -l $i
else
echo -e "\033[1;33m文件${i}不是可执行文件\033[0m"
continue
fi
done
6 编写脚本 nologin.sh和 login.sh,实现禁止和允许普通用户登录系统
7 编写脚本 createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就 显示其存在,否则添加之;显示添加的用户的id号等信息
[root@CentOS8 scripts]#vim createuser.sh
#!/bin/bash
#********************************************************************
#Author:dawn
#Date:2020-08-10 17:05:06
#FileName:createuser.sh
#URL:https://blog.csdn.net/xiao_dan_
#Version:1.0
#Description:The test script
#********************************************************************
if [ $# -eq 0 ];then
echo -e "\033[1;31mArg is 1\033[0m"
exit 1
#要求用户名合法化,即字母数字下划线组成,且不能以下划线开头
elif ! [[ $1 =~ ^[a-zA-Z][a-zA-Z0-9_]*$ ]];then
echo -e "\033[1;31mUsername is invalid\033[0m"
exit 2
else
#判断用户是否存在
i=`id $1 &> /dev/null`
if [ $? -eq 0 ];then
echo -e "\033[1;33m$1 exist\033[0m"
exit
else
#待改进,设置随机密码,并保存到文件中
useradd $1
echo magedu | passwd --stdin $1 &> /dev/null
USER_ID=`id -u $1`
echo -e "\033[1;32m$1:${USER_ID} is created\033[0m"
fi
fi
8 编写脚本 yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息
#方式一,使用if判断
#!/bin/bash
#********************************************************************
#Author:dawn
#Date:2020-08-10 17:14:35
#FileName:yesorno.sh
#URL:https://blog.csdn.net/xiao_dan_
#Version:1.0
#Description:The test script
#********************************************************************
read -p "Please input yes or no(y/n):" ANS
if [[ ${ANS} =~ [[^yY]$|^[yY][Ee][Ss]$] ]];then
echo "You say yes!"
elif [[ ${ANS} =~ [[^nN]$|^[nN][oO]$] ]];then
echo "You say no!"
else
echo "It's other answer!"
fi
#方式二,使用case判断
read -p "Do you agree(yes|no)? " INPUT
case $INPUT in
[yY]|[Yy][Ee][Ss])
echo "your input is yes"
;;
[nN]|[Nn][Oo])
echo "your input is no"
;;
*)
echo "input false;please input yes or no!"
esac
9 编写脚本 fifiletype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)
#!/bin/bash
#********************************************************************
#Author:dawn
#Date:2020-08-10 19:57:13
#FileName:filetype.sh
#URL:https://blog.csdn.net/xiao_dan_
#Version:1.0
#Description:The test script
#********************************************************************
if [ $# -eq 0 ];then
echo -e "\033[1;31mArg is at least 1\033[0m"
exit 1
else
for i in "$@";do
res=`test -a $i`
if [ $res -ne 0 ];then
echo -e "\033[1;31m文件[$i]不存在\033[0m"
continue
else
file_type=`file $i |cut -d: -f2`
echo ${file_type}
fi
done
fi
10 编写脚本 checkint.sh,判断用户输入的参数是否为正整数
#!/bin/bash
#********************************************************************
#Author:dawn
#Date:2020-08-10 21:10:36
#FileName:checkint.sh
#URL:https://blog.csdn.net/xiao_dan_
#Version:1.0
#Description:The test script
#********************************************************************
read -p "Please input a num: " num
# 可使用正则表达式,待写
#使用sed 替换所有数字和正负号,如果剩下字符串长度为0,表示整数,否则不是合法整数,注意:1.0属于浮点数
if [ -n "`echo ${num}|sed 's/[0-9+-]//g'`" ];then
echo "${num} is not an integer"
else
if [ ${num} -lt 0];then
echo "${num} is a negative integer"
else
echo "${num} is a positive integer"
fi
fi