Linux中的shell脚本练习

1.判断字符串是否为空

#!/usr/bin/bash
while : #:默认值为真
do
read -p "请输入你的密码: " a
pass=123456
if [ -z $a ];thenecho "您输入的密码不能为空"exit 1
elseif [ $a = $pass ];thenecho "登录成功"breakelseecho "您的密码输入有误,请重新输入"fi
fi
done

2.判断文件是否存在

#/bin/bash
if [ -f /opt/a.txt ];thenecho "ok"
elseecho "不存在,正在创建"touch /opt/a.txt
fi

3.必须在脚本后加上适当的参数脚本才能正确执行

#!/bin/bash
if [ "$1" = "hello" ]; thenecho "Hello! How are you ?"
elif [ "$1" = "" ]; thenecho "You MUST input parameters"
elseecho "The only accept parclear ameter is hello"
fi

4.测试ip地址主机位从2到100的机器是否存活,并把存活的机器记录到文本文件alivehost.txt内。(使用ping命令)

#!/usr/bin/bash
src_ip="192.168.246"
for i in {2..254}
do{ping -c1 $src_ip.$i &>/dev/nullif [ $? -eq 0 ];thenecho "alive: $src_ip.$i" >> ip_up.txtecho "alive: $src_ip.$i"elseecho "down: $src_ip.$i" >> ip_down.txtecho "down: $src_ip.$i"fi} &
done
wait
echo "finish..."

5.根据用户输入foo打印bar,输入bar打印foo,否则输入只能输入foo|bar

#!/usr/bin/env bash
case $1 infoo)echo "bar";;bar)echo "foo";;*)echo "Usage:$0 '{foo|bar}'";;
esac

6.随机数生成8位随机密码

