Linux实现scp拷贝时无需输入密码

一、建立SSH的信任关系
二、使用sshpass工具
2.1 sshpass工具的安装(介绍两种方式)
先检查系统有没有sshpass

whereis sshpass

a. yum安装

yum install sshpass

b. 源码安装
sshpass安装包下载地址:https://sourceforge.net/projects/sshpass/files/

tar -zxvf sshpass-1.06.tar.gz
cd sshpass-1.06
./configure
make
make install

2.2 sshpass工具的使用
测试是否安装成功:man sshpass
使用 sshpass -p password scp file user@ip:dir, 示例如下

sshpass -p oracle scp /home/oracle/single.txt [email protected]:/home/oracle

三、使用expect工具
3.1 expect工具的安装(介绍两种方式)
先检查系统有没有expect

whereis expect

a. yum安装

yum install expect

b. 源码安装

expect工具是依赖tcl的,所以也需要安装tcl

tcl安装包下载地址:https://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz

解压安装

tar -zxvf expect5.45.tar.gz
cd expect5.45
./configure --with-tcl=/usr/local/lib --with-tclinclude=../tcl8.4.19/generic
make
make install
ln -s /usr/local/bin/expect /usr/bin/expect

3.2 expect工具的使用  
测试是否安装成功

expect

出现下面界面就表示安装成功

expect1.>
expect1.> exit

通过一个示例,演示如何使用expect
a.先创建一个脚本

vi test.exp
 
#!/usr/bin/expect
set timeout -1
spawn scp /home/oracle/single.txt [email protected]:/home/oracle
expect "*password:"
send "oracle\n"  #这里填远程用户的密码
expect "100%"
expect eof

b.测试运行脚本

chmod +x test.exp
expect test.exp

c.将脚本加到crontab里

crontab -e
 
* * * * * expect /home/oracle/test.exp &> /home/oracle/test.log

expect比sshpass用起来更复杂,但expect功能更加强大,并不仅仅适用于scp,还适用于其它很多需要交互的命令。
[转自] https://www.bbsmax.com/A/WpdK39Q1dV

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