当前位置: 首页 > news >正文

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&#xff0c;范围是0&#xff5e;32767 编写guest.sh&#xff0c;实现以下功能&#xff1…...

AS/400简介

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

FreeRTOS 中断管理介绍和实操

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

性能测试 —— Jmeter 常用三种定时器!

1、同步定时器 位置&#xff1a;HTTP请求->定时器->Synchronizing Timer 当需要进行大量用户的并发测试时&#xff0c;为了让用户能真正的同时执行&#xff0c;添加同步定时器&#xff0c;用户阻塞线程&#xff0c;知道线程数达到预先配置的数值&#xff0c;才开始执行…...

ROS自学笔记十七:Arbotix

ArbotiX 是一个基于 ROS&#xff08;Robot Operating System&#xff09;的机器人控制系统&#xff0c;它旨在为小型机器人提供硬件控制和传感器接口&#xff0c;以便于机器人的运动和感知。以下是有关 ROS 中 ArbotiX 的简介和安装步骤&#xff1a; ArbotiX 简介 ArbotiX 主…...

Mac电脑窗口管理Magnet中文 for mac

Magnet是一款Mac窗口管理工具&#xff0c;它可以帮助用户轻松管理打开的窗口&#xff0c;提高多任务处理效率。以下是Magnet的一些主要特点和功能&#xff1a; 分屏模式支持&#xff1a;Magnet支持多种分屏模式&#xff0c;包括左/右/顶部/底部 1/2 分屏、左/中/右 1/3 分屏、…...

Centos7 部署 Stable Diffusion

参考&#xff1a;https://www.jianshu.com/p/ff81bb76158a 遇到的问题&#xff1a; 1、git clone 比较慢 解决办法&#xff1a;设置代理 https://blog.csdn.net/dszgf5717/article/details/130735389 2、pip install 比较慢 解决办法&#xff1a;更换源或设置代理 https:/…...

【Python】一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格

题目要求&#xff1a;一个句子中也许有多个连续空格&#xff0c;过滤掉多余的空格&#xff0c;只留下一个空格 例&#xff1a;&#xff08;为了方便观看&#xff0c;以 ▢ 代替空格&#xff09; 输入&#xff1a;123▢▢abc▢▢▢python 输出&#xff1a;123▢abc▢python 参考…...

嵌入式项目电灯

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

[ubuntu系统下的文本编辑器nano,vim,gedit,文件使用,以及版本更新问题]

文本编辑器概要 在Ubuntu系统下&#xff0c;有许多文本编辑器可供选择&#xff0c;每个编辑器都有其独特的特性和用途。以下是一些常见的文本编辑器&#xff1a; Gedit&#xff1a; 这是Ubuntu默认的文本编辑器&#xff0c;它简单易用&#xff0c;适合基本的文本编辑任务。 安…...

C#WinformListView实现缺陷图片浏览器

C#&Winform&ListView实现缺陷图片浏览器 功能需求图像浏览行间距调整悬浮提示 功能需求 机器视觉检测系统中特别是缺陷检测系统&#xff0c;通常需要进行对已经检出的缺陷图片进行浏览查阅。主要是通过条件筛选查询出所需要的数据&#xff0c;进行分页再展示到界面中。…...

C- qsort()

qsort() 是 C 语言标准库中的一个函数&#xff0c;用于进行数组的排序。其名字“qsort”代表“快速排序”&#xff08;Quick Sort&#xff09;&#xff0c;这是因为它通常使用快速排序算法进行排序&#xff0c;但具体实现可能因库而异。 以下是 qsort() 的详细介绍&#xff1a…...

【Apache Flink】基于时间和窗口的算子-配置时间特性

文章目录 前言配置时间特性将时间特性设置为事件时间时间戳分配器周期性水位线分配器创建一个实现AssignerWithPeriodicWatermarks接口的类&#xff0c;目的是为了周期性生成watermark 定点水位线分配器示例 参考文档 前言 Apache Flink 它提供了多种类型的时间和窗口概念&…...

数组的优点和缺点

数组的优点和缺点&#xff1a; 优点&#xff1a; 随机访问&#xff1a;数组支持常量时间的随机访问&#xff0c;即通过索引可以直接访问元素。这使得数组在查找特定元素时非常高效。内存连续性&#xff1a;数组的元素在内存中是连续存储的&#xff0c;这可以减少缓存未命中的…...

接口返回响应,统一封装(ResponseBodyAdvice + Result)(SpringBoot)

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

苹果cms模板MXone V10.7魔改版源码 全开源

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

ArcGIS笔记13_利用ArcGIS制作岸线与水深地形数据?建立水动力模型之前的数据收集与处理?

本文目录 前言Step 1 岸线数据Step 2 水深地形数据Step 3 其他数据及资料 前言 在利用MIKE建立水动力模型&#xff08;详见【MIKE水动力笔记】系列&#xff09;之前&#xff0c;需要收集、处理和制作诸多数据和资料&#xff0c;主要有岸线数据、水深地形数据、开边界潮位驱动数…...

