expect spawn 实现远程一键部署
2016-07-27 10:25
190 查看
为了网站的安全,一般服务器是不会安装ftp的,更不会针对windows客户端安装类似rz等软件。一般都是 scp,scp是有Security的文件copy,基于ssh登录。那怎么能够实现自动上传和执行文件呢。那就必须使用Expect的spawn了。
Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [is a] software suite for automating interactive tools)。使用它系统管理员 的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。
Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。甚至可以实现实现简单的BBS聊天机器人。
举个例子
#!/usr/bin/expect
/usr/bin/expect <<-EOF
spawn /usr/bin/ssh root@$1
expect "*password:"
send "$2\r"
expect "*]#"
send "/root/testAppSSHDeploy.sh\r"
expect "*]#"
send "exit\r"
此脚本通过输入ip地址和密码进行登录,并进行执行自动部署脚本。
如果是两个服务器之间进行执行。比如打包服务器和正式服务器需要进行文件的上传和部署,可以使用密钥进行文件的上传和登录部署。
命令如下
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub root@目标ip:/root/.ssh/authorized_keys
Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [is a] software suite for automating interactive tools)。使用它系统管理员 的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。
Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。甚至可以实现实现简单的BBS聊天机器人。
举个例子
#!/usr/bin/expect
/usr/bin/expect <<-EOF
spawn /usr/bin/ssh root@$1
expect "*password:"
send "$2\r"
expect "*]#"
send "/root/testAppSSHDeploy.sh\r"
expect "*]#"
send "exit\r"
此脚本通过输入ip地址和密码进行登录,并进行执行自动部署脚本。
如果是两个服务器之间进行执行。比如打包服务器和正式服务器需要进行文件的上传和部署,可以使用密钥进行文件的上传和登录部署。
命令如下
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub root@目标ip:/root/.ssh/authorized_keys
相关文章推荐
- shell脚本编写比较两个数的大小
- handlebars学习总结
- HDU 4004 The Frog's Games(青蛙过河,二分)
- HTTP四种常见的POST提交数据方式
- Redis 事务
- 线程通信与进程通信的区别
- HTTP学习笔记01-URL
- Plus One
- 二分查找总结
- iOS判断输入的字符是否都是中文
- jQuery resize 事件增强版
- OGL光照
- 浪祥电站调速器被改造
- dubbo环境搭建
- 单元测试框架Jasmine学习笔记
- 计算盒子模型的尺寸、display属性、块级和内联元素、浮动、overfloat
- Redis 发布订阅
- java 8 增强的工具类:Arrays
- DNS服务器
- 顺序表应用2:多余元素删除之建表算法