博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下shell脚本执行交互式操作命令 —【expect】
阅读量:5754 次
发布时间:2019-06-18

本文共 739 字,大约阅读时间需要 2 分钟。

  hot3.png

很多情况下,为了开发方便,会写一些小工具辅助。下面简单分享下linux 下执行shell脚本时遇到交互式场景时的解决办法。

场景:linux 下ssh 登入远程服务器,需要手动输入password。

expect 命令

Expect 是由 Don Libes 基于 Tcl 语言开发的,并被广泛应用于交互式操作和自动化测试的场景之中,它尤其适用于需要对多台服务器执行相同操作的环境中,可以大幅度得提高系统管理人员的工作效率。

Send,expect 和 spwan 是 Expect 语言最基本的命令。其中,send 命令会发送字符串给指定进程(process); expect 命令会等待接受该进程返回的结果并且会根据返回的字符串来决定下一步的操作;而 spwan 命令可以发起一个进程的运行。

简单demo示例:

1、touch test.expect

2、vi text.expect

3、脚本代码

#!/usr/bin/expect

# 设置超时时间60s

set timeout 60

spawn ssh lilei -p 2222

expect {

    "*yes/no*" {
      send "yes\n";
      exp_continue;
    }

    "*password:*" {

      send "Welcome@2\r";
      exp_continue;
    }
}
#这里使用了 interact 命令,使执行完程序后,用户可以在 $host 终端进行交互操作。
interact

4、终端执行命令:expect test.expect

PS:linux 下 还有一种EOF语法,但不适用于这里。 

转载于:https://my.oschina.net/nbspjj/blog/733430

你可能感兴趣的文章
Asp.net安全架构之1:xss(跨站脚本)
查看>>
Notepad++输入模式之修改模和插入模式的切换
查看>>
Asp.net安全架构之4:Brute force(爆破)
查看>>
DBS:同学录
查看>>
【JUnit4.10源码分析】5 Statement
查看>>
JAVA设计模式之【适配器模式】
查看>>
Mysql备份系列(1)--备份方案总结性梳理
查看>>
C#开发的高性能EXCEL导入、导出工具DataPie(支持MSSQL、ORACLE、ACCESS,附源码下载地址)...
查看>>
[CareerCup] 1.6 Rotate Image 翻转图像
查看>>
Execution Plan 执行计划介绍
查看>>
29.6. nm - list symbols from object files
查看>>
Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals)爆零记
查看>>
jQuery中$.fn的用法示例介绍
查看>>
Python中的画图初体验
查看>>
又一个半成品库 weblog rpc client
查看>>
关于前端的photoshop初探的学习笔记
查看>>
Java程序员的日常 —— 响应式导航Demo
查看>>
敏捷软件开发宣言--常读常新
查看>>
objective-c内存管理基础
查看>>
Windows窗口在Vista中最小化效果
查看>>