shell脚本中使用scp自动获取目的文件

本文介绍如何利用Expect脚本实现SSH方式下跨主机文件的自动化传输。通过两种不同的脚本编写方式,演示了如何自动处理SSH连接过程中的yes/no确认及密码输入,最后验证文件传输是否成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 安装expect

[root@centos7 ~]# yum install expect

2. 写入脚本test2.sh

[root@centos7 ~]# vi test2.sh

#!/bin/bash
ip=$1  
filename=$2
expect -c"
	set timeout 1
	spawn scp root@${ip}:/路径/${filename} . 
	expect {
		*yes/no* {send \"yes\r\";exp_continue}
		*password:* {send \"密码\r\"}
		}
	interact
	"
echo  "Copy is successful!"

3.修改权限test2.sh

[root@centos7 ~]# chmod 755 test2.sh 

3.执行test2.sh

[root@centos7 ~]# ./test2.sh ip地址 文件名

在这里插入图片描述

4.另一种方法,个人更喜欢test2.sh

[root@smx ~]# vi test.sh
#!/usr/bin/expect
set timeout 1
#复制文件
spawn scp root@ip地址:/路径/文件名 .
send "yes\r"
expect "*password:"
send "密码\r"
interact
[root@smx ~]# chmod 755 test.sh
[root@smx ~]# ./test.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值