从小白到小白😂

不知道写啥,用我写的脚本练习题凑凑数

1.显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
echo “My hostname is(我的主机名是): hostname
echo “My ipv4address is(我的IPv4地址是): ifconfig|head -n2|tail -n1|tr -s " " ":"|cut -d: -f3
echo “My operating system verision is(我的操作系统版本是): cat /etc/centos-release
echo “My kernel version is(我的内核版本是): uname -r
echo “My the CPU model is(我的CPU型号是): lscpu|grep "Model name"|tr -s " " ":" |cut -d: -f3
echo “My memory size is(我的内存大小是): cat /proc/meminfo|grep -n "MemTotal"|tr -s " " |cut -d: -f3
echo “My hard drive size is(我的硬盘大小是): lsblk|grep "\bsda\b"|tr -s " " ":"|cut -d: -f5

2每日将/etc/目录备份到/root/etcYYYY-mm-dd中
echo -e “\e[1;31mTo start backup(开始备份)!\e[0m”;read -t 3
cp -a /etc/ /root/etc/date +%F
echo -e “\e[1;31mBack up(备份完毕)!\e[0m”

3显示当前硬盘分区中空间利用率最大的值
echo “当前硬盘分区空间利用率最大的值:df|grep "sda"|tr -s " " ":"|cut -d: -f5|sort -nr|head -n1

4显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
echo “当前链接本主机的IPv4和连接数:netstat -nt|tr -s " " ":"|cut -d: -f6|grep "[0-9]"|uniq -c|sort -nr

5计算/etc/passwd文件中的第10个用户和第20用户的ID之和
a=cat /etc/passwd|head -n10|tail -n1|tr -s " " ":"|cut -d: -f3
b=cat /etc/passwd|head -n20|tail -n1|tr -s " " ":"|cut -d: -f3
let sun=a+b
echo “第十个用户与第二十个用户的ID之和:$sun”

6传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
[ $# -ne 2 ] && echo -e “\e[1;31mPlease enter two files!(请输入两个文件!)\e[0m”;exit
a=grep "^$" $1|wc -l
b=grep "^$" $2|wc -l
let sun=a+b
echo “两个文件所有空白行之和:$sun”

7统计三个目录中共有多少个一级子目录和文件
[ $# -ne 3 ] && echo -e “\e[1;31mPlease enter three directories!(请输入三个目录!)\e[0m”;exit
a=ls -l $1|grep -n "^d"|wc -l
b=ls -l $1|grep -n "^-"|wc -l
let c=a+b
echo “${1}目录下一共有${c}个子目录以及文件”
d=ls -l $2|grep -n "^d"|wc -l
f=ls -l $2|grep -n "^-"|wc -l
let g=d+f
echo “${2}目录一一共有${g}个子目录以及文件”
s=ls -l $3|grep -n "^d"|wc -l
w=ls -l $3|grep -n "^-"|wc -l
let x=w+s
let sun=c+g+x
echo “${3}目录下一共有${x}个子目录以及文件”
echo “${1},${2},${3}目录下一共有${sun}个子目录以及文件”

8接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数
[[ $1 -lt 1 ]] && echo -e “\e[1;31mPlease give me a parameter!(请给个参数!)\e[0m” || grep “^$” $1|wc -l

9接受一个主机的IPv4地址做为参数,测试IP格式是否正确,是否可连通
echo {$1}|egrep ‘\<((([0-9]|[1-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|2[0-4][0-9]|25[0-5]))\>’ && (ping -c1 $1 &>/dev/null && echo “The IP address is accessible(该IP地址可访问)” || echo “The IP address is not accessible(该IP地址不可访问)”) ||echo “IP格式不正确”;exit

10检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满
a=df -i|grep “sda”|tr -s ” ” “%”|cut -d% -f5|sort -nr|head -n1
b=df|grep “sda”|tr -s ” ” “%”|cut -d% -f5|sort -nr|head -n1
[ $a -ge 80 ] && echo “The disk node space will be full(磁盘节点空间将满)” || echo “There is plenty of disk space(磁盘节点空间充足)”
[ $b -ge 80 ] && echo “Disk space will be full(磁盘空间将满)” || echo “Ample disk space(磁盘空间充足)”

11判断当前用户对指定参数文件,是否不可读并且不可写
[ -r $1 -a -w $1 ] && echo “The current user can read and write this file(当前用户对此文件可读可写)” || echo “The current user must not read the file(当前用户对此文件不可读不可写)”

12判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
[ -f $1 ] && [[ $1 == *\.sh ]] && chmod u+x,g+x,o+x $1;echo “Execute permission has been added(执行权限已添加)” || echo “It’s not a script file(不是
脚本文件)”

13禁止和充许普通用户登录系统
[ -e /etc/nologin ] && echo “Regular users are not allowed to log in(已禁止普通用户登录)” || (touch /etc/nologin ;echo “Regular users are not allowed to log in(已禁止普通用户登录)”)
[ -e /etc/nologin ] && (rm -f /etc/nologin ;echo “To allow regular users to log in(以允许普通用户登录)”) || echo “To allow regular users to log in(>以允许普通用户登录)”

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96196

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code