解决Linux下Scp命令免密码远程复制
来源:互联网 发布:股票下单软件 定制 编辑:程序博客网 时间:2024/05/10 04:38
今天需要备份Solr中的一张大表的Shard(估计几百G)到一块硬盘里,一共11个节点,如果挨个备份那就需要一定时间了,第一时间想到的办法是,用nohup后台Scp过去
下面是命令
nohup scp -r /solr/tableName* root@192.168.*.*:/mnt/usb1 > /dev/null &
可是在节点上执行出现了问题,看日志应该是*号匹配到的文件每个都需要输入一次密码.
唉这下估计是不行了,但想了想如果不加nohup这样敲又可以
scp -r /solr/shard* root@192.168.1.1:/mnt/usb
不过这样我就只能开着shell一直等到他全部备份了,那样需要很长时间,而且我是连着VPN操作的
不过我记得还有一个命令可以解决这种场景
下面就是我的解决方案:将下面的命令保存为expect.sh脚本,并且安装expect环境,执行nohup sh expect.sh >/de v/null & 。
注意:不要忘记添加 spawn bash -c 该命令解决Spawn 中通配符识别问题,如不添加则expect 将会把solr/tab* 识别为字符串,而不是多个路径 因为expect相当于一个独立环境,不回将*号识别为通配符
方案一
#!/bin/bash#添加shell环境/usr/bin/expect -c "#设置超时时间-1为永不超时set timeout -1spawn bash -c \"scp -r /solr/shard* root@192.168.1.1:/mnt/usb \"expect \"password:\" send \"123456\r\"# 如果遇到了文件结束符(EOF),该程序就会停下来,然后expect返回expect eof
方案二(方案一在一开始调试的时候有问题,后来在研究明白expect eof 后才完善方案一)
#!/bin/bash#在bin/bash情况加添加循环逐个进行scpfor file in `ls /solr/ | grep shard`do/usr/bin/expect -c " set timeout -1spawn bash -c \"scp -r /solr/$file root@192.168.1.1:/mnt/usb\"expect { #exp_continue 继续执行后面的匹配 \"(yes/no)?\" {send \"yes\r\";exp_continue} \"password:\" {send \"123456\r\"}}expect eof"done
该解决方案思路是采用Except命令来解决交互性的,详细使用参考下文
http://www.cnblogs.com/lzrabbit/p/4298794.html
http://www.myexception.cn/linux-unix/1772272.html
0 0
- 解决Linux下Scp命令免密码远程复制
- [Linux]scp 命令远程复制
- Linux scp 命令远程复制
- Linux下SCP命令不输入密码(免密码)备份
- scp免密码远程拷贝
- Linux命令行二:远程复制命令 scp
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
- scp 命令远程复制
- Linux下scp远程复制文件
- linux远程复制SCP
- scp远程无密码复制
- linux scp 免密码传输
- scp复制可以解决linux远程复制问题 connection refuse
- Linux中的远程复制,scp命令,可以复制文件夹
- Linux下SSH远程文件传输命令scp
- linux下的远程拷贝命令scp
- 选项菜单
- 微信公众号基础04_分享和录音功能的实现
- 知识库--Web+Digester(73)
- eclipse中新建JSP页面修改自动为UTF-8
- Java开发-使用Ajax进行文件与其他参数的上传
- 解决Linux下Scp命令免密码远程复制
- 软件架构设计培训我学到了什么?
- s5pv210学习<二>s5pv210启动模式
- python3 学校,班级,学生类的三级关系
- 第七届蓝桥杯省赛7-剪邮票
- OpenCV的基本矩阵操作与示例
- 如何使得服务器面向多个客户端
- C语言sprintf()函数:将格式化的数据写入字符串
- servlet 配置