shell脚本中自动化交互输入

2023-11-02

有的shell脚本需要交互输入,如果需要批量或者自动化,可以根据实际情况按照如下方法处理

1.重定向

这个方法很简单,把需要输入的内容按每行写入到文档中,然后运行脚本

./vpncmd < content

2.使用管道

echo -e "3\n" | ./vpncmd

3.使用expect

expect是专门用来交互自动化的工具,但它有可能不是随系统就安装好的,有时需要自己手工安装该命令

yum install expect -y

可参考如下脚本

[root@host vpnserver]# cat expect_test.sh 
#!/usr/bin/expect                            #注意这行,不是/bin/sh
spawn ./vpncmd                               # 指定需要将哪个命令自动化
expect "Select 1, 2 or 3:"                   # 需要等待的消息
send "1\n"                                   # 是要发送的命令
expect "Hostname of IP Address of Destination:" 
send "127.0.0.1\n"
expect "Specify Virtual Hub Name:" 
send "\n"
expect "Password:" 
send "ashq\n"
expect "VPN Server>" 
send "hublist\n"
expect "VPN Server>"
send "exit\n"
#interact
expect off                                   # 指明命令交互结束

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell脚本中自动化交互输入 的相关文章

  • 有哪些基于对象的 shell?

    我打算写一个面向对象的shell 基于Python 我已经有很多想法了 但在实现它之前 我想通过一些现有的 shell 来激发我的灵感 我所说的面向对象的基本意思是 参数不仅仅是字符串数组 而且是对象数组 返回值也是一个对象 不仅有 std
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • Python 脚本:每次打印新行到 shell,而不是更新现有行

    说到Python 我是个菜鸟 我有一个 python 脚本 它给我这样的输出 last ZVZX W3vo9I Downloading video webpage last ZVZX W3vo9I Extracting video info
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • 将 JSON 导出到环境变量

    如果我有这样的 JSON hello1 world1 testk testv 我想将每个键值对导出为环境变量 如何通过 shell 脚本来做到这一点 例如 当我在终端上写时 echo hello1 world1应该打印其他键值对吗 注意 上
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • 通过 Visual Studio 2017 使用远程调试时 Linux 控制台输出在哪里?

    我的Visual Studio 2017 VS2017 成功连接Linux系统 代码如下 include

