从小白到小白😂

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

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

相关推荐

  • liniux课程第一周总结

    第一天课程内容 MBR分区类型:主分区:1-4,一块硬盘最多4个主分区,不可以分小区,可以用来启动操作系统(系统分区),直接建文件系统,存放数据扩展分区:一块硬盘最多一个扩展分区,可以没有,加主分区最多4个,不能创建文件系统,可以再划分更小的分区(即逻辑分区)逻辑驱动器(分区):可以创建文件系统,存放数据 系统分区:启动操作系统的分区启动分区:安装操作系统的…

    Linux笔记 2018-04-01
  • 硬链接

    软连接:

    Linux笔记 2018-04-01
  • DNS搭建

    DNS:domain name service ,协议(c/s,53/udp,53/tcp dns协议的实现 udp:user datagram protocol,无连接协议 top level domain:顶级域名(tld) 主dns服务器:维护负责解析的域内解析库服务器:解析库有管理员维护 从dns服务器:从主dns服务器或者其它dns服务器上复制(区…

    2018-06-11
  • linux 学习5

    1. RPM包管理 1.1 RPM简介 RPM类似于Windows系统中.exe的软件安装程序,用户可以使用它自行安装和管理Linux上的应用程序和系统工具; RPM软件包文件都是以.rpm为后缀,一般采用这样的命名格式:软件包名称 – 版本号 – 修正版 . 硬件平台 . rpm。 1.2 RPM命令的使用方法 查询:rpm {-q | –query} […

    2018-07-21
  • 第八周作业

    1、简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理
    2、描述awk命令用法及示例(至少3例)
    3、描述awk函数示例(至少3例)

    Linux笔记 2018-06-29
  • 第三周作业

    1 列出当前系统上所有已经登陆的用户的用户名,注意:同一个用户名登陆多次,则只显示一次。
    2 取出最后登陆到当前系统的用户的相关信息。
    3 取出当前系统上被用户当作其默认shell的最多的那个shell.
    4 将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5 取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6 列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字装换为大写后保存至/tmp/etc.conf文件中。
    7 显示/var目录下一级子目录或文件的总个数。
    8 取出/etc/group文件中第三个字符段数值最小的10个组的名字。
    9 将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10. 请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)创建组distro, 其GID为2016
    (2)创建用户mandriva, 其ID号为1005,基本组为distro
    (3)创建用户mageia, 其ID号为1100,家目录为/home/linux
    (4)给用户mageia添加密码,密码为mageedu
    (5)删除mandriva, 但保留其家目录
    (6)创建用户slackware, 其ID号为2002, 基本组为distro, 附加组为peguin
    (7)修改slackware的默认shell为/bin/tcsh
    (8)为用户slackware的新增附加组admins

    2018-06-05