1.编写脚本 argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数
[root@localhost data]# bash argsnum.sh
Please enter the path value:
至少传递一个 参数哦!
[root@localhost data]# vim argsnum.sh
[root@localhost data]# bash argsnum.sh
Please enter the path value: /data/f2.txt
Sum of blank lines in the first file is 6
[root@localhost data]# cat argsnum.sh
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: ?????
#Date: 2020-08-11
#FileName: sumspace.sh
#********************************************************************
set -u
set -e
BEGINCOLOR="\033[$[RANDOM%6+31]m"
ENDCOLOR="\033[0m"
read -p "Please enter the path value: " path
[[ -z "$path" ]] && echo "至少传递一个 参数哦!" && exit 5
space=`cat $path |grep "^[[:space:]]*$"|wc -l`
echo -e $BEGINCOLOR"Sum of blank lines in the first file is $space"$ENDCOLOR
2.编写脚本 hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问” ;如果不可ping通,则提示用户“该IP地址不可访问”
[root@localhost data]# cat hostping.sh
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: ????
#Date: 2020-08-11
#FileName: hostping.sh
#********************************************************************
set -u
set -e
BEGINCOLOR="\033[$[RANDOM%6+31]m"
ENDCOLOR="\033[0m"
read -p "Please input IP Address:" ip
if [[ $ip =~ ^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]];then
ping -c1 -w2 $ip &> /dev/null && (echo -e $BEGINCOLOR"该IP地址可以访问"$ENDCOLOR;exit 0)||echo -e $BEGINCOLOR"该IP地址不可以访问"$ENDCOLOR
else
echo -e $BEGINCOLOR"输入的IP地址不合法!"$ENDCOLOR
fi
[root@localhost data]# bash hostping.sh
Please input IP Address:192.168.11.250
该IP地址可以访问
[root@localhost data]# bash hostping.sh
Please input IP Address:1111
输入的IP地址不合法!
3.编写脚本 checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满
[root@localhost data]# bash checkdisk.sh
Broadcast message from root@localhost.localdomain (pts/0) (Wed Aug 12 14:19:03 2020):
Disk is normal
[root@localhost data]#
Broadcast message from root@localhost.localdomain (pts/0) (Wed Aug 12 14:19:03 2020):
inode is normal
[root@localhost data]# cat checkdisk.sh
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: ????
#Date: 2020-08-12
#FileName: checkdisk.sh
#********************************************************************
set -u
set -e
BEGINCOLOR="\033[$[RANDOM%6+31]m"
ENDCOLOR="\033[0m"
disk=`df -h|tr -s " "|cut -d" " -f5|cut -d% -f1|sort -n|tail -1`
inode=`df -ih|tr -s " "|cut -d" " -f5|cut -d% -f1|sort -n|tail -1`
[[ $disk -gt 80 ]] && echo -e "80%" | wall diskover80% || wall Disk is normal
[[ $inode -gt 80 ]] && echo -e "80%"| wall inodeover80% || wall inode is normal
4.编写脚本 per.sh, 判断当前用户对指定参数文件,是否不可读并且不可写
[root@localhost data]# su - linux
Last login: Wed Aug 12 16:09:47 CST 2020 on pts/0
[linux@localhost ~]$ cd /data/
[linux@localhost data]$ bash per.sh
Please Input A File: test
该test 文件不可读且不可写
[linux@localhost data]$ exit
logout
[root@localhost data]# su linux
[linux@localhost data]$ bash per.sh
Please Input A File: f1.txt
该f1.txt 不满足
[linux@localhost data]$ exit
exit
[root@localhost data]# cat per.sh
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: ????
#Date: 2020-08-12
#FileName: per.sh
#********************************************************************
set -u
set -e
BEGINCOLOR="\033[$[RANDOM%6+31]m"
ENDCOLOR="\033[0m"
read -p "Please Input File name: " file
[ ! -r $file -a ! -w $file ] && echo -e $BEGINCOLOR"该$file 文件不可读且不可写"$ENDCOLOR || echo -e $BEGINCOLOR"该$file 不满足"$ENDCOLOR
5.编写脚本 excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
[root@localhost data]# ll
total 88
-rw-r--r--. 1 root root 556 Aug 11 16:38 argsnum.sh
drwxr-xr-x. 3 root root 27 Aug 10 14:08 backup
drwxr-xr-x. 78 root root 8192 Aug 7 14:42 backup2020-08-07
-rw-r--r--. 1 root root 532 Aug 10 14:08 backup.sh
-rw-r--r--. 1 root root 606 Aug 12 14:19 checkdisk.sh
-rw-r--r--. 1 root root 563 Aug 11 09:59 disk.sh
-rw-r--r--. 1 root root 378 Aug 12 16:43 excute.sh
-rw-r--r--. 1 root root 37 Aug 10 17:12 f1.txt
-rw-r--r--. 1 root root 37 Aug 11 11:14 f2.txt
---x--x--x. 1 root root 24 Aug 11 11:26 f3.txt
-rw-r--r--. 1 root root 10237 Aug 11 14:28 f4.txt
lrwxrwxrwx. 1 root root 6 Aug 10 16:57 file.txt -> f1.txt
-rw-r--r--. 1 root root 785 Aug 11 17:57 hostping.sh
-rw-r--r--. 1 root root 596 Aug 11 10:10 links.sh
-rw-r--r--. 1 root root 498 Aug 12 16:17 per.sh
drwxr-xr-x. 3 root root 18 Aug 7 15:10 rootdir
-rw-r--r--. 1 root root 762 Aug 11 14:37 sumfile.sh
-rw-r--r--. 1 root root 614 Aug 11 10:26 sumid.sh
-rw-r--r--. 1 root root 825 Aug 11 14:13 sumspace.sh
-rw-r--r--. 1 root root 998 Aug 10 12:01 sysinfo.sh
-rwxrwx---. 1 root root 24 Aug 11 11:26 test
[root@localhost data]# bash excute.sh
Please input files name: test
不满足条件
[root@localhost data]# bash excute.sh
Please input files name: per.sh
[root@localhost data]# ll
total 88
-rw-r--r--. 1 root root 556 Aug 11 16:38 argsnum.sh
drwxr-xr-x. 3 root root 27 Aug 10 14:08 backup
drwxr-xr-x. 78 root root 8192 Aug 7 14:42 backup2020-08-07
-rw-r--r--. 1 root root 532 Aug 10 14:08 backup.sh
-rw-r--r--. 1 root root 606 Aug 12 14:19 checkdisk.sh
-rw-r--r--. 1 root root 563 Aug 11 09:59 disk.sh
-rw-r--r--. 1 root root 388 Aug 12 16:47 excute.sh
-rw-r--r--. 1 root root 37 Aug 10 17:12 f1.txt
-rw-r--r--. 1 root root 37 Aug 11 11:14 f2.txt
---x--x--x. 1 root root 24 Aug 11 11:26 f3.txt
-rw-r--r--. 1 root root 10237 Aug 11 14:28 f4.txt
lrwxrwxrwx. 1 root root 6 Aug 10 16:57 file.txt -> f1.txt
-rw-r--r--. 1 root root 785 Aug 11 17:57 hostping.sh
-rw-r--r--. 1 root root 596 Aug 11 10:10 links.sh
-rwxr-xr-x. 1 root root 498 Aug 12 16:17 per.sh
drwxr-xr-x. 3 root root 18 Aug 7 15:10 rootdir
-rw-r--r--. 1 root root 762 Aug 11 14:37 sumfile.sh
-rw-r--r--. 1 root root 614 Aug 11 10:26 sumid.sh
-rw-r--r--. 1 root root 825 Aug 11 14:13 sumspace.sh
-rw-r--r--. 1 root root 998 Aug 10 12:01 sysinfo.sh
-rwxrwx---. 1 root root 24 Aug 11 11:26 test
6.编写脚本 nologin.sh和 login.sh,实现禁止和允许普通用户登录系统
[root@localhost data]# vim nologin.sh
[root@localhost data]# find /etc -name nologin
[root@localhost data]# vim nologin.sh
[root@localhost data]# bash nologin.sh
DenyAccountLogon
[root@localhost data]# find /etc -name nologin
/etc/nologin
[root@localhost data]# vim login.sh
[root@localhost data]# bash login.sh
Allow login account
[root@localhost data]# find /etc -name nologin
[root@localhost data]# cat nologin.sh login.sh
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: ???
#Date: 2020-08-12
#FileName: nologin.sh
#********************************************************************
set -e
set -u
[ ! -e '/etc/nologin' ] && touch /etc/nologin && echo "DenyAccountLogon"
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: 2510905014
#Date: 2020-08-12
#FileName: login.sh
#********************************************************************
set -e
set -u
[ -e '/etc/nologin' ] && `rm -rf /etc/nologin` && echo "Allow login account"
7.编写脚本 createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息
[root@localhost data]# bash createuesr.sh
Please input UserID: linux
linux is exist
[root@localhost data]# bash createuesr.sh
Please input UserID: abd
abd is create,passwd is user
[root@localhost data]# id abd
uid=1020(abd) gid=1024(abd) groups=1024(abd)
[root@localhost data]# cat createuesr.sh
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: ???
#Date: 2020-08-12
#FileName: createuesr.sh
#********************************************************************
set -e
set -u
read -p "Please input UserID: " user
if id $user &> /dev/null;then
echo "$user is exist"
exit 3
else
useradd $user > /dev/null;
echo "user" | passwd --stdin $user > /dev/null && echo "$user is create,passwd is user"
fi
8.编写脚本 yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息
[root@localhost data]# bash yesorno.sh
请输入yes或no: yes
嗯,真乖!
[root@localhost data]# bash yesorno.sh
请输入yes或no: no
嗯,真听话!
[root@localhost data]# bash yesorno.sh
请输入yes或no: aa
看不懂中文?ZZ!
[root@localhost data]# cat yesorno.sh
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: ???
#Date: 2020-08-12
#FileName: yesorno.sh
#********************************************************************
set -u
set -e
BEGINCOLOR="\033[$[RANDOM%6+31]m"
ENDCOLOR="\033[0m"
read -p "请输入yes或no: " input
case $input in
yes)
echo -e $BEGINCOLOR"嗯,真乖!"$ENDCOLOR
;;
no)
echo -e $BEGINCOLOR"嗯,真听话!"$ENDCOLOR
;;
*)
echo -e $BEGINCOLOR"看不懂中文?ZZ!"$ENDCOLOR
;;
esac
9.编写脚本 filetype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)
[root@localhost data]# bash filetype.sh
Please input file name: test
test 文件为普通文件
[root@localhost data]# bash filetype.sh
Please input file name: filetest
filetest 文件为链接文件
[root@localhost data]# bash filetype.sh
Please input file name: /etc
/etc 文件为目录文件
[root@localhost data]# cat filetype.sh
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: ???
#Date: 2020-08-12
#FileName: filetype.sh
#********************************************************************
set -u
set -e
BEGINCOLOR="\033[$[RANDOM%6+31]m"
ENDCOLOR="\033[0m"
read -p "Please input file name: " file
if [ -L $file ];then
echo -e $BEGINCOLOR"$file 文件为链接文件"$ENDCOLOR
elif [ -d $file ];then
echo -e $BEGINCOLOR"$file 文件为目录文件"$ENDCOLOR
elif [ -f $file ];then
echo -e $BEGINCOLOR"$file 文件为普通文件"$ENDCOLOR
else
echo -e $BEGINCOLOR"$file 文件为其它文件类型"$ENDCOLOR
fi
[root@localhost data]# ll test filetest
lrwxrwxrwx. 1 root root 4 Aug 12 17:58 filetest -> test
-rwxrwx---. 2 root root 24 Aug 11 11:26 test
[root@localhost data]#
10.编写脚本 checkint.sh,判断用户输入的参数是否为正整数
[root@localhost data]# bash checkint.sh
请输入一个参数: 0
0 不是正整数
[root@localhost data]# bash checkint.sh
请输入一个参数: 1
1 为正整数
[root@localhost data]# bash checkint.sh
请输入一个参数: -1
输入格式不对,请输入数字!
[root@localhost data]# cat checkint.sh
#!/bin/bash
#********************************************************************
#Author: Kevin.Wen
#Revision: 1.0
#QQ: ???
#Date: 2020-08-13
#FileName: checkint.sh
#********************************************************************
set -u
set -e
BEGINCOLOR="\033[$[RANDOM%6+31]m"
ENDCOLOR="\033[0m"
read -p "请输入一个参数: " data
if [[ "$data" =~ ^[0-9]+$ ]];then
if [ $data -eq 0 ];then
echo -e $BEGINCOLOR"0 不是正整数"$ENDCOLOR
else
echo -e $BEGINCOLOR"$data 为正整数"$ENDCOLOR
fi
else
echo -e $BEGINCOLOR"输入格式不对,请输入数字!"$ENDCOLOR
fi
[root@localhost data]#