三、Linux系统shell脚本小结

本文介绍了多个实用的Linux脚本,包括显示系统信息、备份目录、检测硬盘空间、远程连接统计、文件操作权限检查、普通用户登录控制等,帮助管理员轻松管理系统和资源。
摘要由CSDN通过智能技术生成

一、基础脚本

1.1系统信息

显示当前主机系统信息,包括:主机名、IP地址、操作系统版本、内核版本、CPU、内存、硬盘

#vim system_info.sh
 #!/bin/bash
 RED="\E[1;31m"
 GREEN="echo -e \E[1;32m"
 END="\E[0m"
 $GREEN---------------------Host systeminfo--------------------$END
 echo -e "HOSTNAME:    $RED`hostname`$END"
 echo -e "IPADDR:      $RED`ifconfig ethxxx|grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' |head -n1`$END"
 echo -e "OSVERSION:   $RED`cat /etc/redhat-release`$END"
 echo -e "KERNEL:      $RED`uname -r`$END"
 echo -e "CPU:         $RED`lscpu|grep 'Model name'|tr -s ' '|cut -d : -f2`$END"
 echo -e "MEMORY:      $RED`free -h|grep Mem|tr -s ' ' : |cut -d : -f2`$END"
 echo -e "DISK:        $RED`lsblk |grep '^sd' |tr -s ' '|cut -d " " -f4`$END"
 $GREEN--------------------------------------------------------$END
[22:07:18 root@MarkDZ scripts]#bash systeminfo.sh 
---------------------Host systeminfo---------------------------
HOSTNAME:       MarkDZ
IPADDR:         10.0.0.1
OSVERSION:      Rocky Linux release 8.6 (Green Obsidian)
KERNEL:         4.18.0-372.9.1.el8.x86_64
CPU:             Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
 Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
MEMORY:         1.8Gi
DISK:           200G
---------------------------------------------------------------

注:bash -n 检查语法错误;bash -x 观察命令错误、逻辑错误(只能使用bash -x)

1.2每日目录备份

每日将 /etc/目录备份到/backup/etcYYYY-MM-DD中

#vim backup.sh
 #!/bin/bash
 COLOR='echo -e \E[1;35m'
 END='\E[0m'
 BACKUP=/backup
 SRC=/etc
 DATE=`date +%F`
 ${COLOR}Starting backup...$END
 sleep 2
 cp -a $SRC ${BACKUP}${SRC}_$DATE
 ${COLOR}Backup is finished$END
[22:04:14 root@zhao scripts]#bash backup.sh 
Starting backup...
Backup is finished
[22:06:03 root@zhao scripts]#ls -lh /backup/
total 8.0K
drwxr-xr-x. 77 root root 4.0K Feb 22 21:56 etc_2024-02-22

1.3硬盘空间利用率

显示当前硬盘分区中空间利用率最大的值

#vim disk.sh
#!/bin/bash
max_disk_usage=$(df | grep -E "[0-9]{1,3}%" | awk '{print $5}' | tr -d "%" | sort -nr | head -n 1)
echo "硬盘分区中空间利用率最大值为:$max_disk_usage%"
[22:23:43 root@MarkDZ scripts]#. disk.sh 
硬盘分区中空间利用率最大值为:21%

1.4远程主机连接数

显示正连接本主机的每个远程主机的IP和连接数,并将连接数从大到小排序

#vim links.sh
 #!/bin/bash
 w -h | tr -s " " |cut -d " " -f 3 | sort | uniq -c | sort -nr
[22:28:03 root@MarkDZ scripts]#bash links.sh 
      1 10.0.0.152
      1 10.0.0.1

二、进阶脚本

2.1以文件路径作为参数

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

