自动执行远程复制的脚本scp

场景:采用非交互式方式将文件通过scp复制到其他服务器,用到的expect。

需要支持except命令,apt -y install expect

#!/bin/bash
USER="root"
PASSWORD="root@123"
FILENAME="./test.txt"
ID="192.168.1.1
192.168.1.2
"

for ip in ${ID};do
    expect <<EOF
set timeout 20
spawn scp -r $FILENAME ${USER}@${ip}:/tmp
expect {
  "password" {send "$PASSWORD\n"}
}
expect eof
EOF
done

命令分析:

set timeout 20 :设置了except的超时时间为20s。

spawn command:需要expcet监控的命令

expect {} :这个except和外部的except含义不同,代表期望监控的交互内容,可以通过监控关键字来设置自动输入的内容

"password" :这个就是except{}里面期望监控到的关键词,scp远程复制会有输出密码提示,提示里面带"password"关键字

{send " 内容"}:期望发送的内容,这里就是scp远程登录的密码

expect eof :关闭一个except命令

补充:如果是第一次远程scp,except{}里面有2个期望动作,要改成:

"yes/no" {send "yes\n";exp_continue}
"password" {send "${PASSWOrd}\n"} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值