AI智能
改变未来

SHELL脚本编程练习

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

#!/bin/bashecho -e \"\\e[31mHostname: `hostname`\\e[0m\"echo -e \"\\e[32mIP: `hostname -I`\\e[0m\"echo -e \"\\e[33mOS Version: `cat /etc/os-release |grep \"PRETTY\"|cut -d\'=\' -f2`\\e[0m\"echo -e \"\\e[34mKernel Version: `uname -r`\\e[0m\"echo -e \"\\e[35mCPU:`lscpu | grep \"Model name\"|tr -s \' \'|cut -d: -f2`\\e[0m\"echo -e \"\\e[36mMemory Size:`lsmem | grep \'online memory\'|tr -s \' \'|cut -d: -f2`\\e[0m\"echo -e \"\\e[37mDisk Size:`fdisk -l|head -1|cut -d\',\' -f1|cut -d: -f2`\\e[0m\"

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

#!/bin/bashDIR1=\"/etc\"DIR2=\"/backup/etc`date +%F`\"echo -e \"\\e[31mStarting backup...\\e[0m\"if [ -e `dirname $DIR2` ];thensleep 3cp -av $DIR1 $DIR2elsemkdir `dirname $DIR2`sleep 3cp -av $DIR1 $DIR2fiecho -e \"\\e[31mBackup Finished...\\e[0m\"

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

#!/bin/bashecho -e \"\\e[34mDisk of max percentage is `df -h|tr -s \' \' :|grep \'/dev/sd\'|cut -d: -f5|sort -nr|head -1`.\\e[0m\"

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

#!/bin/bashecho -e \"\\e[35mConnections:\\e[0m`netstat -tan|grep \"ESTABLISHED\"|tr -s \' \' :|cut -d: -f6|sort -nr|uniq -c`\"

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

#!/bin/bashread -p \"请至少输入一个文件路径(作为参数):\" ARGif [ $# -lt 0 ];thenecho \"至少应该给一个参数\"exitelsegrep \'^$\' $ARG |wc -lfi

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

#!/bin/bashread -p \"请输入一个主机的IPv4地址:\" IPADDRping -c 1 -W 1 $IPADDR &> /dev/nullif [ $? -eq 0 ];thenecho -e \"\\e[31m此IP地址可访问\\e[0m\"elseecho -e \"\\e[31m此IP地址不可访问\\e[0m\"fi

7、编写脚本 checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满

#!/bin/bashWARNING=80SPACE_USED=`df -h|tr -s \' \' %|cut -d% -f5|sort -nr|head -1`INODE_USED=`df -hi |tr -s \' \' %|cut -d% -f5| sort -nr|head -1`if [ $SPACE_USED -gt $WARNING ] && [ $INODE_USED -gt $WARNING ];thenmail -s DiskWarning rootelseecho \"空间还很充裕\"fi

8、编写脚本 per.sh,判断当前用户对指定参数文件,是否不可读并且不可写

#!/bin/bashread -p \"请输入一个文件名:\" FILENAME[ ! -r $FILENAME -a -w $FILENAME ]if [ $? -eq 0 ];thenecho -e \"\\e[31m此用户对该文件不可读并且不可写\\e[0m\"elseecho -e \"\\e[34m此用户对该文件可读或者可写\\e[0m\"fi

9、编写脚本 excute.sh ,判断参数文件是否为sh后的普通文件,如果是,添加所有人可执行权限, 否则提示用户非脚本文件

#!/bin/bashread -p \"请输入一个文件:\" FILENAME[[ \"$FILENAME\" =~ \\.sh$ ]] && chmod +x $FILENAME || echo -e \"\\e[35m此文件为非脚本文件\\e[0m\"

10、编写脚本 nologin.sh和 login.sh,实现禁止和允许普通用户登录系统

#!/bin/bashFILE=/data/nologin[ ! -f FILE ] && touch /data/nologin && { echo \"已禁止普通用户登陆系统\"; exit ; } || { echo \"已禁止普通用户\"; exit ; }#!/bin/bashFILE=/data/nologin[ -f FILE ] && rm -rf /data/nologin && { echo \"已禁止普通用户登陆系统\"; exit ; } || { echo \"已禁止普通用户\"; exit ; }
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » SHELL脚本编程练习