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

20.31 expect脚本同步文件
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
#!/usr/bin/expect
set passwd "liang.123"
spawn rsync -av root@192.168.137.130:/tmp/12.txt /tmp/ 将远程的/tmp/12.txt同步到本地的机器上
expect {
"yes/no" { send "yes\r"} 第一次会提示yes或no
"password:" { send "$passwd\r" }
}
expect eof
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
加执行权限,再执脚本文件
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
查看本机是否有同步过来的文件
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
如果将脚本expect eof注释掉
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
再执行文件,刚登陆就退出来了,还没来的及传输
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
20.32 expect脚本指定host和要同步的文件
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
vi /5.expect 这个脚本是由本同步到远程
#!/usr/bin/expect
set passwd "123456"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av $file root@$host:$file 第一个参数指定IP 第二个参数指定文件
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof
执行5.expect时要输入第一个参数IP和第二个参数要同步文件的路径
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
20.33 构建文件分发系统
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
vi rsync.expect
内容
#!/usr/bin/expect
set passwd "liang.123"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av --files-from=$file / root@$host:/
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
在/tmp目录下创建list.txt,这个文件内容就是要同步的文件路径
vi /tmp/list.txt
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
要想同步的这3个文件,前提是要对方的机器也要同时存在一样的路径,如果不能确定对方机器也存在一样的路径,那可以在rsync.expect方件里加一个R,当对方机器不存在相同路径时会自动创建路径
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
因为远程同步的机器可能不只一台,所有也要创建一个IP列表
vi /tmp/ip.list
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
在执行脚本前要保证两台机器的密码是一样的
下面来继续创建rsync.sh
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
vi /rsync.sh
#!/bin/bash
for ip in cat /tmp/ ip.list
do
echo $ip
./rsync.expect $ip /tmp/file.list
done
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
在执行之前还要给 rsync.expect一个执行的权限
chmod a+x rsync.expect
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
192.168.137.130同步是没有问题的,但有一个提示
/root/shell/1.sh" failed: No such file or directory这个1.sh是不存在的
127.0.0.0是有问题的,提示密码错误
但这种操作方法是没有问题的
查看一下192.168.137.130机器上是否同步了文件
20.34批量远程执行命令
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
cd /usr/local/sbin
vi exe.expect
#!/usr/bin/expect
set host [lindex $argv 0]
set passwd "liang.123"
set cm [lindex $argv 1] cm为第二个参数,cm是要执行的命令
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect "]"
send "$cm\r"
expect "]
"
send "exit\r"
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
加执行的权限
chmod a+x exe.expect
再去定义一个exe.sh脚本
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
vi exe.sh
#!/bin/bash
for ip in cat /tmp/ip.list
do
echo $ip
./exe.expect $ip "hostname"
done
在2台机器上执行命令成功
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

转载于:https://blog.51cto.com/13450039/2108344

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值