标签:expect文件分发 同步 执行命令
expect脚本自动同步文件#!/usr/bin/expect
set passwd "1q2w3e"
spawn rsync -av root@192.168.67.129:/tmp/12.txt /tmp/
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof
如果尝试取消最后一行,expect eof
会出现,还没输入密码就退出的情况
/tmp目录下也没文件
指定host和要同步的文件,从本机到对方
#!/usr/bin/expect
set passwd "1q2w3e"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av $file root@$host:$file
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof
rsync.expect 内容
#!/usr/bin/expect
set passwd "1q2w3e"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -aRv $file root@$host:$file
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof
ip.list内容
[root@aminglinux01 sbin]# cat /tmp/ip.list
192.168.67.129
192.168.67.130
127.0.0.1
file.txt内容
[root@aminglinux01 sbin]# cat /tmp/file.txt
/tmp/12.txt
/root/shell/1.sh
/root/111/222/lll.txt
rsync.sh 内容
[root@aminglinux01 sbin]# cat rsync.sh
#!/bin/bash
for ip in ‘cat /tmp/ip.list‘
do
./rsync.expect $ip /tmp/file.txt
done
出现问题,暂未解决
发现问题点,修改标点符号,即可。忘了的作用了<br/>#!/bin/bash<br/>for ip in
cat /tmp/ip.list` * 注意:就是这两个不是单引号的标点符号
do
./rsync.expect $ip /tmp/file.txt
done
实验结果:
[root@aminglinux01 sbin]# sh -x rsync.sh
++ cat /tmp/ip.list
cat /tmp/ip.list
‘cat /tmp/ip.list
‘sent 473 bytes received 84 bytes 1114.00 bytes/sec
total size is 174 speedup is 0.31
cat /tmp/ip.list
‘验证之后发现 文件同步到67.130上了
再同步一次就成功了
[root@aminglinux01 sbin]# sh -x rsync.sh
++ cat /tmp/ip.list
cat /tmp/ip.list
‘sent 345 bytes received 65 bytes 820.00 bytes/sec
total size is 174 speedup is 0.42
cat /tmp/ip.list
‘sent 162 bytes received 15 bytes 354.00 bytes/sec
total size is 174 speedup is 0.98
cat /tmp/ip.list
‘sent 159 bytes received 12 bytes 114.00 bytes/sec
total size is 174 speedup is 1.02
可以到67.129 67.130 验证文件是否同步过去,此处图省略。
#!/usr/bin/expect
set host [lindex $argv 0]
set passwd “1q2w3e"
set cm [lindex $argv 1]
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect "]"
send "$cm\r"
expect "]"
send "exit\r"
#!/bin/bash
#!/bin/bash
for ip in cat /tmp/ip.list
do
./exe.expect $ip "hostname"
done
expect 脚本同步文件,指定host和要同步的文件,构建文件分发系统,批量远程执行命令
标签:expect文件分发 同步 执行命令
原文地址:http://blog.51cto.com/13528516/2108370