scp结合expect脚本的一些应用

  • 题目:当前有若干台主机,每台主机上都有一个同名文件夹,文件夹中的路径相同,但是在同名文件夹中
    不同主机上可能有不同的文件,现在要把这些文件集中到一台主机上同时保持原有的路径不变。

  • 解决方法:shell脚本+expect脚本实现自动复制,采用scp命令

  • 实现效果:
    1、同名文件会重复覆盖
    2、不同文件会保存

shell脚本(在汇总主机上执行)

#!/bin/bash
file_list=(ubuntu@193.112.135.231:/home/ubuntu/testfile ubuntu@193.112.135.232:/home/ubuntu/testfile1) #两台存放相同文件名的主机
password_list=("012345678" "012345678") #两台主机对应的密码
for((i=0;i<${#file_list[@]};i++)) #循环遍历两台主机
do
		./scp_copy.exp ${file_list[i]} ${password_list[i]}   
done
  • 可以看出shell脚本调用了expect脚本

expect脚本

#!/usr/bin/expect
set normalizing "/root" #设置汇总目录
set ip [lindex $argv 0] #提取shell命令中调用expect脚本的变量0
set password [lindex $argv 1] #提取shell命令中调用expect脚本的变量1
puts $ip #打印文件目录
puts $password #打印主机密码
spawn scp -r $ip ${normalizing} #spawn为expect中的语法格式,意思为执行一条命令
expect "*password:" #遇到password:提示的时候执行下面的语句
send $password #输入密码
send "\r" #输入回车键,"\n"是换行符
expect eof
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值