#!/bin/bash
string="AFJALKGJglekrjgkASKJFEKFELjjglkerjgwej235834095ejglkdjg"
sum=''
for ((i=1; i<=8; i++))    #指定循环8次
dolen=${#string}   #获取变量的长度num=$[RANDOM % $len]    #使用变量长度中生成随机数(作为取字符的索引)value=${string:$num:1}    #截取指定索引的字符sum+=$value   #字符追加到sum变量中
done
echo $sum 

7.for循环批量创建用户

#!/usr/bin/bash
read -p "请设置用户名/数量/密码: " prefix num pass
cat <<-EOF
用户前缀:$prefix
用户数量:$num
用户密码:$pass
EOF
for i in $(seq 1 $num)
do
user=$prefix$i
id $user &> /dev/null
if [ $? -eq 0 ];thenecho "$user is already exist!"exit 0
elseuseradd $user &> /dev/null && echo $pass | passwd --stdin $user &>/dev/null
fi
done
echo "starting create users..."

8.通过一个文件批量创建用户:
#背景:写一个脚本,满足以下需求及应用,如一个文件的内容如下,根据文件内容实现批量创建用户,第一列为用户名,第二列为密码

[root@localhost script]# vim user_pass.txt #创建用户和密码文件
user1 123456
user2 654321
user3 1122334
user4 4433221
user5 9876543
[root@localhost script]# vim create_user.sh #编写脚本
#!/usr/bin/bash[ $UID -ne 0 ] && exit 1
while read line
douser=`echo $line | awk '{print $1}'`pass=`echo $line | awk '{print $2}'`id $user &> /dev/null || useradd $user && echo $pass | passwd $user --stdin
done < /opt/test/script/user_pass.txt

9.随机数实现猜数字游戏

#!/bin/bash
num=$[RANDOM % 10]
i=1 #定义i为循环条件
a=0 #定义a为猜的次数变量
while [ $i -eq 1 ]
do
read -p "请输入你猜的数字(0~10):" cif [ $c -eq $num ];thenecho "恭喜你猜对了!"let a++let i++elif [ $c -gt $num ];thenecho "你猜高了,请继续!"let a++elif [ $c -lt $num ];thenecho "你猜低了,请继续!"let a++fi
done
echo "你一共猜了${a}次。"

10.建立ssh免密连接脚本

[root@mysql-server script]# cat shuzu.sh 
#!/bin/bash
server_ip=(192.168.209.166 192.168.209.168 192.168.209.169)
server_name=(web-1 web-2 mysql-server)
for (( i=0; i<${#server_ip[@]}; i++ ))
doecho $i-----${server_ip[i]}-----${server_name[i]}
done
echo "请输入要连接的序号: " && read n 
if [[ $n -ge 0 && $n -lt ${#server_ip[@]} ]];thenecho "正在链接${server_ip[n]}"sleep 1/root/expect/expect.sh ${server_ip[n]}
elseecho "请输入范围内的序号..."sleep 1
fi

/root/expect/expect.sh

#!/usr/bin/expect
set user root
set pass 1
set ip [ lindex $argv 0 ] 
set timeout 10spawn ssh $user@$ip
expect {"yes/no" {  send "yes\r"; exp_continue }"password:" { send "$pass\r" };
}
interact

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/78830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用命令关闭Redis服务端

使用命令关闭Redis服务端。 命令 redis-cli -a 111111 -p 6379 shutdown 有些人redis的端口不是6379&#xff0c;那就自己查一下 参数解释&#xff1a; -a&#xff1a;Redis密码 -p&#xff1a;Redis端口 shutdown&#xff1a;关闭命令

嵌入式RTOS实战:uC/OS-III最新版移植指南(附项目源码)

文章目录 前言一、uC/OS简介二、工程移植2.1 下载ucos源码2.2 创建空白工程2.3 拷贝ucosiii源码文件2.3.1 UC-CONFIG2.3.2 UC-CPU2.3.3 UC-LIB2.3.4 UC-OS3 2.3 添加工程文件分组及路径2.4 代码首次编译2.5 源码修改2.5.1 cpu_cfg.h2.5.2 os_cpu_c.c2.5.3 lib_cfg.h2.5.4 sys.h…

TypeScript中的函数类型定义与类型约束

函数类型定义与类型约束 一、核心概念&#xff1a;类型别名与函数类型 1. 类型别名&#xff08;Type Alias&#xff09; 定义 类型别名使用 type 关键字为现有类型创建一个新名称&#xff0c;可以用于&#xff1a; 基础类型&#xff08;如 string、number&#xff09;&…

相机DreamCamera2录像模式适配尺寸

在开发中遇到 一个问题&#xff0c;相机切换视频模式时&#xff0c;预览时&#xff0c;界面不能充满屏幕两侧有黑边&#xff0c;客户要求修改&#xff0c;在此记录 一问题现象&#xff1a; 系统相机在视频模式下预览时如下现象如图1&#xff0c;期望现象如图2: 图1 …

SpringCloud组件——Gateway

一.网关 1.问题提出 我们通过Eureka&#xff0c;Nacos解决了服务注册&#xff0c;服务发现的问题&#xff0c;使用SpringCloud LoadBalance解决了负载均衡的问题&#xff0c;使用OpenFeign解决了远程调用的问题。 但是当前所有微服务的接口都是直接对外暴露的&#xff0c;可…

C#中构造器及属性的加载顺序

一.基本原则: 先加载静态构造函数和静态字段,后加载普通构造函数和普通字段;先加载基类再加载子类; 二.具体的加载顺序: 父类静态字段--->父类静态构造函数--->子类静态字段--->子类静态构造函数--->父类实例字段---> 父类实例构造函数--->子类实例字段-…

Python面试问题

一、Python 基础 1. Python 的特点 动态类型&#xff1a;变量无需声明类型。解释型语言&#xff1a;逐行解释执行。支持多种编程范式&#xff08;面向对象、函数式、过程式&#xff09;。 2. 列表&#xff08;List&#xff09;与元组&#xff08;Tuple&#xff09;的区别 特…

计算机视觉进化论:YOLOv12、YOLOv11与Darknet系YOLOv7的微调实战对比

摘要 YOLO系列作为实时目标检测领域的重要里程碑&#xff0c;持续引领速度与精度的平衡发展。本文围绕YOLOv7&#xff08;基于Darknet框架&#xff09;、YOLOv11及YOLOv12&#xff0c;系统、深入地对比了三款模型的架构创新、微调策略、核心技术及应用场景。我们详细解析了三者…

SQL Server 存储过程开发规范

SQL Server 存储过程开发规范&#xff08;高级版&#xff09; 1. 总则 1.1 目标 本规范旨在&#xff1a; 提高存储过程的事务一致性、异常可追踪性、错误透明度。 统一日志记录、错误码管理、链路追踪&#xff08;Trace ID&#xff09;。 支持复杂事务场景&#xff08;嵌套…

opendds的配置

配置的使用 文档中说明有4种使用配置的方式&#xff1a; 环境变量 命令行参数&#xff08;将覆盖环境变量中的配置&#xff09; 配置文件&#xff08;不会覆盖环境变量或命令行参数中的配置&#xff09; 用户调用的 API&#xff08;将覆盖现有配置&#xff09; 这里对开发…

(Go Gin)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收

1. 路由 gin 框架中采用的路优酷是基于httprouter做的 HttpRouter 是一个高性能的 HTTP 请求路由器&#xff0c;适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用&#xff0c;特别适合需要高性能和简单路由的应用场景。 主要特点 显式匹配&#xff1a;与其他路由…

Marin说PCB之----板材的替换注意事项

由于最近很多武林上的主流门派都需要采用将的本方案&#xff0c;小编所在的宗门古族也是不例外了&#xff0c;宗门大长老韩立现在想把之前一直在用的板材EM370Z替换成生益的Autolad3&#xff0c;让我去拿资料分析一下是否可以替换。下图所示是就是小编我做的一个表格关于两家板…

4月28日信息差全景:国际局势、科技突破与市场震荡一、国际政治与安全:俄乌冲突关键转折

一、国际政治与安全:俄乌冲突关键转折 1. 乌克兰反攻进展与情报差异 前线动态: 俄国防部称在顿涅茨克击退乌军三次进攻,摧毁12辆坦克;乌方则宣布在巴赫穆特南部推进2公里,双方战报存在显著差异。 信息差根源:战场信息管控导致西方媒体与俄媒报道截然不同。 国际援助: 美…

关系数据的可视化

目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 一、安装Python所需要的第三方模块 二、实验 【实验总结】 【实验目的】 1.掌握关系数据在大数据中的应用 2.掌握关系数据可视化方法 3. python 程序实现图表 【实验原理】 在传统的观念里面&#xff0…

夏季道路安全的AI革命:节省人力、提升效率

AI夏季道路安全&#xff1a;用智能算法守护每一条街道 背景&#xff1a;夏季道路安全的挑战与机遇 夏季是道路安全事件的高发期。高温天气容易导致驾驶员疲劳、行人行为异常&#xff08;如跌倒或中暑&#xff09;&#xff0c;同时&#xff0c;车流量增加、夜间活动频繁…

HTML标记语言_@拉钩教育【笔记】

目录 1.文本标签 2.格式化标签 3.图片标签 4.超链接标签 5.表格标签 6表单标签 6.1 6.2 6.3 7.行内框架(超链接内套一个页面) 8.多媒体标签(音/视频) 1.文本标签 2.格式化标签 3.图片标签 4.超链接标签 5.表格标签 6表单标签 6.1 6.2 6.3 7.行内框架(超链接内套一个…

Python 中调用方法内部定义的类详解(类在方法中的各种操作)

更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 一、基本概念1.1 方法内部定义类概述1.2 方法内部定义类的特点1.3 替代方案二、基本使用2.1 直接在方法内部使用2.2 返回类定义供外部使用2.3 返回类的实例2.4 作为闭包使用(访问外部变量)三、高级用法3.1 动态类创…

第36课 常用快捷操作——用“鼠标右键”退出当前命令

概述 在AD 20软件中&#xff0c;很多的命令都是可以一直连续下去的&#xff0c;比方说放置一个元器件符号&#xff0c;如果你当中不取消的话&#xff0c;那就可以一直执行下去&#xff0c;放完一个接着放下一个&#xff0c;放完一个接着放下一个…… 想要退出这种连续进行的命…

FFTW3.3.10库与QT结合的使用

FFTW&#xff08;Fastest Fourier Transform in the West&#xff09;是世界上最快的FFT&#xff0c; 实测计算长度为10000的double数组&#xff0c; 单次运行时间在2ms左右。为了详细了解FFTW以及为编程方便&#xff0c;特将用户手册看了一下&#xff0c;并结合手册制作了以下…

服务器异地备份,服务器异地备份有哪些方法?

服务器异地备份是应对区域性灾难&#xff08;如地震、火灾、洪水&#xff09;或人为事故&#xff08;如误删除、勒索病毒攻击&#xff09;的关键策略&#xff0c;其核心在于将数据副本存储在物理隔离的地理位置&#xff0c;确保主数据中心故障时仍可恢复业务。 以下是主流的异地…