Linux中shell脚本练习
目录
1.猜数字
2.批量创建用户
3.监控网卡Receive Transmit 数据的变化
4.部署Linux
5.系统性能检测脚本
6.分区脚本
7.数据库脚本
1.猜数字
随机数的生成
使用环境变量RANDOM
,范围是0~32767
编写guest.sh
,实现以下功能:
1、随机生成一个1~20的数字;
2、每猜一次都会提示目前数字与随机数的大小关系,直到用户猜对提示成功;
3、当用户输入exit
时,退出脚本。
#!/bin/bash
let num=$RANDOM%20
while true
doread -p "Please input lucky number:" dateif [ $date = $num ]thenecho "yes !!"breakelif [ "$date" = "exit" ]thenecho "bye!"exitelif [ $date -gt $num ]thenecho "too big"elseecho "too small"fi
done
2.批量创建用户
执行users_create.sh userlist passlist
建立userlist中的用户
设定userlist中的密码为paslist中的密码
当脚本后面跟得文件个数不足两个时报错
当文件行数不一致时报错
当文件不存在时报错
当用户存在时报错
#!/bin/bash
if [ "$#" -lt "2" ]
thenecho "error: 文件不足两个"
elif [ ! -e "$1" ]
thenecho "error: $1 文件不存在"
elif [ ! -e "$2" ]
thenecho "error: $2 文件不存在"
elif [ "`awk 'END{print NR}' $1 `" != "`awk 'END{print NR}' $2 `" ]
thenecho "error: 文件行数不一致"elseLINES=`awk 'END{print NR}' $1 `for LINE in `seq 1 $LINES`doUSERNAME=`sed -n ${LINE}p $1 `PASSWORD=`sed -n ${LINE}p $2 `if id "$USERNAME" &> /dev/nullthenecho "error: $USERNAME 该用户已存在"elseuseradd $USERNAMEecho $PASSWORD | passwd --stdin $USERNAME &> /dev/nullecho "$USERNAME $PASSWORD 用户创建成功"fidone
fi
3.监控网卡Receive Transmit 数据的变化
#!/bin/bash
if [ -z "$1" ]
thenecho Please input net device following $0 !!
elif ifconfig $1 &> /dev/null
thenwhile truedoRS1=$(awk "/$1/{print \$2}" /proc/net/dev)TR1=$(awk "/$1/{print \$10}" /proc/net/dev)sleep 1RS2=$(awk "/$1/{print \$2}" /proc/net/dev)TR2=$(awk "/$1/{print \$10}" /proc/net/dev)echo -ne "Receice: $[$RS2-$RS1]byte/s, Transmit: $[$TR2-$TR1]byte/s"echo -ne "\r"done
elseecho no
fi
4.部署Linux
1.修改IP
2.添加本机解析
3.修改主机名
#!/bin/bash
if [ -z "1" ]
thenecho Please input ID following $0 !!
elif echo $1 | grep -E '^[[:digit:]]{1,}$'
thenecho Please input A number following $0 !!hostnamectl set-hostname vm$1echo 192.168.67.$1 vm$1 >> /etc/hostsDEV_COUNT=`nmcli device show | awk 'BEGIN{N=0}/GENERAL.DEVICE/&&!/lo/{N++}END{ print N}'`[ "$DEV_COUNT" -gt "1" ]&&{for DEVICE in `nmcli device show | awk '/GENERAL.DEVICE/&&!/lo/{ print $2}'`doread -p "Do you want set $DEVICE: " STATEcase $STATE inyes|YES|y|Y)read -p "Please input ip address: " IP
cat > /etc/sysconfig/network-scripts/ifcfg-$DEVICE <<EOF
BOOTPROTO=none
NAME=$DEVICE
DEVICE=$DEVICE
ONBOOT=yes
IPADDR=$IP
PREFIX=24
DNS1=114.114.114.114
EOF;;no|NO|n|N);;*)esacnmcli connection reloadnmcli connection up $DEVICEdone
}
fi
5.系统性能检测脚本
执行check_upload.sh
显示效果如下:
cpu 实际用量%
mem 实际用量%
#!/bin/bash
echo cpu 实际用量 $(printf '%0.2f' `ps ax -o %cpu | awk 'BEGIN{CPU=0}{CPU+=$1}END{print CPU}' `)%
echo mem 实际用量 $(printf '%0.2f' `ps ax -o %mem | awk 'BEGIN{MEM=0}{MEM+=$1}END{print MEM}' `)%
6.分区脚本
用脚本在当前系统添加一个swap分区
swap分区大小为500M并开机自动激活分区
#!/bin/bash
if [ -z "$1" ]
thenecho "error: please input device for swap"
elif [ "$USER" != "root" ]
thenecho "error: please run $0 with root!!"
else[ ! -b "$1" ] && {echo "$1 is not block device"exit}
fi
/usr/bin/expect <<EOF
spawn fdisk $1
expect {"Command" {send "n\r"}
}
expect {"Select" { send "\r";exp_continue }"Partition number" { send "\r";exp_continue }"First sector" { send "\r";exp_continue }"Last sector" { send "+500M\r";exp_continue }"signature" { send "yes\r";exp_continue }"Command" { send "wq\r" }}expect eof
EOFfdisk $1 <<EOF
t82
wq
EOFDISK=`fdisk -l $1 | awk 'END{print $1}'`
mkswap $DISKgrep ^$DISK /etc/fstab &&{swapon -a
} || {echo "$DISK swap swap defaults 0 0 " >> /etc/fstabswapon -a
}
7.数据库脚本
执行db_dump.sh westos(数据库密码)
脚本执行后会备份数据库中所有库到 /mnt/mysqldump目录中
备份文件的名称为库名称.sql 当此文件存在时进行如下判断
输入S跳过备份
输入B备份 库名称.sql 到库名称_backup.sql
输入O时,覆盖源文件
#!/bin/bash
if [ "$USER" != 'root' ]
thenecho "Please run $0 with root"
elif [ -z "$1" ]
thenecho "Error : please input db password following $0"
elif [ -z "`rpm -qa | grep mariadb-server`" ]
thenecho "db server is not installed"
elif [ ! -e "/var/lib/mysql/mysql.sock" ]
thenecho "db server is not runnig"
elseDB_LIST=`mysql -uroot -p$1 -NE -e "SHOW DATABASES;" 2> /dev/null |grep -E "^\*|_schema$" -v`[ "$?" != "0" ] && {echo "ERROR: $1 is wrong password !!"exit 1}
fimkdir -p /mnt/mysqldumpfor DB_NAME in $DB_LIST
doif [ ! -e "/mnt/mysqldump/${DB_NAME}.sql" ]thenmysqldump -uroot -p$1 $DB_NAME > /mnt/mysqldump/${DB_NAME}.sql && echo ${DB_NAME} is backup to /mnt/mysqldump/${DB_NAME}.sqlelseecho "/mnt/mysqldump/${DB_NAME}.sql is exist"echo "you can do this action: [S]kip [B]ackup [O]verwriter"read -p "please input action:" ACTIONcase $ACTION ins|S|Skip|SKIP);;B|b|Backup|BACKUP)mv /mnt/mysqldump/${DB_NAME}.sql /mnt/mysqldump/${DB_NAME}_backup.sqlmysqldump -uroot -p$1 $DB_NAME > /mnt/mysqldump/${DB_NAME}.sql && echo ${DB_NAME} is backup to /mnt/mysqldump/${DB_NAME}.sql;;o|O|Overwriter|OVERWRITER)mysqldump -uroot -p$1 $DB_NAME > /mnt/mysqldump/${DB_NAME}.sql && echo ${DB_NAME} is backup to /mnt/mysqldump/${DB_NAME}.sql;;*)echo "error:wrong action !!"esacfi
done
相关文章:

