Linux - 几种方法来实现scp拷贝时无需输入密码
前言
在实际工作中,经常会将本地的一些文件传送到远程的机器上。scp是一个很好用的命令,缺点是需要手工输入密码。
如何在shell脚本中实现传输文件,而不用手工输入密码呢?接下来介绍三种方法。
一、建立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 oracle@192.168.56.12:/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 tcl8.4.19-src.tar.gz
cd tcl8.4.19/unix
./configure
make
make install
expect安装包下载地址:http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.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 oracle@192.168.56.12:/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,还适用于其它很多需要交互的命令。
参考文档:
《几种方法来实现scp拷贝时无需输入密码》:https://blog.csdn.net/nfer_zhuang/article/details/42646849
《sshpass的安装使用》:https://blog.csdn.net/qq_30553235/article/details/78711491
《Expect工具的安装及使用方法》:https://blog.csdn.net/wangtaoking1/article/details/78268574
Linux - 几种方法来实现scp拷贝时无需输入密码的更多相关文章
- 几种方法来实现scp拷贝时无需输入密码
欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42646849 前言 我在工作中经常要将一些文件传输到另外一个服务器上, ...
- Java字符串比较(3种方法)以及对比 C++ 时的注意项
字符串比较是常见的操作,包括比较相等.比较大小.比较前缀和后缀串等.在 Java 中,比较字符串的常用方法有 3 个:equals() 方法.equalsIgnoreCase() 方法. compar ...
- 几种方法实现ajax请求内容时使用浏览器后退和前进功能
ajax是一个非常好玩的小东西,不过用起来也会存在一些问题. 我们可以利用ajax进行无刷新改变文档内容,但是没办法去修改URL,即无法实现浏览器的前进与后退.书签的收藏功能. 利用location的 ...
- 通过scp拷贝文件时无需交互输入密码
工作中经常需要把一些文件从一个服务器传输到另一台服务器,linux环境下最习惯的方式当然是scp,但是scp需要交互输入密码有时候觉得麻烦,记录几种无需手动输入密码的方法. 方法一:建立SSH互信 此 ...
- js去掉字符串前后空格的五种方法
转载 :http://www.2cto.com/kf/201204/125943.html 第一种:循环检查替换[javascript]//供使用者调用 function trim(s){ ret ...
- js去掉字符串前后空格的五种方法(转)
出处:http://www.2cto.com/kf/201204/125943.html 第一种:循环检查替换[javascript]//供使用者调用 function trim(s){ retu ...
- 【转】VC 多线程中控制界面控件的几种方法
原文网址:https://software.intel.com/zh-cn/blogs/2010/11/30/vc-3 为了保证界面的用户体验经常要把数据处理等放到子线程中进行,然后把结果更新到主界面 ...
- ToStringBuilder学习(二):两种方法用法优缺点及一个问题
研究ApacheCommon源码, 先从一个最简单的开始,即围绕Object类里的toString方法自动化实现的一系列类. 怎么来自动化地实现toString方法, 有两种:反射和手 ...
- 修改android的wifi客户端名称的两种方法
修改android的wifi客户端名称的两种方法 手机连接到无线路由时,在dhcp的客户端列表里面是这样的名称"android-89425253e5de3a2",这就是安卓 ...
随机推荐
- springboot 多环境
springboot 多环境 --spring.profiles.active=dev 查看 Ioc 容器 PostProcessorRegistrationDelegate
- 如何用css实现太极图
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>太 ...
- python进程基础点整理
操作系统 串行: 一个程序完完整整的执行完再执行下一个 并发: 看起来像是同时运行,其实就是程序间的切换频率比较快,看不出来 并行:真正的同时运行 多道技术 空间复用:共用一个内存条,多个进程相互隔离 ...
- Python自动发送邮件--smtplib模块
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText f ...
- SSH框架之Hibernate第三篇
1.1 多表关系分析和创建. 1.1.1 表关系分析和创建 表数据和表数据之间可以存在的关系? 一对多的关系 客户和联系人 建立关系原则: 在多的一方创建一个字段,这个字段作为外键指向一的一方的主键 ...
- 微信小程序新服务消息推送 —— 订阅消息
微信团队前不久公测了「订阅消息」,原有的小程序模板消息接口将于 2020 年 1 月 10 日下线,届时将无法发送模板消息.「订阅消息」将完全替代「模板消息」,这两天得空测试了一波. 1.下发权限机制 ...
- HttpWebRquest.GetRequestStreamAsync()发生延迟
前景提要:此问题不定适用Browser通信方式,主要提供给通信发生异常时解决思路. Q: request请求创建过程发生延迟 [Scene]: .Net的HttpWebRquest.GetRequ ...
- JS基础语法---函数也是一种数据类型
1. 如何获取某个变量的类型? typeof 2. 函数是有数据类型 ,数据类型:是function function f1() { console.log("我是函数"); } ...
- [转]uipath team svn
本文转自:https://docs.uipath.com/studio/docs/svn-version-control SVN Version Control Suggest Edits Openi ...
- iOS常用算法之两个有序数组合并, 要求时间复杂度为0(n)
思路: 常规思路: 先将一个数组作为合并后的数组, 然后遍历第二个数组的每项元素, 一一对比, 直到找到合适的, 就插入进去; 简单思路: 设置数组C, 对比A和B数组的首项元素, 找到最小的, 就放 ...