#vim argsnum.sh
 #!/bin/bash
 if [ $# -lt 1 ]; then
    echo "请至少应该给一个参数"
    exit
 elif [ $# -ge 1 ]; then
  file_path="$1"
  if [ -f "$file_path" ]; then
     lines=$(grep "^$" -c "$file_path")
     echo "文件 $file_path 中的空白行数为:$lines"
  else
     echo "请输入有效的文件路径"
  fi
 fi
[22:37:38 root@MarkDZ scripts]#bash argsnum.sh 
请至少应该给一个参数
[22:37:43 root@MarkDZ scripts]#bash argsnum.sh 10.0.0.151
请输入有效的文件路径
[22:38:36 root@MarkDZ scripts]#bash argsnum.sh /data/test.txt 
文件 /data/test.txt 中的空白行数为:0

2.2以主机IP作为参数

接受一个主机的IP地址作为参数,测试是否可连通;如果能ping通,则提示用户"该IP地址可访问";如果ping不通,则提示用户”该IP地址不可访问“。

#vim hostping.sh
 #!/bin/bash
 if [ "$#" -ne 1 ]; then
     echo "请输入一个参数"
 fi
 ipv4="$1"
 ping -c 4 "$ipv4" > /dev/null
 exit_code=$?
 if [ "$exit_code" -eq 0 ]; then
     echo "该IP地址可访问"
 else
     echo "该IP地址不可访问"
 fi
[22:42:07 root@MarkDZ scripts]#bash hostping.sh 
请输入一个参数
ping: : Name or service not known
该IP地址不可访问
[22:42:18 root@MarkDZ scripts]#bash hostping.sh 10.0.0.151
该IP地址可访问

2.3检查磁盘分区空间

检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满

#vim checkdisk.sh
 #!/bin/bash
 disk_usage=$(df | egrep -o "[0-9]{1,3}%" | tr -d "%" | sort -nr | head -n 1)
 if [ $disk_usage -ge 80 ]; then
     wall "警告!当前磁盘空间将满"
 fi
 inode_usage=$(df -i | egrep -o "[0-9]{1,3}%" | tr -d "%" | sort -nr | head -n 1)
 if [ $inode_usage -ge 80 ]; then
     wall "警告!当前inode的使用率已经超过80%"
 fi

2.4指定参数文件是否读写

判断当前用户对指定参数文件,是否不可读并且不可写

#vim per.sh
 #!/bin/bash
 function check() {
     if [ $# -ne 1 ]; then
         echo "请输入一个参数!"
         exit
     fi
     local file="$1"
     if [ -f "$file" ]; then
         local perm
         perm=$(ls -l "$file" | cut -d " " -f 1)
         local read
         read=$(echo "$perm" | cut -c 2)
         local write
         write=$(echo "$perm" | cut -c 3)
         if [ "$read" != "r" -a "$write" != "w" ]; then
            echo
            echo "当前用户对于文件$file具有不可读并且不可写权限!"
            echo
            exit
         else
            echo
            echo "当前用户对于文件$file具有可读或可写权限
            echo
            exit
         fi
     else
         echo
         echo "$file不是一个文件!"
         echo
         exit
      fi
 }
 function main() {
      check "$1"
 }
 main "$1"
[23:09:17 root@MarkDZ ~]#bash /data/scripts/per.sh  test.txt 
/data/scripts/per.sh: line 3: [: missing `]'

当前用户对于文件test.txt具有可读或可写权限

2.5指定后缀的普通文件权限

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

#vim excute.sh
 #!/bin/bash
 read -p "请输入参数文件:" FILE
 [ -f $FILE ] && [[ "$FILE" == *.sh ]] && chmod +x $FILE || echo “非脚本文件”

2.6允许或禁止普通用户登录系统

实现禁止或允许普通用户登录系统

#vim nologin.sh
 #!/bin/bash
 [ -f /etc/nologin ] && echo "已禁止普通用户登录" || { touch /etc/nologin;echo "已开启禁止普通用户登录"; }
#vim login.sh
 #!/bin/bash
 [ -f /etc/nologin ] && { rm -f /etc/nologin ; echo "已开启普通用户登录"; } || echo "已允许普通用户登录"
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值