Linux中shell脚本练习
目录 1.猜数字 2.批量创建用户 3.监控网卡Receive Transmit 数据的变化 4.部署Linux 5.系统性能检测脚本 6.分区脚本 7.数据库脚本 1.猜数字 随机数的生成 使用环境变量RANDOM,范围是0~32767 编写guest.sh,实现以下功能࿱…...

AS/400简介
AS400 AS400 简介AS/400操作系统演示 AS400 简介 在 AS400 中,AS代表“应用系统”。它是多用户、多任务和非常安全的系统,因此用于需要同时存储和处理敏感数据的行业。它最适合中级行业,因此用于制药行业、银行、商场、医院管理、制造业、分销…...

FreeRTOS 中断管理介绍和实操
目录 中断定义 中断优先级 相关注意 中断相关函数 1.队列 2.信号量 3.事件标志组 4.任务通知 5.软件定时器 中断管理实操 中断定义 中断是指在程序执行的过程中,突然发生了某种事件,需要立即停止当前正在执行的程序,并转而处理这个…...

性能测试 —— Jmeter 常用三种定时器!
1、同步定时器 位置:HTTP请求->定时器->Synchronizing Timer 当需要进行大量用户的并发测试时,为了让用户能真正的同时执行,添加同步定时器,用户阻塞线程,知道线程数达到预先配置的数值,才开始执行…...
ROS自学笔记十七:Arbotix
ArbotiX 是一个基于 ROS(Robot Operating System)的机器人控制系统,它旨在为小型机器人提供硬件控制和传感器接口,以便于机器人的运动和感知。以下是有关 ROS 中 ArbotiX 的简介和安装步骤: ArbotiX 简介 ArbotiX 主…...

