码迷,mamicode.com
首页 > 其他好文 > 详细

20.27分发系统介绍

时间:2018-06-06 16:54:04      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:expect

20.27 分发系统介绍

shell项目-分发系统-expect讲解

使用场景:

假如公司的业务做得越来越大,APP后端服务端所使用的编程语言是php,要想运行这个环境运行php代码,需要搭建lamp,lnmp的环境,最后还需要把代码上传到服务器上面。

在平时工作中,业务不断的迭代,有新的功能出现,这时候就需要更改代码,一台机器还好,甚至还可以在服务器上面更改,但是这样不规范,若干台,两三台的量还可以接受,如果机器特别多,甚至上百台的时候,这上百台机器存储的都是公司的站点。比如一个接口,APP访问量很大,APP需要调用服务端的接口,假如这个接口需要五十台机器去承载,那这时候就需要去搞一个分发系统了,能够让每天,每段时间更新的代码,分别的分布到这五十台机器上面去。


expect介绍

  • 可以说是一种脚本语言,它和shell比较相似,它可以实现传输文件,远程执行命令(不需要输入密码)

  • 它其实是一种上线代码的工具。

  • 上线:开发的代码,发布到线上环境。


准备工作以及过程:

  • 准备一台模板机器,这台机器上面的代码是最新的,准备要上线的代码。

  • 比如准备给50台机器上线,这50台机器的ip地址,用户和密码都需要知道

  • 使用expect脚本,借助于rsync把这些代码给推送到这50台机器上面去。假如需要在某机器上面执行命令,还可以远程执行这些命令。

  • 就是这样的一个过程。


20.28 expect脚本远程登录


1 安装expect

[root@centos7-01 ~]# yum install -y expect

2 编写expect脚本

目的自动远程登录,并执行命令

[root@centos7-01 ~]# cd /usr/local/sbin/
 #! /usr/bin/expect
set host "192.168.189.129"
set passwd "?????"
#此处输入你的登录密码.
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
interact


脚本解释:

set host "192.168.189.129"
set passwd "?????"
spawn ssh root@$host
远程登录的主机,以及密码,set host=$host,在except里,set设定变量
spwan后接的是系统的shell命令,ssh远程登录,root@$host利用root登录进去
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
interact
这是核心执行语句
"yes/no"表示第一次远程登录192.168.189.129,会提示"yes/no"。因为第一次登录,本机的/root/.ssh/know_hosts文件会误认为这是一台陌生的机器,严格上可能是不安全,所以会提示。
"yes/no" { send "yes\r"; exp_continue} 
expect截取系统的提示,当遇到提示"yes/no"的时候,发送yes(yes\r,\表示回车键), exp_continue表示继续
"password:" { send "$passwd\r" }
expect截取系统的提示,当遇到提示"password:"的时候,把密码(set passwd的变量)发送过去,
expect支持用户交互
interact结束

3 添加执行权限

[root@centos7-01 sbin]# chmod a+x 1.expect

4 执行脚本

[root@centos7-01 sbin]# ./1.expect 
spawn ssh root@192.168.189.129
root@192.168.189.129's password: 
Last login: Wed Jun  6 15:27:39 2018 from 192.168.189.1
[root@centos7-02 ~]#

5 查看ip地址

[root@centos7-02 ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.189.129  netmask 255.255.255.0  broadcast 192.168.189.255
        inet6 fe80::b485:96d0:c537:251e  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:73:7c:4c  txqueuelen 1000  (Ethernet)
        RX packets 266  bytes 27149 (26.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 257  bytes 25678 (25.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

成功登录192.168.189.129,主机名也变了


20.27分发系统介绍

标签:expect

原文地址:http://blog.51cto.com/13578154/2125533

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!