shell脚本基础练习

一、

1、编写脚本systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

[root@centos7 script]# cat systeminfo.sh 
#!/bin/bash
echo "当前主机名:`hostname`"
echo "IPv4地址:`ifconfig ens33 | grep "inet " | tr -s ‘ ‘ | cut -d‘ ‘ -f3`"
echo "操作系统版本:`uname -a | cut -d‘ ‘ -f1,2`"
echo "内核版本:`uname -a | cut -d‘ ‘ -f3`"
echo "CPU型号:`lscpu | grep ‘Model name:‘ | tr -s ‘ ‘ | cut -d: -f2`"
echo "内存大小:`free -h | tail -n +2 | head -1 | tr -s ‘ ‘ | cut -d‘ ‘ -f2`"
echo "根目录磁盘大小:`df -h | grep ‘/dev/sd.*\/$‘ | tr -s ‘ ‘ | cut -d‘ ‘ -f4`"
[root@centos7 script]# ./systeminfo.sh 
当前主机名:centos7
IPv4地址:10.0.0.150
操作系统版本:Linux centos7
内核版本:3.10.0-1160.el7.x86_64
CPU型号: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
内存大小:972M
根目录磁盘大小:99G

2、编写脚本backup.sh,可实现每日将/etc/目录备份到/backup/etcYYYY-mm-dd中

[root@centos7 script]# cat backup.sh 
#!/bin/bash
mkdir -p /backup &> /dev/null
cp -a /etc/ /backup/etc`date +%F`
echo "done !"

3、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值

[root@centos7 script]# cat disk.sh 
#!/bin/bash
df | grep "^/dev/sd*" | tr -s   | cut -d  -f5 | sort -nr | head -1
[root@centos7 script]# ./disk.sh 
13%

4、编写脚本links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

[root@centos7 script]# cat links.sh 
#!/bin/bash

echo "当前连接服务器IP数:`netstat -tan | grep "ESTAB" | tr -s ‘ ‘ ‘:‘ | cut -d: -f6 | sort | uniq -c | sort -nr`"
[root@centos7 script]# ./links.sh 
当前连接服务器IP数:      3 10.0.0.1

 二、

1、编写脚本argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

[root@centos7 script]# cat argsnum.sh 
#!/bin/bash
ARGS_NUM=$#
[ "$ARGS_NUM" -lt 1 ] && { echo "至少传递一个参数";exit; }
if [ -f $1 ]; then
    grep -E "^$" $1 | wc -l
else
    echo "传递不是有效文件"
fi
[root@centos7 script]# cat test.txt 
你好吗

hello

你在哪

哈哈
[root@centos7 script]# ./argsnum.sh test.txt 
3

2、编写脚本hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该P地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

[root@centos7 script]# cat hostping.sh 
#!/bin/bash
IP=$1
if [ $# -lt 1 ];then
    echo "请至少传入一个参数"
    exit
fi
if [[ ! "$IP" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$  ]];then
    echo "请传入正确的IPv4地址"
    exit
fi
ping -c 1 "$IP" &> /dev/null
if [ $? -eq 0 ];then
    echo "该IP地址可以访问"
else
    echo "该IP地址不可以访问"
fi

[root@centos7 script]# ./hostping.sh 10.0.0.1
该IP地址可以访问
[root@centos7 script]# ./hostping.sh 10.0.0.10
该IP地址不可以访问
[root@centos7 script]# ./hostping.sh 10.0.0.1022
请传入正确的IPv4地址

3、编写脚本 checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满
4、编写脚本per.sh,判断当前用户对指定参数文件,是否不可读并且不可写
5、编写脚本excute.sh,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
6、编写脚本nologin.sh和login.sh,实现禁止和允许普通用户登录系统

 

shell脚本基础练习

上一篇:Redis 订阅发布(重点中的重点)


下一篇:「Linux」- 修改网卡接口名 @20210331