脚本实例了解shell脚本(二)

文章介绍了多个Linux管理脚本的编写,包括用户创建脚本,它要求根据两个文件分别创建用户和设置密码;数据库抓取和备份脚本,用于备份所有数据库到指定目录并处理已有备份文件;系统性能检测脚本,关注CPU和内存使用率以及网络流量;此外还涉及添加SWAP分区和网络检测的脚本,以及用户类型判断和用户管理的脚本操作。
摘要由CSDN通过智能技术生成


本节通过实际需求写脚本,通过书写这些脚本,更加熟悉脚本书写的架构和书写的思想;重点归纳:根据文件建立用户和密码脚本、数据库抓取、备份脚本、系统性能检测脚本、添加swap脚本、检测网络是否开启脚本、判断用户类型并建立用户脚本


1. 用户建立脚本:

脚本需求如下:
• 执行users_create.sh userlist passlist
• 建立userlist列表中的用户
• 设定userlist列表中的密码为passlist列表中的密码
• 当脚本后面跟的文件个数不足两时,报错
• 当文件行数不一致时报错
• 当文件不存在时报错
• 当用户存在时报错

在这里插入图片描述
也可参考下述方法:

#################################
# Author:         NeuWings
# Create_Time:    2021/03/10
#################################
#!/bin/bash

[ $USER = "root" ] || {
	echo  "This Script Must Run As Root"
  exit
}

[ $# -eq 2 ] || {
	echo "Please Input Userlist and Passlist"
  exit
}

[ -e $1 ] || {
	echo "Userlist File is not exist"
	exit
}

[ -e $2 ] || {
  echo "Passlist File is not exist"
  exit
}

[ -f $1 ] || {
  echo "$1 is unavailable"
  exit
}

[ -f $2 ] || {
  echo "$2 is unavailable"
  exit
}

USERLINE=`awk 'BEGIN{n=0}{n++}END{print n}' $1`
PASSLINE=`awk 'BEGIN{n=0}{n++}END{print n}' $2`

[ $USERLINE != $PASSLINE ] && {
	echo "Different Lines"
	exit
}

for NUM in `seq 1 $USERLINE`
do
        USERNAME=`sed -n ${NUM}p $1`
        PASSWORD=`sed -n ${NUM}p $2`
				id $USERNAME &> /dev/null && {
          echo $USERNAME is exist!
        } || {
        useradd $USERNAME &> /dev/null || {
					echo "$USERNAME Create Failed,Unknown Error."
				} && {
        	echo $PASSWORD | passwd --stdin $USERNAME &> /dev/null
        	echo "$USERNAME Create success";
					}
        }
done

2. 数据库抓取、备份脚本:

脚本需求如下:
• 执行db_dump.sh westos(数据库密码)
• 脚本执行后会备份数据库中的所有库到/mnt/mysqldump目录中
• 备份文件名称为 “库名称.sql”当此文件存在时报错并询问动作
输入“S”跳过备份,
当输入“B"时备份“库名称.sql”文件为“库名称_backup.sql”,
当输入“O”时,覆盖源文件
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
或:

#################################
# Author:         NeuWings
# Create_Time:    2021/03/10
#################################
#!/bin/bash

DB_ACTION() {
	read -p "Please input your action: " ACTION
	case $ACTION in
		B|b|Backup|backup)
		mv /mnt/mysqldump/$DBNAME.sql /mnt/mysqldump/${DBNAME}_backup.sql
  		mysqldump -uroot -p$1 $DBNAME > /mnt/mysqldump/$DBNAME.sql
		;;
		O|o|Overwrite|overwrite)
		mysqldump -uroot -p$1 $DBNAME > /mnt/mysqldump/$DBNAME.sql
		;;
		S|s|Skip|skip)
		;;
		*)
		echo "Please Input Right Action"
		DB_ACTION $1
		;;
	esac
}

[ -z "$1" ] && {
  echo "Please Input DB's Password"
  exit 1
}

rpm -q mariadb-server &> /dev/null

if [ "$? -ne 0" ]
then
	echo "Error: DBis not installed"
	exit 1
else
	if [ ! -e "/var/lib/mysql/mysql.sock" ]
	then
		echo "Error: DB is not running"
		exit 1
	else
		CHECK_DB=`mysql -uroot -p$1 -NEe "SHOW DATABASES;" 2> /dev/null`
		[ "$?" -ne "0" ] && {
			echo "Error: Wrong Password!"
			exit 1
		} || {
			DB_List=`echo "$CHECK_DB" | awk '!/^*|schema$/{print}'`
		}
	fi
fi

if [ ! -e "/mnt/mysqldump" ]
then
	mkdir /mnt/mysqldump
elif [ ! -d "/mnt/mysqldump" ]
then
	ehco "Error: /mnt/mysqldump is exist but not a directory"
	exit 1
fi

for DBNAME in $DB_List
do
	if [ ! -e "/mnt/mysqldump/$DBNAME.sql" ]
	then
		mysqldump -uroot -p$1 $DBNAME > /mnt/mysqldump/$DBNAME.sql
	else
		echo "/mnt/mysqldump/$DBNAME.sql is exist"
		echo "please choose what to do: "
		echo "[S]kip [B]ackup [O]verwrite"
		DB_ACTION $1
	if
done

3. 系统性能检测脚本:

脚本需求如下:
• 执行check_upload.sh:
显示效果如下

cpu: 实际用量%

在这里插入图片描述

mem: 实际用量%

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

网卡的流量

在这里插入图片描述
cat /proc/net/dev |awk ‘/eth0/{print $2}’

cat /proc/net/dev |awk ‘/eth0/{print $10}’

4.用脚本在当前系统中添加一个swap分区

swap分区大小为500M并开机自动激活此分区
在这里插入图片描述
在这里插入图片描述

5.检测172.25.254.1-172.25.254.10网络是否开启

在这里插入图片描述

6.case脚本执行useradd和userdel

在这里插入图片描述

7.输入用户名称,判断用户类型,若用户不存在,建立此用户,并根据提示建立用户密码

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值