文档章节

Shell编程(分发系统介绍、expect远程登录、expect远程执行命令、expect传递参数)

蛋黄_Yolks
 蛋黄_Yolks
发布于 09/24 21:43
字数 1019
阅读 10
收藏 12

分发系统介绍expect

分发系统expect即分发脚本,是一种脚本语言;通过他可以实现传输,输入命令(上线代码)
应用场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因为业务增加,代码增加,多台机器,就会非常麻烦;这是只需要一个分发系统,就可以把每次更新的代码发布到需要更新的服务器上

expect脚本远程登录

实验需求:自动远程登录
准备工作:

  • A机器ip:192.168.248.130
  • B机器ip:192.168.248.129

脚本编写:

1.A机器yum安装expect

yum install -y expect

2.A机器编写脚本文件1.expect,脚本内容如下:

#! /usr/bin/expect
set host "192.168.248.129" #expect脚本中定义变量语法
set passwd "123456"
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"; exp_continue}
"assword:" { send "$passwd\r" } #需要密码时发送变量值过去
}
interact #脚本结束,停留在远程的机器上,不会退出。

此文件保证登录信息的,清空的话,重新远程登录ssh 会有提示 /root/.ssh/known_hosts exp_continue 表示继续 \r 表示换行 interact 继续停留在这台机器,不退出

3.添加执行权限

[root@yolks3 ~]# ./1.expect
-bash: ./1.expect: 权限不够
[root@yolks3 ~]# chmod a+x 1.expect

4.执行脚本:成功登录

[root@yolks3 ~]# ./1.expect
spawn ssh root@192.168.248.129
The authenticity of host '192.168.248.129 (192.168.248.129)' can't be established.
ECDSA key fingerprint is SHA256:cYZ9a5uLeFpKmGT7U7X3BIwLdUoZXcRFMSYCgXOkuLA.
ECDSA key fingerprint is MD5:9a:1a:ca:60:8a:bf:ed:b4:45:13:f8:c8:aa:1a:92:f5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.248.129' (ECDSA) to the list of known hosts.
root@192.168.248.129's password: 
Last login: Mon Sep 24 20:45:13 2018 from 192.168.248.1
[root@yolks2 ~]#

expect脚本远程执行命令

实验需求:远程登录之后退出,即A机器执行脚本之后还是A机器的状态
脚本实现:

1.新建脚本2.expect,脚本内容如下:

#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh $user@192.168.248.129

expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
expect "]*" #匹配 ]后边所有
send "touch /tmp/12.txt\r"
expect "]*"
send "echo 1212 > /tmp/12.txt\r"
expect "]*"
send "exit\r"

expect "]*" : 匹配 ]后边所有

2.修改执行权限

[root@yolks3 ~]# ./2.expect
-bash: ./2.expect: 权限不够
[root@yolks3 ~]# chmod a+x 2.expect

3.A机器执行脚本

[root@yolks3 ~]# ./2.expect 
spawn ssh root@192.168.248.129
root@192.168.248.129's password: 
Last login: Mon Sep 24 20:57:24 2018 from 192.168.248.130
[root@yolks2 ~]# touch /tmp/12.txt
[root@yolks2 ~]# echo 1212 > /tmp/12.txt
[root@yolks2 ~]# [root@yolks3 ~]#

4.B机器查看验证文件是否创建成功

[root@yolks2 ~]# ls -l /tmp/12.txt 
-rw-r--r-- 1 root root 5 9月  24 21:10 /tmp/12.txt
[root@yolks2 ~]# cat !$
cat /tmp/12.txt
1212

expect脚本传递参数

传递参数

1.编写脚本3.expect文件,内容如下:

#!/usr/bin/expect

set user [lindex $argv 0] #第一个参数
set host [lindex $argv 1] #第二个参数
set passwd "123456"
set cm [lindex $argv 2] #第三个参数
spawn ssh $user@$host

expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect "]*"
send "$cm\r"
expect "]*"
send "exit\r"

2.添加x权限 : chmod a+x 3.expect 3.执行脚本:./3.expect [参数1] [参数2] [参数3]

[root@yolks3 ~]# ./3.expect root 192.168.248.129 ls
spawn ssh root@192.168.248.129
root@192.168.248.129's password: 
Last login: Mon Sep 24 21:10:31 2018 from 192.168.248.130
[root@yolks2 ~]# ls
2.expect  aming.txt  anaconda-ks.cfg
[root@yolks2 ~]# [root@yolks3 ~]# 

参数3支持多条命令执行:"命令1;命令2;..."

[root@yolks2 ~]# [root@yolks3 ~]# ./3.expect root 192.168.248.129 "ls;w"
spawn ssh root@192.168.248.129
root@192.168.248.129's password: 
Last login: Mon Sep 24 21:32:18 2018 from 192.168.248.130
[root@yolks2 ~]# ls;w
2.expect  aming.txt  anaconda-ks.cfg
 21:33:58 up 50 min,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.248.1    20:45   20:46   0.00s  0.00s -bash
root     pts/1    192.168.248.130  21:33    0.00s  0.00s  0.00s w

© 著作权归作者所有

蛋黄_Yolks
粉丝 8
博文 100
码字总数 112269
作品 0
通州
分发系统--expect

本文索引: 分发系统介绍 expect脚本远程登录 expect脚本远程执行命令 expect脚本传递参数 --- 分发系统介绍 场景介绍:企业中随之业务的逐渐增大,后端所使用的编程语言是php,系统为LAMP/...

Lu_Castiel
02/27
0
0
2018-4-25 18周1次课 分发系统-expect讲解(上)

20.27 分发系统介绍 由于业务迭代更新,需要更改代码,如果机器很多,那么久需要一个分发系统,可以把每段时间更新的代码分别发布到机器上去 分发系统就是上线的shell脚本,核心为expect ex...

alexis7gunner
04/24
0
0
20.27 分发系统介绍;20.28 expect脚本远程登录;20.29 expect脚本远程执行

20.27 分发系统介绍 shell项目-分发系统-expect 20.28 expect脚本远程登录 1. 安装expect : [root@hao-01 ~]# yum install -y expect 自动远程登录 2. 创建配置1.expect脚本(远程登录) : ...

主内安详
04/25
0
0
分发系统介绍expect脚本远程登录expect脚本远程执行命令 expect脚本传递参数

分发系统介绍 分发系统-expect讲解(也就是一个分发的脚本) 场景: 业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因为业...

lyy549745
07/19
0
0
20.27分发系统介绍;20.28expect脚本远程登录;20.29expect脚本远程执行命令;20.30expect脚本传递参数

20.27 分发系统介绍 shell项目-分发系统-expect 20.28 expect脚本远程登录 1. 安装expect [root@hao-01 ~]# yum install -y expect 自动远程登录 2. 创建配置1.expect脚本(远程登录) [root@h...

主内安详
2017/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
6
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
2
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
14
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部