小型自动化运维--expect脚本

小型自动化运维--expect脚本


expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令。知道用户名和密码或者是使用密钥验证都可以使用,下面介绍expect 脚本实现登陆和远程命令:

  • 安装ssh包


# yum install -y expect openssh-clients 【依赖 ssh ,通信的机器都要安装 openssh-clients】


  • 编写脚本

# vim /usr/local/sbin/1.expect

#! /usr/bin/expect

set host "192.168.8.120"

set passwd "wtf"

spawn ssh [email protected]$host

expect {

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

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

}

interact

  • 脚本解释

#! /usr/bin/expect

set host "192.168.8.120" #这个ip指:终端要远程的那台主机的地址

set passwd "wtf" #这个wtf是要远程的那台主机的密码

spawn ssh [email protected]$host #spawn 是 expect 的语句,后面是登陆另外一台机器的命令

expect {  #进入 expect 语句模块

"yes/no" { send "yes\r"; exp_continue} #\r 在 expect 脚本里面代表换行

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

}

interact  #expect 结束符


  • 执行脚本

# chmod +x /usr/local/sbin/1.expect #授予执行权限


两种执行方式:

# /usr/local/sbin/1.expect 【执行命令,无需 /bin/sh ,因为这并不是 shell 脚本】

# /usr/bin/expect /usr/local/sbin/1.expect 【执行命令,使用 expect 】


  • 知识扩展

(1)expect 脚本和 shell 结构很像,但是并不一样。 expect 并不是 shell。

(2)expect 脚本里面有密码有用户名,比较不安全,在不会使用自动化运维工具如 puppet的情况下,先使用 expect 这样的自定义脚本的形式,实现自动化。

(3)expect适用于比较小型的公司,服务器不是太多的情况,如果服务器数量很多(几百台上千台),则需要借助puppet 自动化运维工具。

时间: 2024-08-03 04:43:27

小型自动化运维--expect脚本的相关文章

小型自动化运维--expect脚本之自动同步

小型自动化运维--expect脚本之自动同步 expect脚本可以运用于自动化运维多个方面,例如:可以自动到远程机器执行命令,也可以传输文件到远程机器上. 脚本如下: #!/usr/bin/expect set passwd "wtf" spawn rsync -av [email protected]:/tmp/shiyan.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:&

小型自动化运维--expect脚本V2版

小型自动化运维--expect脚本V2版 在实际运维工作中,需要我们向远程主机同步数据,可以用rsync来实现.那么用expect脚本怎么实现数据传输完成之后自动退出远程主机呢?在开始expect脚本V2版之前,我们先来看下,使用expect脚本来实现远程主机的登入,脚本如下: #! /usr/bin/expect set host "192.168.8.120" set passwd "wtf" spawn ssh [email protected]$host e

小型自动化运维--expect脚本之传递函数

小型自动化运维--expect脚本之传递函数 [[email protected] ~]# vim 3.expect #!/usr/bin/expect set user [lindex $argv 0] set host [lindex $argv 1] set passwd "wtf" set cm [lindex $argv 2] spawn ssh [email protected]$host expect { "yes/no" { send "y

小型自动化运维--expect脚本之指定ip,指定文件进行同步操作(一)

小型自动化运维--expect脚本之指定ip,指定文件进行同步操作 # vim 5.expect #!/usr/bin/expect set passwd "wtf" set host [lindex $argv 0] set file [lindex $argv 1] spawn rsync -av $file [email protected]$host:$file expect { "yes/no" { send "yes\r"} &quo

小型自动化运维--expect入门知识

小型自动化运维--expect入门知识 Expect的自动交互工作流程简单说明: spawn启动指定进程-->expect获取期待的关键字-->send向指定进程发送指定字符-->进程执行完毕,退出脚本. spawn命令 如果没有spawn命令,expect程序将会无法实现自动交互. spawn命令的语法为: spawn [选项] [需要自动交互的命令或程序] 例如:spawn ssh [email protected] uptime 说明:在spawn命令的后面,直接加上要执行的命令或

自动化运维 Expect

Mac 下载:brew install homebrew/dupes/expect expect : ->  自动化脚本工具:  用于处理交互命令; #注意 调用时并不是使用的 /bin/bash 而是 expect#!/usr/local/bin/expect Expect中最关键的四个命令是send,expect,spawn,interact. send:用于向进程发送字符串  expect:从进程接收字符串  {捕捉返回信息中的字符串} spawn:启动新的进程   {启动新的进程} in

小型自动化运维工具pssh和传输工具rsync

一.简单介绍 1.pssh全称是parallel-ssh,基于Python编写的并发在多台服务器上批量执行命令的工具.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.它相当于ansible的简化版,执行起来速度比ansible快,支持文件并行复制,远程命令执行,杀掉远程主机上的进程,杀手锏是文件并行复制. 2.相关参数 -h –hosts 主机文件列表,内容格式”[[email protected]]host[:port]”

企业实战脚本案例3:批量管理自动化运维100台小规模服务器

批量管理自动化运维100台小规模服务器 目录 1.脚本背景介绍 2.脚本技术需求分析 2.1 SSH免登陆认证 2.2 Expect实现key分发 2.2 PSSH家族命令详解 3.脚本功能及实现过程 3.1 脚本运行环境介绍 3.2 脚本功能介绍 3.3 脚本编写思路 3.4 脚本编写案例 一.脚本背景介绍 在企业中经常会用遇到小规模的集群服务器,在日常的管理中经常会遇到重复性的动作,如更新备上百台服务器上的ssh公钥.备份上百台服务器上的/etc/passwd配置文件等等,通常情况下采用专用

自动化运维Ansible批量部署服务+shell脚本批量推送公钥

一.概述分析 由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下.这时,部署自动化运维就可以尽可能安全.高效地完成这些工作.一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的ABem程序来完成管理功能,如: Puppet.Func. Zabbix等:另外一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如: Ansible. Fabric等. - 下面介绍几款功能类似的自动化运