随机推荐

  • 安卓逆向(工具篇)

    安卓逆向 1 下载工具 1 apktool 可以反编译软件的布局文件 图片等资源 方便大家学习一些很好的布局 2 dex2jar 将apk反编译成java源码 classes dex转化成jar文件 3 jd gui 查看APK中class
  • java 微信开发图片发送,微信开发?Java上传Base64图片

    class java gt import org apache commons codec binary Base64 import org apache log4j LogManager import org apache log4j L
  • 2021-07-11 layer与tier的区别(英语)

    layer与tier的区别 英语 都是层的意思 但是两个词不太一样 layer指的是多层相同的东西 比如天冷的时候盖两层被 用layer tier指的是多层不同的东西 以某种目的叠加在一起 起到一定作用 比如人的消化系统有三个层次 咀嚼破碎
  • SpringCloud集成RocketMQ实现事务消息方案

    前边的话 当前SpringCloud作为微服务开发的首选开源方案提供了完善的微服务开发技术套件 不过针对分布式领域的难题 分布式事务控制并没有成熟的方案 本篇将介绍作为柔性事务控制的优秀方案RocketMQ的使用原理和方法 通过本案例的学习
  • 升级你的GitHub终端认证方式:从密码到令牌

    升级你的GitHub终端认证方式 从密码到令牌 前言 GitHub官方在2021年8月14日进行了一次重大改变 它将终端推送代码时所需的身份认证方式从密码验证升级为使用个人访问令牌 Personal Access Token 这个改变引起了
  • 三角剖分算法(delaunay)

    开篇 在做一个Low Poly的课题 而这种低多边形的成像效果在现在设计中越来越被喜欢 其中的低多边形都是由三角形组成的 而如何自动生成这些看起来很特殊的三角形 就是本章要讨论的内容 项目地址 https github com zhiyis
  • 阿里云OSS对象存储上传文件(一)SDK安装

    因为实际项目需求 需要使用阿里云oss的对象存储来上传文件 在写代码操作之前 需要先安装SDK 编译你能使用的lib 其实前后找了不少文章 但都不太细致 所以分享一下我本人使用的经验 不代表适用所有人 仅供参考 环境是windows系统 v
  • 安装使用NVIDIA-Docker——可使用GPU的Docker容器

    参考网址 https www cnblogs com wuchangsoft p 9767074 html nvidia docker是一个可以使用GPU的docker nvidia docker是在docker上做了一层封装 通过nvid
  • 【LeetCode题解】子序列问题

    文章目录 参考资料 子序列问题模板 动态规划 一 两种思路 例题 128 最长连续序列 思路一 代码 动态规划设计 300 最长递增子序列 动态规划设计 1143 最长公共子序列 动态规划设计 516 最长回文子序列 392 判断子序列 参
  • Java发布webservice

    先附上一个webservice的视频教程 链接 https pan baidu com s 1qesv A7cp zYsL7fE5nmFw 提取码 3d6k 创建服务端 提供接口 方式一 创建一个web工程 创建一个ServiceHello
  • C++ list容器

    1 list容器基本概念 循环迭代器 链表的末尾指向链表的链头 链表的链头指向链表的链尾 链表迭代器支持前移和后移 也就是说支持 和 操作 但不支持 n 和 n 操作 不支持随机访问 2 链表构造函数 3 赋值和交换 4 大小操作 5 插入
  • 基于实例讲解lsqcurvefit参数用法

    本博文源于 数学建模 旨在讲解非线性最小二乘拟合的MATLAB实现 谈到matlab中非线性最小二乘拟合 就不得不提到lsqcurvefit与lsqnonlin 博文就讲解一下lsqcurvefit如何使用 一 函数基本用法讲解 x lsq
  • Element-UI开发指南--动画和组件基础(二)

    文章目录 内置过渡动画 fade 淡入淡出 zoom 缩放 collapse 展开折叠 组件 Layout 布局 基础布局 分栏间隔 混合布局 分栏偏移 对齐方式 响应式布局 基于断点的隐藏类 Row 属性 Col 属性 Container
  • 3.观察者模式C++用法示例

    观察者模式 一 观察者模式 1 作用 2 适用场景 3 实现要素 二 C 程序示例 一 观察者模式 观察者模式 Observer Pattern 是一种行为型设计模式 它定义了一种一对多的依赖关系 让多个观察者对象同时监听一个主题对象 当主
  • 十四届蓝桥杯java第一期模拟赛 大小写转换编译题

    问题描述 输入一个由小写英文字母组成的字符串 请将其中的元音字母 a e i o u 转换成大写 其它字母仍然保持小写 样例输入 lanqiao 样例输出 lAnqIAO 代码实现 public static void main Strin
  • 猜数_____c语言

    include
  • uni-app 系列之(三)—— 资源引用路径

    模板内引用静态资源 template 内引用静态资源 如 image video 等标签的 src 属性时 可以使用相对路径或绝对路径 如下
  • MATLAB实现在区域中节点随机分布

    假设在一个100 100的区域中 随机生成10个节点 并将节点的坐标保存在txt文件中 global n global是全局变量 n代表节点的数量 global xm 区域的长 global ym 区域的宽 xm 100 ym 100 gl
  • axios中的AJAX

    1 Axios发送AJAX请求 1 引入Axios bootcdn cn 搜索 Axios 复制标签链接到代码中 案例 页面三个按钮 GET POST 通用型方法AJAX 点击按钮分别实现其功能
  • shell脚本中自动化交互输入

    有的shell脚本需要交互输入 如果需要批量或者自动化 可以根据实际情况按照如下方法处理 1 重定向 这个方法很简单 把需要输入的内容按每行写入到文档中 然后运行脚本 vpncmd lt content 2 使用管道 echo e 3 n