分发系统-expect-批量同步文件、批量执行命令

分发系统-批量同步

将指定文件传送到多个ip的相同目录下

创建expec脚本

rsync.expect
代码:


#!/usr/bin/expect
set passwd "123456"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av --files-from=$file / [email protected]$host:/
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r"}
}
expect eof

说明:

必须相同密码,也可以设置秘钥登录即可;
核心命令rsync -av --files-from=$file / [email protected]$host:/
rsync -av --files-from=文件名 / 用户名@目标ip:/

创建shell脚本

rsync.sh

代码:


#!/bin/bash
for ip in `cat /usr/local/shell/ip.list`
do
    echo $ip
    ./rsync.expect $ip /usr/local/shell/list.txt
done

说明:
做一个循环,循环为ip个数,也就是必须创建一个ip.list的文件,里面写上目标ip
每循环一次,输出当前ip,执行expect 脚本。指定脚本参数为ip 和文件列表中的信息

创建ip列表

vim /usr/local/shell/ip.list

192.168.188.3
192.168.188.4

创建文件列表

vim /usr/local/shell/list.txt

/tmp/1.txt
/tmp/2.txt

权限与运行

chmod a+x /usr/local/shell/rsync.sh
chmod a+x /usr/local/shell/rsync.expect
sh /usr/local/shell/rsync.sh

检查

检查192.168.188.3 与192.1688.188.4的/tmp目录是否同步上1.txt和2.txt
注意:对应主机都必须安装rsync包


分发系统-批量执行命令

创建expect脚本

exe.expect
代码:


#!/usr/bin/expect
set passwd "123456"
set host [lindex $argv 0]
set cm [lindex $argv 1]
spawn ssh [email protected]$host
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r"}
}
expect "]*"
send "$cm\r"
expect "]*"
send "exit\r"

创建shell脚本

exe.sh
代码:


#!/bin/bash
for ip in `cat /usr/local/shell/ip.list`
do
     ./exe.expect $ip "hostname"
done

说明:

其中./exe.expect 是运行当前目录的exe.expect脚本,并附带两个参数;其中hostname为命令;

创建ip列表

vim /usr/local/shell/ip.list
192.168.188.3
192.168.188.4

权限与运行

chmod a+x exe.expect
chmod a+x exe.sh
sh exe.sh

也可以使用sh -x exe.sh 查看shell运行的详细步骤;

原文地址:http://blog.51cto.com/shuzonglu/2108379

时间: 2024-07-31 21:14:46

分发系统-expect-批量同步文件、批量执行命令的相关文章

分发系统:自动同步文件脚本

[[email protected] ~]# cat 4.expect#!/usr/bin/expect set passwd "123456" spawn rsync -av /tmp/1.txt root@192.168.11.18:/tmp/ # 要求两端都安装 rsync expect { "yes/no" { send "yes\r" } "password:" { send "$passwd\r"

expect脚本同步文件、指定host和要同步的文件、构建文件分发系统、批量远程执行命令

expect脚本同步文件 1.自动同步文件 [[email protected] shell]# vi 4.expect 增加如下脚本内容: #!/usr/bin/expect set passwd "123456" spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send &

expect脚本同步文件、expect脚本指定host和要同步的文件、构建文件分发系统、批量远程执行

20.31 expect脚本同步文件 自动同步文件 #!/usr/bin/expect set passwd "rootroot" spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r"} } expect eof 执行 [[ema

expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

20.31 expect脚本同步文件#!/usr/bin/expectset passwd "liang.123"spawn rsync -av [email protected]:/tmp/12.txt /tmp/ 将远程的/tmp/12.txt同步到本地的机器上 expect {"yes/no" { send "yes\r"} 第一次会提示yes或no"password:" { send "$passwd\r&q

expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行

expect脚本同步文件 自动同步文件 #!/usr/bin/expect set passwd "目标机器密码" spawn rsync -av [email protected]目标机器ip:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" }}expect eof 然后赋予权限chmod

expect脚本同步文件、expect指定host和要同步的文件、构建文件分发系统、批量远程执行命令

  一.expect脚本同步文件 自动同步文件 ,把远程的文件同步到本机 cd /usr/local/sbin 1.脚本内容: #!/usr/bin/expectset passwd "123456"spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect {"yes/no" { send "yes\r" }"password:" { send "$pass

expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 [[email protected] sbin]# vim 4.expect #!/usr/bin/expect set passwd "s5381561" spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:"

expect脚本同步文件、指定host和要同步的文件、 构建文件分发系统及批量远程执行命令

一. expect脚本同步文件 1.vi 1.expect 内容如下: #!/usr/bin/expect set passwd "123456" spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" } } expect eof

20.31 expect脚本同步文件;20.32 expect脚本指定host和要同步的文件;20.33 构建文件分发系统;20.34

20.31 expect脚本同步文件 自动同步文件 1. 同步远程机器hao2上/tmp/12.txt文件 到本机/tmp/下: [[email protected] ~]# vim 4.expect 添加内容: #!/usr/bin/expect set passwd "admin" spawn rsync -av [email protected]192.168.211.129:/tmp/12.txt /tmp/ expect { "yes/no" { send