2018.10.25日,预习笔记,分发系统介绍

笔记目录

  1. 分发系统介绍
  2. expect脚本远程登录
  3. expect脚本远程执行命令
  4. expect脚本传递参数
  5. expect脚本同步文件
  6. expect脚本指定host和要同步的文件
  7. 构建文件分发系统
  8. 批量远程执行命令
  9. 扩展:

shell多线程 http://blog.lishiming.net/?p=448
给你提供一本电子书 链接:http://pan.baidu.com/s/1mg49Taw 密码:yk4b
shell习题做一下 http://www.apelearn.com/study_v2/chapter15.html#shll

 

一.分发系统介绍

  • 使用场景:网站,app,后端批量更改,上线代码
  • 其实这个分发系统就是一个上线的脚本
  • 上线代码,就是讲开发人员的代码,放入到线上的服务里面去

 

二.expect脚本远程登录

2018.10.25日,预习笔记,分发系统介绍_第1张图片

  • yum install -y expect  
  • 自动远程登录  

#! /usr/bin/expect

set host "192.168.133.132"

set passwd "123456" 

spawn ssh root@$host

expect {

"yes/no" { send "yes\r"; exp_continue}

"assword:" { send "$passwd\r" }

}

interact

 

三. expect脚本远程执行命令
2018.10.25日,预习笔记,分发系统介绍_第2张图片

  • 自动远程登录后,执行命令并退出

#!/usr/bin/expect

set user "root"

set passwd "123456"

spawn ssh [email protected]

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脚本传递参数

2018.10.25日,预习笔记,分发系统介绍_第3张图片

  • 传递参数

#!/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"

 

五.expect脚本同步文件

2018.10.25日,预习笔记,分发系统介绍_第4张图片

  • 自动同步文件

#!/usr/bin/expect

set passwd "123456"

spawn rsync -av [email protected]:/tmp/12.txt /tmp/

expect {

"yes/no" { send "yes\r"}

"password:" { send "$passwd\r" }

}

expect eof

 

六.expect脚本指定host和要同步的文件

2018.10.25日,预习笔记,分发系统介绍_第5张图片

  • 指定host和要同步的文件

#!/usr/bin/expect

set passwd "123456"

set host [lindex $argv 0]

set file [lindex $argv 1]

spawn rsync -av $file root@$host:$file

expect {

"yes/no" { send "yes\r"}

"password:" { send "$passwd\r" }

}

expect eof

 

七.构建文件分发系统

2018.10.25日,预习笔记,分发系统介绍_第6张图片

2018.10.25日,预习笔记,分发系统介绍_第7张图片

2018.10.25日,预习笔记,分发系统介绍_第8张图片

  • 需求背景 对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台。所以,自动同步文件是至关重要的。  
  • 实现思路 首先要有一台模板机器,把要分发的文件准备好,然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可。  
  • 核心命令 rsync -av --files-from=list.txt / root@host:/
  • 文件分发系统的实现  
  • rsync.expect 内容

#!/usr/bin/expect

set passwd "123456"

set host [lindex $argv 0]

set file [lindex $argv 1]

spawn rsync -av --files-from=$file / root@$host:/

expect {

"yes/no" { send "yes\r"}

"password:" { send "$passwd\r" }

}

expect eof  

  • ip.list内容

192.168.133.132

192.168.133.133 ......

  • rsync.sh 内容

#!/bin/bash

for ip in `cat ip.list`

do    

echo $ip    

./rsync.expect $ip list.txt

done

 

八.批量远程执行命令

2018.10.25日,预习笔记,分发系统介绍_第9张图片

2018.10.25日,预习笔记,分发系统介绍_第10张图片

  • exe.expect 内容

#!/usr/bin/expect

set host [lindex $argv 0]

set passwd "123456"

set cm [lindex $argv 1]

spawn ssh root@$host

expect {

"yes/no" { send "yes\r"}

"password:" { send "$passwd\r" }

}

expect "]*"

send "$cm\r"

expect "]*"

send "exit\r"

  • exe.sh 内容

#!/bin/bash

for ip in `cat ip.list`

do    

echo $ip    

./exe.expect $ip "w;free -m;ls /tmp"

done

 

 

转载于:https://my.oschina.net/u/3912766/blog/2253167

你可能感兴趣的:(2018.10.25日,预习笔记,分发系统介绍)