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

Linux 16个常用脚本(初级)练习

(1)编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户

#!/bin/bash
# 编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户
# 不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默
# 认的 123456 作为默认密码。

read -p "请输入用户名:" user


#使用‐z 可以判断一个变量是否为空,如果为空,提示用户必须输入账户名,并退出脚本,退出码为 2
#没有输入用户名脚本退出后,使用$?查看的返回码为 2

if [ -z $user ]; thenecho " 您不需要输入账户名" exit 2
fi 
#使用 stty ‐echo 关闭 shell 的回显功能
#使用 stty  echo 打开 shell 的回显功能
stty -echo 
read -p "请输入密码:" pass
stty echo 
pass=${pass:-123456}
useradd "$user"
echo "$pass" | passwd --stdin "$user"


(2)使用脚本对输入的三个整数进行排序

#!/bin/bash# 依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字
read -p " 请输入一个整数:" num1
read -p " 请输入一个整数:" num2
read -p " 请输入一个整数:  " num3# 不管谁大谁小,最后都打印 echo "$num1,$num2,$num3"
# num1 中永远存最小的值,num2 中永远存中间值,num3 永远存最大值
# 如果输入的不是这样的顺序,则改变数的存储顺序,如:可以将 num1 和 num2 的值对调
tmp=0
# 如果 num1 大于 num2,就把 num1 和和 num2 的值对调,确保 num1 变量中存的是最小值
if [ $num1 -gt $num2 ];thentmp=$num1num1=$num2num2=tmp
fi
# 如果 num1 大于 num3,就把 num1 和 num3 对调,确保 num1 变量中存的是最小值
if [ $num1 -gt $num3 ];thentmp=$num1num1=$num3num3=$tmp
fi
# 如果 num2 大于 num3,就把 num2 和 num3 对调,确保 num2 变量中存的是最小值
if [ $num2 -gt $num3 ];thentmp=$num2num2=$num3num3=$tmp
fi
echo "排序后数据(从小到大)为:$num1,$num2,$num3"


(3)根据计算机当前时间,返回问候语,可以将该脚本设置为开机启动

#!/bin/bash
# 根据计算机当前时间,返回问候语,可以将该脚本设置为开机启动 

# 00‐12 点为早晨,12‐18 点为下午,18‐24 点为晚上
# 使用 date 命令获取时间后,if 判断时间的区间,确定问候语内容

tm=$(date +%H)
if [ $tm -le 12 ];thenmsg="Good Morning $USER"
elif [ $tm -gt 12 -a $tm -le 18 ];thenmsg="Good Afternoon $USER"
elsemsg="Good Night $USER"
fi
echo "当前时间是:$(date +"%Y‐%m‐%d %H:%M:%S")"
echo -e "\033[34m$msg\033[0m"


(4)将 I lov cls 写入到 txt 文件中

#!/bin/bashcd /home/wenmin/
touch wenxing.txt
echo "I lov cls" >>wenxing.txt


(5)脚本编写 for 循环判断

#!/bin/bashs=0;
for((i=1;i<100;i++))
do s=$[$s+$i]
done echo $sr=0;
a=0;
b=0;
for((x=1;x<9;x++))
do a=$[$a+$x] 
echo $x
done
for((y=1;y<9;y++))
do b=$[$b+$y]
echo $ydoneecho $r=$[$a+$b]


(6)脚本编写 for 循环判断

#!/bin/bashfor i in "$*"
do echo "wenmin xihuan $i"
donefor j in "$@"
do echo "wenmin xihuan $j"
done


(7)脚本 每周 5 使用 tar 命令备份/var/log 下的所有日志文件

#!/bin/bash
# 每周 5 使用 tar 命令备份/var/log 下的所有日志文件

# vim  /root/logbak.sh


# 编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖
# 注意 date 命令需要使用反引号括起来,反引号在键盘<tab>键上面

tar -czf log-`date +%Y%m%d`.tar.gz /var/log # crontab -e #编写计划任务,执行备份脚本
00 03 * * 5 /home/wenmin/datas/logbak.sh


