shell 嵌套 expect之 for循环嵌套 expect实现文件远程复制

最近在搞zabbix,公司又新上了六台服务器。再部署zabbix客户端的时候,宝宝真是怒了。大爷的总是这么重复劳动也是不行呀。但是作为战五渣,还能有什么拌饭呢?想起来去年写过一篇expect的blog,于是来了灵感。大神请不要喷我。于是我决定玩下有点技术小难度的东西,远程自动同步。客户端软件。于是我就重温了一下expect。刚开始感觉挺难得,写了几个脚本后。感觉也就这样吧,没啥技术难度。刚写第一个脚本成功的时候激动的不要不要的。真是脸没见过世面的样子,哈哈!好记性不如写博客,于是就写了这篇blog ,就这。下面上菜。

#!/bin/bash

P="maomaochong"

for i in `echo 114`   #因为我在自己电脑上测试所以这样写,多台可以写成`seq 100 114` 表示一个范围

do

/usr/bin/expect <<-EOF

spawn scp -r /usr/local/zabbix-agent.tar.gz [email protected]${i}:/home/zgabe/

expect {

"yes/no" { send "yes\r" }   #\r:表示确定

}

expect {

"password:" { send "$P\r" }

}

expect "*$"  #普通用户是$,root用户是#

send "exit\r"

expect eof

EOF  #expect语句结束

done #shell的for循环结束。

再次过程中可以用 shell -n 脚本文件名 测试脚本语法是否存在错误

shell -x 脚本名字  查看执行过程,如果脚本有报错。会直接显示出来。每一步都很详细。方便排查错误

时间: 2024-08-29 08:33:39

shell 嵌套 expect之 for循环嵌套 expect实现文件远程复制的相关文章

1.10 print triger(for循环嵌套 &amp;&amp; print 输出格式)

for循环嵌套 1.多层循环嵌套首先考虑内层循环,再考虑外层循环 2.循环考虑边界值控制 3.range(初始值,结束值,步长),序列的最后一个值,= 结束值 - 1 print输出格式 1.python2 中print与逗号结合使用:print输出不换行在语句后面加逗号 例:print "*", 2.python2中控制换行 :print实现换行功能就什么也不输入 例:print ""

while循环 嵌套

#!/bin/bash i=1while (( "$i" <= 9 ))do        j=1        while (( "$j" <= "$i" ))        do                echo -n "*"            #-n表示不换行显示                let j++        done        echo ""         

4循环嵌套和方法

1 循环嵌套 循环嵌套(多重循环):一个循环结构中的循环体包含其他的循环结构. 任意两种循环结构都可以相互嵌套. for(表达式1;表达式2;表达式3){ for(表达式1;表达式2;表达式3){ } } 特点:外层循环执行1次,内层循环有可能执行多次. 只有当内层循环执行结束后,才会执行下次的外层循环. 示例1:打印3行8列的矩形矩形 public class TestLoop{ public static void main(String[] args){ //外层循环控制行数 for(in

JS中的循环结构、循环嵌套以及函数介绍

[循环结构的步骤]    *①声明循环变量    *②判断循环条件    *③执行循环体(while的{}中的所有代码)操作     *④更新循环变量    *     * 然后,循环执行②③④    *     *     * [JS中循环条件支持的数据类型]    * ①boolean:true 真     false   假    * ②string: 非空字符串为真       空字符串为假    * ③null/NaN/undefined:  全为假    * ④object:全为真 

for循环嵌套

七.for循环嵌套 (一)格式 for(初始条件;循环条件;循环调整) { for(初始条件;循环条件;循环调整) { 循环体 } } (二)例题 1.一个游戏,前20关每一关是自身的分数,21~30关每一关是10分,31~40关每一关是20分,41~49关每一关是30分,第50关是100分,输入你现在闯到的关卡数,求你现在拥有的分数. 主要代码: (1)法一 while (true) { Console.Write("请输入你闯到的关卡:"); int c = int.Parse(C

使用JavaScript循环嵌套解决各种图形

[循环嵌套的规律]    1.外层循环控制行数,内层循环控制每行中元素的个数. [图形题思路]    1.确定图形有几行,行数即为外层循环次数:    2.确定每行中有几种元素组成,有几种元素表示有几个内层循环:    3.确定每种元素的个数,这个个数即为每个内层元素循环次数.     如果每种元素的个数不固定,则找出每种元素的个数,与行号的关系,     这个关系表达式即为内循环的最大值. 1.长方形 1 <!DOCTYPE html> 2 <html> 3 <head&g

for循环和循环嵌套

通过一周对c#的学习,发现很多同学在循环这一块都有点晕,其实只要一步一步的去分析执行步骤和条件,思路清晰了,自然就理解了; 而且很多时候都会for循环里面再嵌套for循环,这样如果思路不清晰,那当然就会一脸懵逼; 下面我来用几个例子,来浅谈下for循环和循环嵌套,希望对大家有所帮助; ①.输出五行五列; 我们来分析下循环过程: 1.当i=0的时候,执行内层循环 j=0,输出一个*号,然后j++;这时候j=1,输出第二个*号,然后j++;......;j=4的时候输出第五个*号,然后j++;这时候

双层for循环嵌套问题:

当两个for循环嵌套时,是第一个for语句先执行完还是第二个for语句先执行完呢???具体的顺序到底是什么样的呢??? 虽说问题简单,但本人感觉获益匪浅,C++语言着实博大精深. 1 #include "stdafx.h" 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 int i,j; 8 for (i = 1; i <= 4; i++) 9 { 10 for (j = 5; j &

循环嵌套,while循环,穷举迭代循环

一.循环嵌套 简单的就是说,在一个for循环里嵌入多个小for循环. 其中,在打矩形.三角形和乘法口诀表之类的题目中,大for循环一般表示的是行数,其余的小for循环式每一行中的内容. 二.while循环 1,格式 (1) 初始条件: while(循环条件) { 循环体: 状态改变: } 当循环体不满足循环条件时,才能跳出所处的for循环. (2) 初始条件: do { 循环体: 状态改变: } while(循环条件) 其表示才开始不管满不满足循环条件,限制性一次,如果不符合循环条件,就跳出循环