shell脚本——八个循环实验(使用for循环)(下)

简介: 实验一实验要求:计算从1到100所有整数的和。创建脚本并执行:


实验五

实验要求:检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中。

创建脚本:

[root@localhost ~]# vim zhuji.sh
 #!/bin/bash
 #检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中。
 for i in {10..15}
 do
    ping -c 3 -i 0.5 -w 2 192.168.72.$i &>/dev/null
    if [ $? -eq 0 ]
    then
        echo "192.168.72.$i 能通信"
        echo "192.169.72.$i" >> /data/host_ip
    else
        echo "192.168.72.$i 不能通信"
    fi
 done
复制代码


网络异常,图片无法展示
|


执行脚本:

[root@localhost ~]# bash zhuji.sh
 192.168.72.10 能够通信
 192.168.72.11 不能通信
 192.168.72.12 不能通信
 192.168.72.13 不能通信
 192.168.72.14 不能通信
 192.168.72.15 不能通信
 [root@localhost ~]# cat /data/host_ip
 192.169.72.10
复制代码


网络异常,图片无法展示
|


实验六

实验要求:用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警。

创建脚本:

[root@localhost ~]# vim mima1.sh
 #/bin/bash
 #用户输入密码,脚本判断密码是否正确,正确密码为123456;
 #输入正确提示正确信息,连续输错3次则报警。
 for i in {1..3}
 do
     read -p "请输入密码:" key
     if [ "$key" = "123456" ]
     then
         echo "密码正确"
         exit 0
     else
         echo "密码错误!"
     fi
 done
 echo "警告!您已连续3次输错密码,账号即将锁定......"
复制代码


网络异常,图片无法展示
|

执行脚本:

[root@localhost ~]# bash mima1.sh
 请输入密码:123456
 密码正确
 [root@localhost ~]# bash mima1.sh
 请输入密码:111
 密码错误!
 请输入密码:222
 密码错误!
 请输入密码:333
 密码错误!
 警告!您已连续3次输错密码,账号即将锁定......
 [root@localhost ~]# bash mima1.sh
 请输入密码:123
 密码错误!
 请输入密码:123456
 密码正确
复制代码


网络异常,图片无法展示
|


实验七

实验要求:编写能够自动生成一个8位随机密码的脚本。

创建脚本:

[root@yuji ~]# vim passran.sh
 #!/bin/bash
 # 要求生成8位随机密码,密码范围为26个英文字母和10个阿拉伯数字。
 # ---------------------
 #定义密码取值范围
 string="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
 #循环8次
 for i in {1..8}
 do
    #每次循环随机获取0到字符串长度减1的下标值
    num=$[RANDOM % ${#string}]
    #进行字符串截取,每次随机取出1个字符
    var=${string:$num:1}
    #每次追加生成的密码,passwd+=$var等同于passwd=$passwd$var
    passwd+=$var
 done
 echo "本次生成的密码为:$passwd"
复制代码


网络异常,图片无法展示
|

执行脚本:

[root@yuji ~]# bash passran.sh
 本次生成的密码为:vZwWIwXj
 [root@yuji ~]# bash passran.sh
 本次生成的密码为:rySmwaTk
 [root@yuji ~]# bash passran.sh
 本次生成的密码为:lJTcsbV4
复制代码


网络异常,图片无法展示
|


实验八

实验要求:使用循环语句将一个 0到255 之间的十进制数转换成二进制数。

1)方法一:使用除法,倒取余数。

创建脚本:

[root@localhost ~]# vim shuzhi1.sh
 #!/bin/bash
 #使用循环语句将一个0到255之间的十进制数转换成二进制数
 read -p "请输入一个整数(0-255):" num
 for i in {1..8}
 do
     #除以2取余数
     var=$[num%2]
     #余数倒序排列
     sum=$var$sum
     num=$[num/2]
 done
 echo "转换成二进制数是:$sum"
复制代码


网络异常,图片无法展示
|


执行脚本:

[root@localhost ~]# bash shuzhi1.sh
 请输入一个整数(0-255):35
 转换成二进制数是:00100011
 [root@localhost ~]# bash shuzhi1.sh
 请输入一个整数(0-255):166
 转换成二进制数是:10100110
 [root@localhost ~]# bash shuzhi1.sh
 请输入一个整数(0-255):255
 转换成二进制数是:11111111
复制代码


网络异常,图片无法展示
|


2)方法二:使用减法。

创建脚本:

[root@localhost ~]# vim shuzhi2.sh
 #!/bin/bash
 #使用循环语句将一个0到255之间的十进制数转换成二进制数
 #使用减法:十进制数减2的7次方(即128),若不够减则记为0,原数继续减2的6次方(64);
 #若够减则记为1,减法运算后剩余值继续减2的6次方。以此类推,一直减到2的0次方。
 #之后将每次运算的标记值按正序排列起来即为结果。
 read -p "请输入一个整数(0-255):" num
 for i in {128,64,32,16,8,4,2,1}
 do
     a=$[num -i]
     if [ $a -lt 0 ]
     then
         echo -n 0
     else
         echo -n 1
         num=$[num-i]
     fi
 done
 echo ""
复制代码


网络异常,图片无法展示
|


执行脚本:

[root@localhost ~]# bash shuzhi2.sh
 请输入一个整数(0-255):18
 00010010
 [root@localhost ~]# bash shuzhi2.sh
 请输入一个整数(0-255):77
 01001101
 [root@localhost ~]# bash shuzhi2.sh
 请输入一个整数(0-255):189
 10111101
复制代码


网络异常,图片无法展示
|

目录
打赏
0
0
0
0
12
分享
相关文章
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
1月前
|
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
109 32
|
26天前
|
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
114 2
|
4月前
|
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
191 1
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
167 2
|
5月前
|
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
168 1
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
132 2
6种方法打造出色的Shell脚本
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
113 6
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
5月前
|
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
120 12