linux脚本跳出循环语句,跳出循环的命令

linux脚本跳出循环语句,跳出循环的命令1 exit 退出循环 同时也会退出脚本 root shell scripts shell day31 catexit sh bin bashforiin 1 3 doecho 123 exitecho 456 doneecho 脚本执行结束 root shell scripts shell day31 shexit sh1232 break

1. exit #退出循环,同时也会退出脚本

[root@shell /scripts/shell-day31]# cat exit.sh

#!/bin/bash

for i in {1..3}

do

echo “123”

exit

echo “456”

done

echo “脚本执行结束”

[root@shell /scripts/shell-day31]# sh exit.sh

123

2. break#跳出当前循环,继续执行循环以外的命令

[root@shell /scripts/shell-day31]# cat break.sh

#!/bin/bash

for i in {1..3}

do

echo “123”

break

echo “456”

done

echo “脚本执行结束”

[root@shell /scripts/shell-day31]# sh break.sh

123

脚本执行结束

3. continue#跳出本次循环,不继续执行循环的剩余代码。继续执行下一次的循环。

[root@shell /scripts/shell-day31]# cat continue.sh

#!/bin/bash

for i in {1..3}

do

echo “123”

continue

echo “456”

done

echo “脚本执行结束”

[root@shell /scripts/shell-day31]# sh continue.sh

123

123

123

脚本执行结束

4. 先扫描10.0.0.0/24网段内的主机,存活的主机则下发公钥。

1. 先判断是否存在密钥,没有则进行创建密钥对,有则跳过

2. 批量探测主机是否存活,存活则判断远程端口是否开放

3. 主机存活且端口开放的主机则分发公钥

4. 判断是否发送成功

如何免交互式的进行创建密钥对

-f filename #指定私钥文件保存的路径

-N new_passphrase #指定一个新的密码

ssh-keygen  -t rsa -f /root/.ssh/id_rsa -N “”

如何免交互式的分发公钥

-o StrictHostKeyChecking=no #忽略回复yes的交互(避免第一次交互出现 公钥检查)

sshpass -p #指定密码为,忽略交互

yum install -y sshpass

sshpass -p1  ssh-copy-id -i /root/.ssh/id_rsa.pub  -o “StrictHostKeyChecking=no”  root@10.0.0.7

[root@shell /scripts/shell-day31]# cat fenfa.sh

#!/bin/bash

#1.引用函数库

[ -f /etc/init.d/functions ] && source /etc/init.d/functions || echo “函数库文件不存在!”

#2.判断是否存在秘钥对

if [ -f /root/.ssh/id_rsa.pub ] && [ -f /root/.ssh/id_rsa ];then

action “密钥对文件存在!” /bin/true

else

rm -rf /root/.ssh &>/dev/null

ssh-keygen  -t rsa -f /root/.ssh/id_rsa -N “” &>/dev/null

if [ $? -eq 0 ];then

action “已经创建新的密钥对!”  /bin/true

else

action “新的密钥对创建失败!”  /bin/false

exit

fi

fi

#3.批量探测主机是否存活

Ip_log=/tmp/ip.log

>$Ip_log

i=1

while [ $i -le 254 ]

do

{

IP=10.0.0.$i

ping -c1 -W1 $IP &>/dev/null

if [ $? -eq 0 ];then

action “${IP}主机是存活的………..” /bin/true

echo “$IP” >>$Ip_log

fi

}&

let i++

sleep 0.1

done

wait

while read line

do

State=$(nmap -p22 $line | awk ‘/^22/{print $2}’)

if [ $State == “open” ];then

action “主机地址${line}远程端口是开放的……..” /bin/true

sshpass -p1  ssh-copy-id -p22 -i /root/.ssh/id_rsa.pub  -o “StrictHostKeyChecking=no”  root@$line &>/dev/null

if [ $? -eq 0 ];then

action “主机地址${line}公钥发送成功……..” /bin/true

else

action “主机地址${line}公钥发送失败……..” /bin/false

fi

else

action “主机地址${line}远程端口是关闭的……..” /bin/false

fi

done < $Ip_log

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232193.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最小二乘法原理及应用

    最小二乘法原理及应用最小二乘法是一种在误差估计 不确定度 系统辨识及预测 预报等数据处理诸多学科领域得到广泛应用的数学工具

    2025年8月1日
    1
  • linux安装busybox教程

    linux安装busybox教程获取软件包下载busybox安装包1.31.0当前最新稳定版本,并解压:wgethttps://qqq-1253133144.cos.ap-chengdu.myqcloud.com/bbb/busybox-1.31.0.tar.bz2tar-xjvfbusybox-1.31.0.tar.bz2编译环境配置l编译和安装busybox:cdbusybox-1.31.0/makedefconfig&&makeinstallbusyb.

    2022年7月15日
    23
  • 数据仓库(四)之ETL开发

    数据仓库(四)之ETL开发 概述 ETL是数据仓库的后台,主要包含抽取、清洗、规范化、提交四个步骤,传统数据仓库一般分为四层模型。               分层的作用                                      STG层  在维度建模阶段已经确定了源系统,而且对源系统进行了…

    2022年6月13日
    34
  • html简单登录页面代码

    html简单登录页面代码图片必须是在Imges下的否则显示不出来(复制代码的话把图片换成你的图片就好了)代码如下&lt;html&gt;&lt;head&gt;&lt;title&gt;tes

    2022年6月13日
    63
  • idea mac激活码【注册码】[通俗易懂]

    idea mac激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    47
  • Java 多线程:彻底搞懂线程池

    熟悉Java多线程编程的同学都知道,当我们线程创建过多时,容易引发内存溢出,因此我们就有必要使用线程池的技术了。

    2022年4月8日
    72

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号