分发系统介绍、 expect脚本远程登陆、远程执行命令、传递参数

1、分发系统介绍

当咱们要上线一个新代码的时候,若是机器少,咱们的工做量不会很大,很容易完成,若是设备不少,有几十台,上百台的话,那咱们的工做量会很是大,并且也不规范,这时,咱们就能够用能够用开源的软件,expect脚本语言,进行实现分发系统的功能。shell

2、 expect脚本远程登陆

一、expect脚本远程登陆
二、安装:yum install -y expect
三、写一个expect的自动远程登陆脚本
内容以下:ssh

#! /usr/bin/expect
set host "192.168.1.31" #这是expect的变量,它和shell不一样的是变量前面要加set
set passwd "123456"
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"; exp_continue} #第一次登陆会提示yes或者是no,send是发送。\r是回车。
"assword:" { send "$passwd\r" }
}
interact   # 须要停留在远程的机器上,不须要退出。

四、给脚本权限:chmod a+x 1.expect
五、执行:./1.expectide

3、 expect脚本远程执行命令

一、自动远程登陆后,执行命令并退出
增长脚本以下内容:spa

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

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"

二、执行脚本
./2.expect
三、 回车退出
四、从新执行自动登陆脚本
五、./1.expect
六、查看远程建立的文件
七、ls -l /tmp/2018.txt code

4、expect脚本传递参数

一、传递参数
vi 3.expect
增长以下脚本内容:it

#!/usr/bin/expect

set user [lindex $argv 0] #把第一个参数的值赋给user
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"

二、给权限;
chmod a+x 3.expect
三、执行
./3.expect root 192.168.1.31 "ls;w;vmstat 1" #当有多个命令 须要用双引号 做为一个参数传进去
四、查看
ls;w;vmstat 1class

相关文章
相关标签/搜索