linux跨集群复制文件

方法一:

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 [email protected]:/user/count_fille.txt /user/

linux跨集群复制文件_第1张图片
说明如下:11.如需定时执行
(1)生成一个.sh的文件,
执行:vi testsshpass.sh
然后把下面的粘贴进去,并保存
#!/bin/sh
sshpass -p ‘密码’ scp -r [email protected]:/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

 

你可能感兴趣的:(运维,linux)