首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux expect详解

Linux expect详解 2018-07-11 分类:Linux Shell / 系统运维 / 编程开发 阅读(6670) 评论(0)  随处可见expect 第一次见expect这个命令还是我第一次参加全量上线时候...,那是公司一个牛人用Shell脚本写一套自动部署、MD5 比对、发布全量上线工具,没事时候,看了其中几个脚本,好多expect命令。...先抛出一个问题 现在有两台Linux主机A和B,如何从A主机ssh到B主机,然后在B主机上执行命令,如何使这个过程实现全程自动化?...interact命令用其实不是很多,一般情况使用spawn、send和expect命令就可以很好完成我们任务;但在一些特殊场合还是需要使用interact命令,interact命令主要用于退出自动化...":设置变量; spawn ssh $username@$host:spawn是进入expect环境后才可以执行expect内部命令,如果没有装expect或者直接在默认SHELL执行是找不到spawn

3.3K50
您找到你想要的搜索结果了吗?
是的
没有找到

linuxexpect环境安装以及简单脚本测试

expect是交互性很强脚本语言,可以帮助运维人员实现批量管理成千上百台服务器操作,是一款很实用批量部署工具!...expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装 下载:expect-5.43.0.tar和tcl8.4.11-src.tar 下载地址:https://pan.baidu.com...[root@xw4 tmp]# sh test.sh expect脚本写法: [root@xw4 tmp]# cat test #!...方法: 利用expect编写sshkey.exp在远程主机上生成id_rsa,并重定向到本地.在利用noscp.exp.把文件复制到远程主机 为了节省自己时间,可以写个expect自动化脚本,分享如下...: (1) 如上expect安装后路径是: [root@xw4 ~]# which expect /usr/local/bin/expect (2) 做个expect执行文件软件 [root@xw4

2.2K70

expect命令在linux实现批量ssh免密

/usr/bin/expect而不是普通bash脚本那样 spawn就是用来启动新进程 expect “password” ,注意这个是expect脚本里面内部命令,代表用来等待进程反馈,可以接受字符串和正则表达式...,这段意思就是将spawn启动进程输出当作expect命令输入,如果包含password脚本,就会向着标准输出 输出123456\r ,注意\r代表换行,跟我们输入完一个命令换行是一个道理。...这里我们expect后面是带了大括号,跟上面的写在两行效果一直。可以理解为另一种写法。...,如果匹配不是,那么就要自己输入了,但是我们有可能在第一次有不同提示,这个时候就需要使用多分支语法 expect 只要匹配到aaa 或者password其中一种就会输出。...eof; " } for server in $SERVERS do sshcopyid $server done 以上就是本次介绍expect命令在linux实现批量ssh免密全部过程

2.2K21

# Linux expect命令详解

Linux系统中,expect 是一款非常有用工具,它允许用户自动化与需要用户输入进行交互程序。本文将深入探讨expect命令基本语法、使用方法以及一些最佳实践。...linux-expect.jpg 什么是Expect命令? expect 是一个用于自动化交互式进程工具。它主要功能是根据程序输出模式(patterns)发送输入,从而实现自动化交互。...自动化测试 在测试环境中,expect 可以用于自动化测试,模拟用户输入和操作。这有助于确保程序在各种情况正确性。...错误处理 使用 expect_before 和 expect_after 处理在其他期望之前或之后出现常见模式,提高脚本健壮性。 以下是一个简单expect脚本,用于自动化SSH登录 #!...expect "$ " send "ls\n" expect "$ " send "exit\n" 脚本执行过程如下 _20231202223700.jpg 总结 expect命令是Linux系统中一个非常实用工具

32010

linux expecttimeout设定

在做日志分析工具时,发现在屏幕上拿到日志结果会有点慢,然后查了一expect ssh timeout设置,原来是这里有个默认时间问题,所以整理一expect脚本我们都知道,首先spawn我们要执行命令...,然后就给出一堆expect屏幕输出,如果输出match了我们expect东西,我们就会send一个命令上去,模拟用户输入。...但是expect中等待命令输出信息是有一个timeout设定,默认是10秒。这个特性是防止那些执行死机命令。...一旦到了这个timeout,还是没有屏幕输出的话,expect脚本中下面的代码就会执行。或者我们在expect脚本中如果定义了timeout响应代码的话,这些代码就会被执行。 ...解决这样问题非常简单,最简单办法就是在expect脚本开头定义:  set timeout -1 -- 没有timeout set timeout XX -- 设定具体timeout时间(秒)