(8)脚本编写 求和 函数运算 function xx()

#!/bin/bashfunction sum()
{s=0;s=$[$1+$2]echo $s
}
read -p "input your parameter " p1
read -p "input your parameter " p2sum $p1 $p2function multi()
{r=0;r=$[$1/$2]echo $r
}
read -p "input your parameter " x1
read -p "input your parameter " x2multi $x1 $x2v1=1
v2=2
let v3=$v1+$v2
echo $v3


(9)脚本编写 case — esac 分支结构表达式

#!/bin/bash case $1 in 
1) echo "wenmin "
;;
2)echo "wenxing "
;; 
3)  echo "wemchang "
;;
4) echo "yijun"
;;
5)echo "sinian"
;;
6)  echo "sikeng"
;;
7) echo "yanna"
;;
*)echo "danlian"
;; 
esac


(10)# 定义要监控的页面地址,对 tomcat 状态进行重启或维护

#!/bin/sh  
# function:自动监控tomcat进程,挂了就执行重启操作  
# author:huanghong  
# DEFINE  # 获取tomcat PPID  
TomcatID=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-7.0.75'|grep -v 'grep'|awk '{print $2}')  # tomcat_startup  
StartTomcat=/opt/apache-tomcat-7.0.75/bin/startup.sh  #TomcatCache=/usr/apache-tomcat-5.5.23/work  # 定义要监控的页面地址  
WebUrl=http://192.168.254.118:8080/# 日志输出  
GetPageInfo=/dev/null  
TomcatMonitorLog=/tmp/TomcatMonitor.log  Monitor()  {  echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"  if [ $TomcatID ]then  echo "[info]tomcat进程ID为:$TomcatID."  # 获取返回状态码  TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})  if [ $TomcatServiceCode -eq 200 ];then  echo "[info]返回码为$TomcatServiceCode,tomcat启动成功,页面正常."  else  echo "[error]访问出错,状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"  echo "[error]开始重启tomcat"  kill -9 $TomcatID  # 杀掉原tomcat进程  sleep 3  #rm -rf $TomcatCache # 清理tomcat缓存  $StartTomcat  fi  else  echo "[error]进程不存在!tomcat自动重启..."  echo "[info]$StartTomcat,请稍候......"  #rm -rf $TomcatCache  $StartTomcat  fi  echo "------------------------------"  }  Monitor>>$TomcatMonitorLog


(11)通过位置变量创建 Linux 系统账户及密码

#!/bin/bash

# 通过位置变量创建Linux 系统账户及密码

# $1 是执行脚本的第一个参数,$2  是执行脚本的第二个参数

useradd "$1"
echo "$2" | passwd --stdin "$1"


(12)对变量的传入与获取个数及打印

#!/bin/bash
echo "$0 $1 $2 $3"  // 传入三个参数
echo $#    //获取传入参数的数量
echo $@    //打印获取传入参数
echo $*    //打印获取传入参数


(13)实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员

#!/bin/bash

# 实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员# 提取根分区剩余空间

disk_size=$(df / | awk '/\//{print $4}')# 提取内存剩余空空间
mem_size=$(free | awk '/Mem/{print $4}')
while :
do 
# 注意内存和磁盘提取的空间大小都是以 Kb 为单位
if  [  $disk_size -le 512000 -a $mem_size -le 1024000  ]
thenmail  ‐s  "Warning"  root  <<EOFInsufficient resources,资源不足
EOF
fi
done


(14)检查指定目录下是否存在 对应 文件

#!/bin/bashif [ -f /home/wenmin/datas ]
then 
echo "File exists"
fi


(15)脚本定义while循环语句

#!/bin/bashif [ -f /home/wenmin/datas ]
then 
echo "File exists"
fi[root@rich datas]# cat while.sh 
#!/bin/bashs=0
i=1
while [ $i -le 100 ]
dos=$[$s + $i]i=$[$i + 1]
doneecho $s
echo $i


(16)一键部署 LNMP(RPM 包版本)

#!/bin/bash # 一键部署 LNMP(RPM 包版本)
# 使用 yum 安装部署 LNMP,需要提前配置好 yum 源,否则该脚本会失败
# 本脚本使用于 centos7.2 或 RHEL7.2
yum -y install httpd
yum -y install mariadb mariadb-devel mariadb-server
yum -y install php php-mysqlsystemctl start httpd mariadb
systemctl enable httpd mariadb


(17)读取控制台传入参数

#!/bin/bash
read -t 7 -p "input your name " NAME
echo $NAMEread -t 11 -p "input you age " AGE
echo $AGEread -t 15 -p "input your friend " FRIEND
echo $FRIENDread -t 16 -p "input your love " LOVE
echo $LOVE


(18)脚本实现 复制

#!/bin/bashcp $1 $2


(19)脚本实现文件存在与否的判断

#!/bin/bashif [ -f file.txt ];thenecho "文件存在"
else echo "文件不存在"
fi

相关文章:

Linux 16个常用脚本(初级)练习

&#xff08;1&#xff09;编写脚本&#xff1a;提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户 #!/bin/bash # 编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户 # 不输入账户名,则提示必须输入账户名并退出脚本;如果用…...

接口测试及接口测试工具【Postman】相关的面试题

Postman是一种接口调试与http接口测试的工具&#xff0c;可以非常方便的模拟get、post或其他请求来调试和测试接口 文章目录 Postman优点Postman使用流程Postman参数化有哪几种方式Postman如何设置关联接口测试能发现什么问题如何分析bug是前端还是后端当一个接口出现异常时&am…...

android 怎么自定义view

首先了解view的绘制流程&#xff1a; 所以onmeasure ---测量view onlayout---确定view大小----》所以继承ViewGroup必须要重写onlayout&#xff0c;确定子view 而onDraw----是继承view时候需要操作的。 所以&#xff1a;自定义ViewGroup一般是利用现有的组件根据特定的布局…...

JavaScript的事件

JavaScript的事件 先写一个test测试函数以查看事件是否触发 function test(){var ddocument.getElementById("tid");console.log("测试成功"d) //控制台输出 }onclick 鼠标单击事件&#xff1a; <input type"button" id"tid" va…...

android 简单快速 自定义dialog(简单好用,不需要设置样式)

1.MyDialog代码&#xff1a; public class MyDialog{private Activity activity;private ViewGroup contentView;private View view;public MyDialog(Activity activity) {this.activityactivity;contentView activity.findViewById(android.R.id.content);viewLayoutInflate…...

JAVA代理模式梳理

什么是代理模式 代理模式&#xff1a;为其他对象提供一种代理&#xff0c;用以控制对这个对象的访问&#xff1b; 我们使用代理对象&#xff0c;可以在不修改目标对象的基础上&#xff0c;增强主业务逻辑&#xff1b;比如说我们的系统中有一个登录接口&#xff0c;我们要对这个…...

推荐几个线上兼职,每天两小时收入几十到一百

在当今数字化时代&#xff0c;居家兼职成为越来越多人的选择。借助互联网和技术的进步&#xff0c;我们能够轻松利用自己的时间和技能在网上赚取额外的收入。本文将为您介绍几个简单而有潜力的居家网上兼职小项目&#xff0c;帮助您实现财务自由。 1.千金宝库做任务赚钱 千金…...

excel封装和ddt D17

1&#xff09;excel封装 openpyxl的操作 2&#xff09;ddt 数据驱动测试 ## openpyxl的操作 1.安装&#xff1a;pip install openpyxl 2.导入 openpyxl&#xff1a; import openpyxl 3.workbook对象&#xff1a;工作簿&#xff0c;openpyxl.load_workbook() 4.sheet对象&a…...

PHP8编译安装

CentOS8编译安装PHP8 PHP&#xff0c;全称Hypertext Preprocessor&#xff08;超文本预处理器&#xff09;&#xff0c;是一种通用开源脚本语言。它特别适合于web开发&#xff0c;并能嵌入HTML中。现在主要用于PHP网站中实现动态网站功能&#xff0c;常规我们使用nginx、apache…...

3D Gaussian Splatting for Real-Time Radiance Field Rendering(慢慢啃,还是挺复杂的)

三个关键要素 从相机配准的过程中得到的稀疏点云开始&#xff0c;使用3D Gaussian表示场景; 3D Gaussian: 是连续体积辐射场能够防止不必要的空空间优化。对 3D Gaussion进行交叉优化和密度控制: 优化各向异性血方差对场景精确表示。使用快速可视感知渲染算法来进行快速的训练…...

二叉树<II>:二叉树的四种遍历方式代码实现Python3

今天我们来介绍的是二叉树的「前序」、「中序」、「后序」、「层序」四种遍历方式如何用代码实现。 还不知道这四种遍历方式原理的可以看另一篇文章&#xff1a;二叉树&#xff1c;I&#xff1e;&#xff1a;概念及二叉树的前序遍历、中序遍历、后序遍历原理 1. 相关题目 这…...

vite ts vue 项目提示 . Projects must list all files or use an include pattern.

vite ts vue 项目提示 . Projects must list all files or use an include pattern. 在引用一个 ts 的时候&#xff0c;提示如下&#xff1a; 需要在 tsconfig.node.json 文件中添加&#xff1a; {"compilerOptions": {"composite": true,"skipLibC…...

鲸鱼优化算法改进风储机组一次调频出力分配系数,以频率偏差最小为目标优化函数,结合鲸鱼算法WOA捕食过程,改进风储出力分配系数simulink与matlab联合

simulink与matlab联合 风机模糊控制 改善后的系统频率 simulink.采用风储联合数学模型...

C语言经典面试题目(七)

1、C语言中如何进行内存对齐和字节对齐&#xff1f; 在C语言中&#xff0c;内存对齐和字节对齐是为了优化内存访问速度和提高系统性能而进行的一种策略。内存对齐是指数据在内存中的存放位置必须是某个值的倍数&#xff0c;通常是数据类型的大小。字节对齐是指数据在内存中的存…...

2024华为春招Django面试题大全,最全知识点揭秘,面试必备!

为了帮助广大求职者更好地准备即将到来的面试&#xff0c;本文精心编撰了一系列涵盖InnoDB存储引擎关键知识点的面试题。这些问题不仅覆盖了InnoDB的基础知识&#xff0c;如其ACID特性、索引设计、锁机制等&#xff0c;还涵盖了性能优化、备份恢复策略等高级话题&#xff0c;旨…...

搜维尔科技:使用SenseGlove Nova手套操纵其“CAVE”投影室中的虚拟对象

创造了一种基于 PC 的创新型多边沉浸式环境&#xff0c;让参与者完全被虚拟图像和声音包围。 需要解决的挑战&#xff1a; 传统的 VR 系统往往缺乏真实的触摸反馈&#xff0c;限制了用户的沉浸感。AVR Japan 旨在通过将触觉技术融入到他们的 CAVE 系统中来应对这一挑战&#x…...

独立服务器的优势

独立服务器的优势 高性能 独立服务器提供了卓越的性能&#xff0c;因为它们不与其他用户共享资源。这使得您的网站或应用程序能够快速响应访问请求&#xff0c;并处理大量数据。 安全性 由于没有其他租户在同一服务器上&#xff0c;独立服务器的安全性更高。您可以更好地控制…...

前端框架vue的样式操作,以及vue提供的属性功能应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中&#xff0c;都会用到自动化测试环境&#xff0c;目前最常见的就是通过容器化方式部署自动化测试环境&#xff0c;但对于一些测试小白&#xff0c;不是很会搭建持续集成环境&#xff0c;特别是从0-1的过程&#xff0c;需要自行搭建很多依赖环境&am…...

2.域控如何强制转移操作主机角色?使用命令如何强制转移域控的操作角色?

1.实验环境介绍 实验1:模拟5种操作主机都在DC01上的域控宕机了 (1)实验先决条件 (2)测试的方向 实验2:域控夺权实验操作 方式1:AD用户和计算机工具转移操作主机角色 (1)RID角色转移: (2)PDC角色转移 (3)基础结构操作主机角色转移 方式2:powshell命令强制…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...