1、编写脚本 argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数;
[20:01:37 root@sh-pd-lvyq-10-101 script]#cat -A -n ../f1.conf
1 1$
2 2$
3 $
4 $
5 5 5$
6 6 6$
7 $
8 ^I^I8$
9 ^I^I^I$
[20:01:42 root@sh-pd-lvyq-10-101 script]#cat argsnum.sh
#!/bin/bash
#----------------------------------------------
#Author: Gabriel
#Filename: argsnum.sh
#CreateDate: 2021-12-22
#Description: 接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数;
#-----------------------------------------------
ARG=$1
[ $# -lt 1 ]&&{ echo"至少应该给一个参数";exit; }||echo "$1共有`egrep '^[[:space:]]*$' $1|wc -l`空白行"
[20:01:47 root@sh-pd-lvyq-10-101 script]#argsnum.sh ../f1.conf
../f1.conf共有4空白行
[20:02:00 root@sh-pd-lvyq-10-101 script]#
2、编写脚本 hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”;
[20:21:03 root@sh-pd-lvyq-10-101 script]#cat hostping.sh
#!/bin/bash
#----------------------------------
#Author: Gabriel
#FileName: hostping.sh
#CreateDate: 2021-12-22
#Description: 接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”;
#-------------------------------------
IP=$1
ping -c1 -w1 $IP>/dev/null && echo "该IP地址$IP可访问"||echo "该IP地址$IP不可访问"
[20:21:09 root@sh-pd-lvyq-10-101 script]#hostping.sh 192.168.1.5
该IP地址192.168.1.5可访问
[20:21:24 root@sh-pd-lvyq-10-101 script]#hostping.sh 192.168.1.6
该IP地址192.168.1.6不可访问
[20:21:32 root@sh-pd-lvyq-10-101 script]#
3、编写脚本 checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满;
[20:50:22 root@sh-pd-lvyq-10-101 script]#cat checkdisk.sh
#!/bin/bash
#-------------------------------------------
#Author: Gabriel
#FileName: checkdisk.sh
#CreateDate: 2021-12-22
#Description: 检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满;
#-------------------------------------------
WARNING=80
DISK=`df|egrep -o "[0-9]{1,3}%"|egrep -o "[0-9]*"|sort -nr|head -n1`
INODE=`df -i|egrep -o "[0-9]{1,3}%"|egrep -o "[0-9]*"|sort -nr|head -n1`
[ $DISK -ge $WARNING -o $INODE -ge $WARNING ]&&echo "警告!!磁盘:$DISK,INODE:$INODE,空间将满!"||echo "开心玩耍吧"
[20:50:04 root@sh-pd-lvyq-10-101 script]#df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 228610 403 228207 1% /dev
tmpfs 232879 1 232878 1% /dev/shm
tmpfs 232879 917 231962 1% /run
tmpfs 232879 16 232863 1% /sys/fs/cgroup
/dev/mapper/centos-root 52428800 130218 52298582 1% /
/dev/mapper/centos-data 26214400 17 26214383 1% /data
/dev/sda1 172944 342 172602 1% /boot
tmpfs 232879 9 232870 1% /run/user/42
tmpfs 232879 1 232878 1% /run/user/0
[20:49:10 root@sh-pd-lvyq-10-101 script]#df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 914440 0 914440 0% /dev
tmpfs 931516 0 931516 0% /dev/shm
tmpfs 931516 10452 921064 2% /run
tmpfs 931516 0 931516 0% /sys/fs/cgroup
/dev/mapper/centos-root 104806400 4730752 100075648 5% /
/dev/mapper/centos-data 52403200 33012 52370188 1% /data
/dev/sda1 1038336 189204 849132 19% /boot
tmpfs 186304 12 186292 1% /run/user/42
tmpfs 186304 0 186304 0% /run/user/0
[20:49:08 root@sh-pd-lvyq-10-101 script]#bash checkdisk.sh
开心玩耍吧
[20:49:17 root@sh-pd-lvyq-10-101 script]#cp /dev/zero /boot/im.jpg
^C
[20:49:58 root@sh-pd-lvyq-10-101 script]#df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 914440 0 914440 0% /dev
tmpfs 931516 0 931516 0% /dev/shm
tmpfs 931516 10452 921064 2% /run
tmpfs 931516 0 931516 0% /sys/fs/cgroup
/dev/mapper/centos-root 104806400 4730732 100075668 5% /
/dev/mapper/centos-data 52403200 33012 52370188 1% /data
/dev/sda1 1038336 952224 86112 92% /boot
tmpfs 186304 12 186292 1% /run/user/42
tmpfs 186304 0 186304 0% /run/user/0
[20:50:00 root@sh-pd-lvyq-10-101 script]#bash checkdisk.sh
警告!!磁盘:92,INODE:1,空间将满!
4、编写脚本 per.sh,判断当前用户对指定参数文件,是否不可读并且不可写;
[21:08:09 root@sh-pd-lvyq-10-101 script]#cat per.sh
#!/bin/bash
#------------------------------
#Author: Gabriel
#FileName: per.sh
#CreateDate: 2021-12-22
#Description: 判断当前用户对指定参数文件,是否不可读并且不可写;
#----------------------------------------------
FILE=$1
USER=`whoami`
[ -w $1 ] && echo "用户$USER对文件$1有写的权限"||echo "用户$USER对文件$1无写的权限"
[ -r $1 ] && echo "用户$USER对文件$1有读的权限"||echo "用户$USER对文件$1无读的权限"
[21:08:15 root@sh-pd-lvyq-10-101 script]#
5、编写脚本 excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件;
[21:42:58 root@sh-pd-lvyq-10-101 data]#excute.sh /data/f1.conf
/data/f1.conf是非脚本文件
[21:43:05 root@sh-pd-lvyq-10-101 data]#excute.sh /data/script/per.sh
/data/script/per.sh是脚本文件,已为您添加执行权限.
[21:43:20 root@sh-pd-lvyq-10-101 data]#cat script/excute.sh
#!/bin/bash
#---------------------------------
#Author: Gabriel
#FileName: excute.sh
#CreateDate: 2021-12-22
#Description: 判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件;
#-----------------------------------
FILE=$1
[[ $FILE =~ .*\.sh$ ]] && { chmod +x $FILE; echo "$FILE是脚本文件,已为您添加执行权限."; } || echo "$FILE是非脚本文件"
[21:43:38 root@sh-pd-lvyq-10-101 data]#
6、编写脚本 nologin.sh和 login.sh,实现禁止和允许普通用户登录系统
[10:41:04 root@Centos8 data]#cat -n nologin.sh
1 #!/bin/bash
2 #-------------------------------------------
3 #Author: Gabriel
4 #FileName: nologin.sh
5 #CreateDate: 2021-12-23
6 #Description: 实现禁止普通用户登录系统
7 #------------------------------------------
8 #思路,禁止用户登录的常规方法有:usermod -L user;usermod user -s /sbin/nologin.此脚本采用第一种方式。
9 #判断用户是否为普通用户
10 read -p "请输入用户名:" USER
11 USERID=`id $USER|cut -d' ' -f1|egrep -o "[0-9]+"`
12 USERID_MIN=`grep '^UID_MIN\>' /etc/login.defs|egrep -o "[0-9]+"`
13 USERID_MAX=`grep '^UID_MAX\>' /etc/login.defs|egrep -o "[0-9]+"`
14 [ $USERID -ge $USERID_MIN -a $USERID -le $USERID_MAX ] && echo "$USER是普通用户" || { echo "$USER不是普通用户,程序终止!";exit; }
15 usermod -L $USER
16 echo "现在已将此用户登录系统的权限禁用,请知悉;如您想恢复权限,请执行login.sh脚本。谢谢"
[10:41:26 root@Centos8 data]#cat -n login.sh
1 #!/bin/bash
2 #-------------------------------------------
3 #Author: Gabriel
4 #FileName: login.sh
5 #CreateDate: 2021-12-23
6 #Description: 实现允许普通用户登录系统,此脚本是为了恢复nologin.sh脚本禁用的用户
7 #------------------------------------------
8 #思路,nologin.sh采用了usermod -L user的方式禁用,那么恢复就需要使用;usermod -U user的方式;
9 #判断用户是否为普通用户
10 read -p "请输入用户名:" USER
11 USERID=`id $USER|cut -d' ' -f1|egrep -o "[0-9]+"`
12 USERID_MIN=`grep '^UID_MIN\>' /etc/login.defs|egrep -o "[0-9]+"`
13 USERID_MAX=`grep '^UID_MAX\>' /etc/login.defs|egrep -o "[0-9]+"`
14 [ $USERID -ge $USERID_MIN -a $USERID -le $USERID_MAX ] && echo "$USER是普通用户" || { echo "$USER不是普通用户,程序终止!";exit; }
15 usermod -U $USER
16 echo "现在已将此用户登录系统的权限恢复,请知悉。谢谢"
[10:41:54 root@Centos8 data]#