Linux expect脚本与shell脚本相结合

本文介绍了如何在Linux环境中将expect脚本与shell脚本结合使用,以实现远程登录多台服务器并执行特定任务。通过expect的expect和send命令,可以自动响应系统提示并发送命令。示例中,脚本用于启动远程服务器上的应用程序,需要注意脚本路径、日志处理及其它服务的启动配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

expect基础

在使用expect时,基本上都是和以下四个命令打交道:

命令 作用 说明
send 用于向进程发送字符串 命令接收一个字符串参数,并将该参数发送到进程
expect 从进程接收字符串 命令和send命令相反,expect通常用来等待一个进程的反馈,我们根据进程的反馈,再发送对应的交互命令
spawn 启动新的进程 spawn后的send和expect命令都是和使用spawn打开的进程进行交互
interact 允许用户交互 主要用于退出自动化,进入人工交互

expect脚本我们这里只使用了expect 和 send,expect意味着出现的提示信息,send就可以书写正常的linux命令,具体看例子。具体书写还是要靠大家自己调试,基本框架都是我这个例子里面。

这个例子是bash脚本和expect脚本相结合

#! /bin/bash     
# bash脚本的标志

/usr/bin/expect <<EOF                    
# 这里意味着bash脚本中嵌套着expect脚本
set timeout -1    
# 设置超时时间,-1意思是永远也不超时
spawn ssh root@192.168.1.15 
# 意味着远程登录到我这个应用的数据库服务器

expect {
   
	"*(yes/no)*" {
   
		 send "yes\n"
		 expect "passwd:"
		 send "Pandora!74\n"
	}
	"*password:" {
   
		send "Pandora!74\n"
	}
}
# 第一次远程登录别的服务器的时候会出现一些
# 提示,你可以在你自己的应用上ssh +IP尝试一下,我这里  
# 会出现(yes/no),接着会让我输入密码。第二次登录就是  
# 直接提示输入密码。所以这里是‘或’关系中嵌套  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值