一些k8s集群操作命令

参考&#xff1a; 【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 检验是否安装成功&#xff1a;5.安装需要的library6.pycharm中配置安装好的R语言解释器 简介 pycharm 安装 R language for Intellij R language for Intellij 是一个插件&am…...

Java进击框架:Spring-Test(六)

Java进击框架&#xff1a;Spring-Test&#xff08;六&#xff09; 前言单元测试模拟对象 集成测试上下文管理和缓存事务管理集成测试的支持类执行SQL脚本WebTestClientMockMvc JDBC测试支持其它注释 前言 Spring团队提倡测试驱动开发(TDD)。Spring团队发现&#xff0c;控制反转…...

【uniapp】(6) uniapp中使用vuex

uniapp内置了vuex&#xff0c;不需要通过npm重新安装&#xff0c;直接引用即可1、创建 Vuex Store&#xff08;1&#xff09;在uniapp项目根目录下创建 store/index.jsimport Vue from vue import Vuex from vuexVue.use(Vuex)const store new Vuex.Store({//存放状态state: …...

5个高效乐谱资源获取技巧:音乐爱好者的MuseScore下载指南

5个高效乐谱资源获取技巧&#xff1a;音乐爱好者的MuseScore下载指南 【免费下载链接】dl-librescore Download sheet music 项目地址: https://gitcode.com/gh_mirrors/dl/dl-librescore 在数字音乐时代&#xff0c;获取高质量乐谱资源往往面临格式限制、下载门槛等问题…...

如何通过QtScrcpy实现跨平台键鼠映射?4个技术要点让PC精准操控Android游戏

如何通过QtScrcpy实现跨平台键鼠映射&#xff1f;4个技术要点让PC精准操控Android游戏 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy QtScrcpy作为一款开源的Android设备投屏与控制…...

AI绘画新体验:灵毓秀-牧神-造相Z-Turbo快速入门,小白也能画古风女神

AI绘画新体验&#xff1a;灵毓秀-牧神-造相Z-Turbo快速入门&#xff0c;小白也能画古风女神 1. 认识灵毓秀-牧神-造相Z-Turbo 1.1 什么是灵毓秀-牧神-造相Z-Turbo 灵毓秀-牧神-造相Z-Turbo是一款专门用于生成《牧神记》中灵毓秀角色图像的AI绘画模型。它基于Xinference框架部…...

戴尔G15散热控制神器:开源替代AWCC的完整指南

戴尔G15散热控制神器&#xff1a;开源替代AWCC的完整指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否厌倦了戴尔G15笔记本自带的AWCC软件&#xff1…...

春联生成模型-中文-base环境隔离部署:Anaconda虚拟环境配置指南

春联生成模型-中文-base环境隔离部署&#xff1a;Anaconda虚拟环境配置指南 每次想尝试一个新的AI模型&#xff0c;最头疼的可能不是模型本身&#xff0c;而是环境配置。装了这个包&#xff0c;发现和之前项目的包版本冲突&#xff1b;好不容易跑起来&#xff0c;结果报了一堆…...

Linux中的more 和 less区别对比分析

在 Linux/Unix 系统中&#xff0c;more 和 less 都是用于分页查看文本文件的命令&#xff0c;但 less 是 more 的增强版&#xff0c;功能更强大。以下是它们的核心区别和用法对比&#xff1a;1. 基础功能对比特性moreless&#xff08;更强大&#xff09;向前翻页❌ 仅支持向下翻…...

Claude Code交互日志分析:用BERT分割理解AI编程助手的对话逻辑

Claude Code交互日志分析&#xff1a;用BERT分割理解AI编程助手的对话逻辑 你有没有想过&#xff0c;当你向Claude Code这样的AI编程助手提问时&#xff0c;它到底是怎么理解你那一长串话的&#xff1f;比如&#xff0c;你可能会一口气问&#xff1a;“帮我写个Python函数来读…...

Alibaba DASD-4B Thinking 对话工具入门:Anaconda虚拟环境配置与模型调用

Alibaba DASD-4B Thinking 对话工具入门&#xff1a;Anaconda虚拟环境配置与模型调用 想试试最新的对话模型&#xff0c;但被复杂的依赖和版本冲突搞得头大&#xff1f;这感觉我太懂了。很多朋友在接触像Alibaba DASD-4B这类大模型时&#xff0c;第一步就卡在了环境配置上&…...

从下载到调用:AutoGLM-Phone-9B完整部署与OpenAI接口对接实战

从下载到调用&#xff1a;AutoGLM-Phone-9B完整部署与OpenAI接口对接实战 1. 为什么你需要关注AutoGLM-Phone-9B 想象一下&#xff0c;你正在开发一款手机应用&#xff0c;需要让用户上传一张照片&#xff0c;然后AI不仅能看懂照片内容&#xff0c;还能用语音回答用户的问题&…...