shell ssh sftp 远程自动部署(上传文件)
2016-09-06 16:14
429 查看
前提:ssh sftp 无密码登陆配置方法
1.生成密钥对:ssh-keygen -t rsa
2.将私有密钥保存本地: ~/.ssh/id_rsa,
将公有密钥复制到远程服务器: ~/.ssh/authorized_keys
3.修改公钥文件的访问权限 chmod 644 authorized_keys
4.可能出现的异常
异常:sign_and_send_pubkey: signing failed: agent refused operation
原因: ssh-agent isn't working
命令:`eval ssh-agent -s`
`ssh-add` 或者 `ssh-add ~/.ssh/my_other_key`
5.远程部署指定目录
1.生成密钥对:ssh-keygen -t rsa
2.将私有密钥保存本地: ~/.ssh/id_rsa,
将公有密钥复制到远程服务器: ~/.ssh/authorized_keys
3.修改公钥文件的访问权限 chmod 644 authorized_keys
4.可能出现的异常
异常:sign_and_send_pubkey: signing failed: agent refused operation
原因: ssh-agent isn't working
命令:`eval ssh-agent -s`
`ssh-add` 或者 `ssh-add ~/.ssh/my_other_key`
5.远程部署指定目录
#!/bin/bash sourcePath="/home/xinhuanet/workspace/out/artifacts/web_war_exploded" targetPaht="/home/workspace/ttt" len=${#sourcePath} user="root" targetIP="ip" #创建远程目录 mkdir_remote_dir(){ ssh $user@$targetIP<<EOF if [ ! -d $1 ]; then mkdir $1 fi exit EOF } #上传远程文件 sftp_upload_file(){ sftp $user@$targetIP<<EOF put -r $1 $2 quit EOF } #遍历本地目录 list_file(){ for file in `ls $1` do #file 文件名 $1 路径名 ; local_path本地全路径 local_path=$1/$file #截取本地根路径${local_path:${len}} ;remote_path远程全路径 remote_path=$targetPaht${local_path:${len}} echo $local_path"--->to---->"$remote_path if [ -d $local_path ]; then mkdir_remote_dir $remote_path list_file $local_path elif [ -f $local_path ]; then sftp_upload_file $local_path $remote_path else echo 'not d and f' fi done } #部署整个目录 #list_file $sourcePath #--------一下方式---基于git------------------------------------------------ #基于git diff commit_id 查看差异文件清单进行差异化的自动化部署 #由于git中文件路径与本地编译后的文件路径存在差异,需要进一步处理. #处理方式不统一,根据个人实际情况 git_file_list(){ list_files=`git diff $1 $2 --name-only` for file in $list_files do file=${file/#"home/WebRoot/"/""}#替换。源码路径与编译路径转换 file=${file/#"home/src"/"WEB-INF/classes"}#替换。源码路径与编译路径转换 file=${file/%".java"/".class"}#替换。源码文件与编译文件转换 echo $sourcePath/$file echo $targetPaht/$file #创建远程目录(不存在时) mkdir_remote_dir `dirname $targetPaht/$file` sftp_upload_file $sourcePath/$file $targetPaht/$file done } #两个commit 之间的差异文件清单 git_file_list $1 $2
相关文章推荐
- linux下SSH远程登录另一台LINUX,并且用sftp上传下载文件
- 通过SHELL脚本实现SFTP文件自动上传与下载
- idea自动上传工程部署文件,远程部署
- C#远程执行Linux系统中Shell命令和SFTP上传文件
- CentOS7 下使用sftp客户端上传文件到特定文件夹,外层其他文件夹不可访问,不可远程ssh登录
- 远程备份文件后自动上传 RCP
- 技巧和诀窍: 如何上传一个.SQL文件到远程主机并且执行它来部署一个SQL数据库
- 利用FileZilla和SSH Secure Shell Client通过ssh上传和下载Ubuntu上文件
- 支持代码高亮、图片水印、远程文件自动上传的fckeditor
- Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本
- 技巧和诀窍: 如何上传一个.SQL文件到远程主机并且执行它来部署一个SQL数据库
- Ubuntu架设HTTP方式访问的SVN服务器以及war文件上传自动部署
- linux文件上传完毕后自动发邮件shell ---原创
- sftp自动上传文件脚本
- 技巧和诀窍: 如何上传一个.SQL文件到远程主机并且执行它来部署一个SQL数据库
- Linux 利用shell中使用ftp自动下载上传文件
- PSFTP自动登录SFTP服务器,上传指定文件...
- ssh远程执行shell脚本结束之后不能自动退出
- shell实现ssh自动登录远程主机
- 技巧和诀窍: 如何上传一个.SQL文件到远程主机并且执行它来部署一个SQL数据库