Mac电脑窗口管理Magnet中文 for mac
Magnet是一款Mac窗口管理工具,它可以帮助用户轻松管理打开的窗口,提高多任务处理效率。以下是Magnet的一些主要特点和功能: 分屏模式支持:Magnet支持多种分屏模式,包括左/右/顶部/底部 1/2 分屏、左/中/右 1/3 分屏、…...
Centos7 部署 Stable Diffusion
参考:https://www.jianshu.com/p/ff81bb76158a 遇到的问题: 1、git clone 比较慢 解决办法:设置代理 https://blog.csdn.net/dszgf5717/article/details/130735389 2、pip install 比较慢 解决办法:更换源或设置代理 https:/…...

【Python】一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格
题目要求:一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格 例:(为了方便观看,以 ▢ 代替空格) 输入:123▢▢abc▢▢▢python 输出:123▢abc▢python 参考…...

嵌入式项目电灯
1、原理,电灯有个正负极,当正确接入电源正负极就能点亮(如正极5v,负极0v),单两边同时接入正极,就不会亮(两端都是5v),所以通过控制电平,来实现控制led等的亮暗 cpu通过给…...

[ubuntu系统下的文本编辑器nano,vim,gedit,文件使用,以及版本更新问题]
文本编辑器概要 在Ubuntu系统下,有许多文本编辑器可供选择,每个编辑器都有其独特的特性和用途。以下是一些常见的文本编辑器: Gedit: 这是Ubuntu默认的文本编辑器,它简单易用,适合基本的文本编辑任务。 安…...

C#WinformListView实现缺陷图片浏览器
C#&Winform&ListView实现缺陷图片浏览器 功能需求图像浏览行间距调整悬浮提示 功能需求 机器视觉检测系统中特别是缺陷检测系统,通常需要进行对已经检出的缺陷图片进行浏览查阅。主要是通过条件筛选查询出所需要的数据,进行分页再展示到界面中。…...
C- qsort()
qsort() 是 C 语言标准库中的一个函数,用于进行数组的排序。其名字“qsort”代表“快速排序”(Quick Sort),这是因为它通常使用快速排序算法进行排序,但具体实现可能因库而异。 以下是 qsort() 的详细介绍:…...

【Apache Flink】基于时间和窗口的算子-配置时间特性
文章目录 前言配置时间特性将时间特性设置为事件时间时间戳分配器周期性水位线分配器创建一个实现AssignerWithPeriodicWatermarks接口的类,目的是为了周期性生成watermark 定点水位线分配器示例 参考文档 前言 Apache Flink 它提供了多种类型的时间和窗口概念&…...
数组的优点和缺点
数组的优点和缺点: 优点: 随机访问:数组支持常量时间的随机访问,即通过索引可以直接访问元素。这使得数组在查找特定元素时非常高效。内存连续性:数组的元素在内存中是连续存储的,这可以减少缓存未命中的…...

接口返回响应,统一封装(ResponseBodyAdvice + Result)(SpringBoot)
需求 接口的返回响应,封装成统一的数据格式,再返回给前端。 依赖 对于SpringBoot项目,接口层基于 SpringWeb,也就是 SpringMVC。 <dependency><groupId>org.springframework.boot</groupId><artifactId&g…...

苹果cms模板MXone V10.7魔改版源码 全开源
苹果cms模板MXone V10.7魔改版源码 全开源 苹果cms模板MXone魔改版短视大气海报样式 安装模板教程说明: 1、将模板压缩包上传到苹果CMS程序/template下解压 2、网站模板选择mxone 模板目录填写html 3、网站模板选择好之后一定要先访问前台,然后再进…...

ArcGIS笔记13_利用ArcGIS制作岸线与水深地形数据?建立水动力模型之前的数据收集与处理?
本文目录 前言Step 1 岸线数据Step 2 水深地形数据Step 3 其他数据及资料 前言 在利用MIKE建立水动力模型(详见【MIKE水动力笔记】系列)之前,需要收集、处理和制作诸多数据和资料,主要有岸线数据、水深地形数据、开边界潮位驱动数…...
一些k8s集群操作命令
参考: 【K8S系列】Pod重启策略及重启可能原因_k8s查看pod重启原因-CSDN博客 #查看加入集群命令 kubeadm token create --print-join-command #kubeadm重置k8s kubeadm reset -f ipvsadm --clear systemctl stop kubelet rm -rf /etc/kubernetes/* reboot …...

pycharm运行R语言脚本(win10环境下安装)
文章目录 简介1. pycharm安装插件2. 安装R语言解释器2.1下载安装包2.2具体安装过程 3.编辑环境变量4 检验是否安装成功:5.安装需要的library6.pycharm中配置安装好的R语言解释器 简介 pycharm 安装 R language for Intellij R language for Intellij 是一个插件&am…...

Java进击框架:Spring-Test(六)
Java进击框架:Spring-Test(六) 前言单元测试模拟对象 集成测试上下文管理和缓存事务管理集成测试的支持类执行SQL脚本WebTestClientMockMvc JDBC测试支持其它注释 前言 Spring团队提倡测试驱动开发(TDD)。Spring团队发现,控制反转…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...

GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...