从小白到小白😂

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

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

(0)
上一篇 2018-04-15 20:37
下一篇 2018-04-15 21:00

相关推荐

  • linux基础

    计算机的组成及其功能 计算机初始设计出的时候,就遵循冯诺依曼体系,主要有四部分组成,cpu(中央处理器;运算器和控制器),存储器,输入设备和输出设备 cpu: 运算器、控制器、寄存器,缓存(为了提高cpu性能的加速部件) 存储器:内存,RAM(随机访问存储器) 输入:对计算机下指令,提供让机器操作的数据等;不如键盘,鼠标 输出:输出数据加工后的结果;比如显示…

    Linux笔记 2018-06-24
  • shell脚本编程基础

    简要概括一点脚本小知识

    Linux笔记 2018-04-14
  • linux系统的安装

    centos系统安装

    2018-07-22
  • 阿X吃鸡录————第四站

    diff -u a b >ab 生成ab即为补丁,在a或者b文件丢失时 patch -b a/b ab 生成丢失的文件内容 etc/下创建nologin文件会使普通文件无法登陆(普通用户登陆会显示文件中的内容) [-t num ] 判断是否文件在终端被打开(文件描述符) read 对变量赋值 echo -e “ \c” read name 会不产生换行…

    Linux笔记 2018-08-06
  • 马哥网络班第31期——第一周作业

    1、描述计算机的组成及其功能。
    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定

    Linux笔记 2018-07-06