linux跨集群复制文件

本文介绍如何使用SSHPass和Expect两种方法实现SSH的非交互式密码验证,包括下载、安装SSHPass,以及通过.sh脚本定时执行远程文件拷贝。同时,提供了使用Expect脚本进行密码自动填充的示例。

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

方法一:

sshpass-Linux命令之非交互SSH密码验证
ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码。
它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
安装步骤如下:
1. 下载
sshpass下载地址:http://sourceforge.net/projects/sshpass/ 下载为一个 tar.gz的压缩包。
2.把tar.gz的压缩包 上传到linux服务器,此处以sshpass-1.06.tar.gz为例,服务器存放目录为/user/
3.到user目录下,执行:cd /user
4.解压缩
tar -zxvf sshpass-1.06.tar.gz
5.进入解压后的文件目录
执行:cd sshpass-1.06
6.指定安装目录
执行:./configure --prefix=/user/sshpass
说明:/user/sshpass就是安装sshpass的路径。
7.加载
执行:make
再执行:make install
8.复制
执行:cp /user/sshpass/bin/sshpass /usr/bin/
说明:/user/sshpass是安装sshpass的路径。

sshpass -p ‘密码’ scp -r root@192.168.0.4:/user/count_fille.txt /user/


说明如下:11.如需定时执行
(1)生成一个.sh的文件,
执行:vi testsshpass.sh
然后把下面的粘贴进去,并保存
#!/bin/sh
sshpass -p ‘密码’ scp -r root@192.168.0.4:/user/count_fille.txt /user/
(2)授权
chmod +x testsshpass.sh
(3)添加任务计划
执行:crontab -e
添加如下内容
30 11 * * * /user/testsshpass.sh
保存后,再执行service crond restart

方法二:

使用 spawn scp  命令

spawn scp -r username@host:src_file dest_file


#!/usr/bin/expect
set timeout 10
set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set src_file [lindex $argv 3]
set dest_file [lindex $argv 4]
spawn scp -r $username@$host:$src_file $dest_file
expect {
 "(yes/no)?"
 {
  send "yes\n"
  expect "*assword:" { send "$password\n"}
 }
 "*assword:"
 {
  send "$password\n"
 }
}
expect "100%"
expect eof

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值