expect脚本同步文件expect脚本指定host和同步的文件构建文件分发系统批量远程执行命
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了expect脚本同步文件expect脚本指定host和同步的文件构建文件分发系统批量远程执行命相关的知识,希望对你有一定的参考价值。
expect脚本当中去把一台机器的文件同步到另外一台机器上去,自动同步文件
[[email protected] sbin]# vim 4.expect ##编辑脚本
写入一下内容:
#!/usr/bin/expect
set passwd "hanshuo"
spawn rsync -av [email protected]:/tmp/12.txt /tmp/
expect {
"yes/no" { send "yes
"}
"password:" { send "$passwd
" }
}
expect eof
加个执行权限
[[email protected] sbin]# chmod a+x 4.expect
测试这个脚本
[[email protected] sbin]# ./4.expect
expect脚本指定host和要同步的文件
指定host和要同步的文件
[[email protected] sbin]# vim 5.expect ##编辑脚本
写入一下内容:
#!/usr/bin/expect
set passwd "hanshuo"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av $file [email protected]$host:$file ##同步文件本机到对方
expect {
"yes/no" { send "yes
"}
"password:" { send "$passwd
" }
}
expect eof
加个执行权限
[[email protected] sbin]# chmod a+x 5.expect
测试这个脚本
[[email protected] sbin]# ./5.expect 192.168.63.101 "/tmp/12.txt" ##把本地的12.txt同步到了远程
构建文件分发系统
掌握了expect的基础知识,用所学的东西构建个文件分发系统,以上是同步一个文件,我的需求同步一堆,这些文件需要写到一个文件列表里边去,我们使用rsync的files-from这个参数就能够实现把列表里边的文件给同步到远程去,那么在列表的路径必须要绝对路径
文件分发系统的实现
首先定义rsync.expect
[[email protected] sbin]# vim rsync.expect ##编辑rsync.expect
写入一下内容:
#!/usr/bin/expect
set passwd "hanshuo"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -avR --files-from=$file / [email protected]$host:/ ##大写R是如果同步机器路径不相同自动创建
expect {
"yes/no" { send "yes
"}
"password:" { send "$passwd
" }
}
expect eof
定义file.list,这个file你可以写到tmp下名字叫file.list
[[email protected] sbin]# vim /tmp/file.list ##编辑文件列表file.list,这个文件里边是你要同步到另一台的文件
写入一下内容:
/tmp/12.txt
/root/shell/1.sh
/root/111.txt
定义ip.list
[[email protected] sbin]# vim /tmp/ip.list ##编辑一个ip.list里边写入你要同步文件的ip
写入以下内容:
192.168.63.101
192.168.63.104
创建rsync.sh编辑它
[[email protected] sbin]# vim rsync.sh ##编辑rsync.sh
写入以下内容:
#!/bin/bash
for ip in `cat /tmp/ip.list`
do
./rsync.expect $ip /tmp/file.list
done
给rsync.expect执行权限
[[email protected] sbin]# chmod a+x rsync.expect
执行rsync.expect
[[email protected] sbin]# sh -x rsync.sh
批量远程执行命令
构建命令批量执行
编辑exe.expect
[[email protected] sbin]# vim exe.expect
写入下列内容:
#!/usr/bin/expect
set host [lindex $argv 0]
set passwd "hanshuo"
set cm [lindex $argv 1]
spawn ssh [email protected]$host
expect {
"yes/no" { send "yes
"}
"password:" { send "$passwd
" }
}
expect "]*"
send "$cm
"
expect "]*"
send "exit
"
给exe.expect执行权限
[[email protected] sbin]# chmod a+x exe.expect
定义一个exe.sh的shell脚本
[[email protected] sbin]# vim exe.sh
写入下列内容:
#!/bin/bash
for ip in `cat /tmp/ip.list`
do
./exe.expect $ip "hostname"
done
执行exe.sh
[[email protected] sbin]# sh exe.sh
扩展
shell多线程 http://blog.lishiming.net/?p=448
以上是关于expect脚本同步文件expect脚本指定host和同步的文件构建文件分发系统批量远程执行命的主要内容,如果未能解决你的问题,请参考以下文章
20.31 expect脚本同步文件 20.32 expect脚本指定host和要同步的文件 20.
expect脚本同步文件expect脚本指定host和同步的文件构建文件分发系统批量远程执行命
expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行
expect脚本同步文件 expect脚本指定host和要同步的文件 构建文件分发系统 批量远程执行