Linux 利用 expect 进行 scp 自动同步文件
来源:互联网 发布:机械设计手册软件下载 编辑:程序博客网 时间:2024/05/22 12:48
现在有一个这样的需求:
执行一个脚本,自动从指定服务器上全量拉取指定目录的文件,远程服务器的用户名、端口、密码、目录配置在执行的shell脚本中。
要实现这样的需求,我们使用scp 来实现,但是scp 在执行的过程中需要输入密码,所以我们就需要用到一个工具 “expect” 来实现自动化脚本。
关于 expect 的使用可以参考:http://blog.csdn.net/catoop/article/details/48289991
下面附上2个脚本:
1、进行文件同步的脚本,文件名 expect_scp
#!/usr/bin/expectset timeout 3600set host [lindex $argv 0]set port [lindex $argv 1]set username [lindex $argv 2]set password [lindex $argv 3]set src_file [lindex $argv 4]set dest_file [lindex $argv 5]#spawn scp $src_file $username@$host:$dest_filespawn scp -P $port -r $username@$host:$src_file $dest_fileexpect { "(yes/no)?" { send "yes\n" expect "*assword:" { send "$password\n"} } "*assword:" { send "$password\n" }}expect "100%"expect eof
2、执行本机操作的 shell 脚本,文件名 deploy.sh
#!/bin/shsrc_dir=/data/huiyzl/runtime/dest_dir=/data/huiyzl/host=219.135.214.146port=60203username=rootpassword=LENOVOap123# 目录不存在,则创建,如果存在先删除再创建if [ ! -d $src_dir ]; then mkdir -p $src_direlse rm -rf $src_dir mkdir -p $src_dirfi# 将远程服务器上的文件拷贝到本机./expect_scp $host $port $username $password $src_dir $dest_direcho "end"
deploy.sh 为什么可以直接执行的脚本,内部调用 expect_scp 为专门用来拉取远程服务器上文件的脚本。
脚本比较简单,就不逐行介绍了。
----------------------------------------------
PS:本例的原来用意是做自动化部署用的,测试环境的代码在测试服务器上,该deploy.sh 脚本为正式环境,当测试环境测试通过后,正式环境通过执行 deploy.sh 就可以进行相关内容的同步并进行自动停止和重启服务,完成正式环境的自动化部署。
这个脚本,我们可以在别的服务器上或者通过部署平台进行调用执行。
0 0
- Linux 利用 expect 进行 scp 自动同步文件
- 利用expect实现scp自动交互
- linux scp expect 自动更新文件的脚本
- 利用expect在linux shell脚本中交互(scp远程传输文件示例)
- linux 下采用scp远程传送文件,采用expect技术,支持自动输入密码
- Linux 使用expect工具和scp命令实现自动复制传输文件
- centos ssh和scp利用expect自动填充密码
- expect 交互式 scp 文件
- linux利用scp传输文件
- Solaris下用scp自动同步文件
- 利用scp自动输入密码进行文件远程拷贝或备份
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
- Linux文件同步方法(rsync及scp)
- linux ssh scp expect/密钥 自动登录并自动执行脚本
- 通过expect实现scp密码自动输入
- 【Linux】-利用scp命令远程上传下载文件
- 字节对齐
- Qt、Qte、Qtopia、Qvfb、Qpe概念区别
- 后台服务小点
- redis 起步,安装介绍
- 网络部分(二)
- Linux 利用 expect 进行 scp 自动同步文件
- ubantu不能上网的几个检查步骤
- 半路出家——Java中的访问权限控制
- Unity3d资源管理分析
- [letecode java]Two Sum
- android BaseAdapter
- 奇异值分解(SVD) --- 几何意义
- lintcode-搜索区间-61
- Android-GridView 实例(异步加载,LruCache缓存,图片请求,图片压缩)