3.6K20

Linuxexpect交互语言命令

在服务器开发中,有时候需要同步文件(scp),远程服务器(ssh)等等,难免要进行密码检验,这就麻烦了,不过认识expect就有解决方案啦,那么我们来认识一吧~~~ ---- ****expect简介...**** expectLinux脚本编程工具语言,用来实现自动和交互式任务进行通信,从而不用手动处理。...---- ****与bash共用**** 从上面可以看出第一行已经指定了脚本解析器,但是很多时候或场景我们只希望expect作为shell脚本一个小小调用部分,然而使可以,这也是最常用。...--------expect结束---------- ---- Linux运维基础且常用命令 Linux之crontab定时任务 Linux之sed文本处理命令 Linux之ps进程查看命令 Linux...之expect交互语言命令 Linux之tail命令 ----

1.9K50

Linux expect实现自动登录脚本实例代码

expect expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令。当然若是使用不带密码密钥验证同样可以实现自动登录和自动远程执行命令。...但当不能使用密钥验证时候,我们就没有办法了。所以,这时候只要知道对方机器账号和密码就可以通过expect脚本实现登录和远程命令。.../login.sh】配置别名alias,或移动到可执行目录中,即可实现【login】一键登录; expect是一个处理交互指令,通过expect我们可以把交互过程写到Shell脚本里以实现一些自动化操作...~ expect有四个核心指令: spawn:启动新进程,后跟新进程要执行指令; expect:指定要监听字符串,如果spawn进程返回了匹配字符串(如标准输入提示信息),则触发send; send...:发送指定字符串到spawn进程,代替标准输入; interact:用户参与交互; 对于login.sh执行过程为: 【spawn】启动一个新进程执行ssh登录指令,【expect】监听到标准输入提示信息

2.3K41

linux学习第六十九篇:分发系统介绍,expect脚本远程登录,expect脚本远程执行命令,expect脚本传递参数

分发系统介绍 expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令。当然若是使用不带密码密钥验证同样可以实现自动登录和自动远程执行命令。...但当不能使用密钥验证时候,我们就没有办法了。所以,这时候只要知道对方机器账号和密码就可以通过expect脚本实现登录和远程命令。.../usr/bin/expect set host "192.168.85.132" #要远程登录机器IP set passwd "123456" #远程登录机器密码 spawn ssh root@$...\r" expect "]*" send "echo 1212 > /tmp/12.txt\r" expect "]*" send "exit\r" expect “]*” 表示图中括号里,表示当检测到这个符号时就执行我们要执行命令...远程机器执行命令后创建文本和内容 ? expect脚本传递参数 传递参数 #!

1.6K110

Linuxexpect工具免交互式shell脚本执行

Linuxexpect工具是一个根据脚本与其他交互式程序进行交互。通过在脚本中设定期望值和响应值进行交互操作。主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。...以SSH KEY 生成以及发送到远程服务器为例简单介绍expect工具 expect 启用选项: -c执行脚本前先执行命令,可多次使用-ddebug模式,可以在运行时输出一些诊断信息,与在脚本开始处使用.../-"从文件名为-文件读取)。-i交互式输入命令,使用"exit"或"EOF"退出输入状态--标示选项结束(如果你需要传递与expect选项相似的参数给脚本时),可放到#!行:#!..., 如果匹配成功, 就执行send指令交互;否则等待timeout秒后自动退出expect语句send如果匹配到expect接受到信息,就将send中指令交互传递,执行交互动作。...-y install expect 使用 以vagrant创建虚拟机为例 分别向192.168.56.4、192.168.56.5、192.168.56.7 发送密钥 首先需要保证以下机器可以密码登陆

1.1K10

Here Documents 结合expect使用--(1)

$1, 以及脚本中其他变量等 使用expect 命令来解决自动交互问题是非常广泛expect有自己独特语法,可以写expect脚本来解决复杂交互问题;但是很多时候,我们会需要在shell中通过调用...expect脚本来解决交互问题;这时候就需要Here Documents 来帮忙; 在expect使用时候,需要注意如下几点: expect ... send ......语法结构使用坑,对于下面的语法结构,有时候send命令并没有成功执行,这是因为spawn产生子进程而并不知道send已经结束 expect ... send ......更好写法是: expect ... send ... expect ......也正是这个原因,所以expect一般在最后都会使用如下结构: expect eof 看如下例子: [root@localhost ~]# cat 1.sh #!

38520
领券