Linux Shell 脚本交互输入
一.常规输入:回车、Yes/No等
1.cat + 文件 + 管道符
cat commend.txt | apt-get install ssh |
2.echo + 管道符
echo -e "Y" | apt-get remove ssh |
echo -e 处理转义字符 |
3.expect
安装:
sudo apt-get install expect |
编写expect文件如:
#! /usr/bin/expect set timeout 0 spawn apt-get remove ssh expect "Yes or No:" send "Y\r" interact |
1. [#! /usr/bin/expect]
这个跟bash shell 开头一样,是告诉系统使用那个解释器来解释脚本
注意:这一行需要在脚本的第一行。
2. [set timeout 0]
设置超时时间为0(秒)
3. [spawn sudo apt-get update] spawn [spɔːn]
它主要的功能是给后面的shell语句运行进程加个壳,用来传递交互指令。
4. [expect " "]
意思是判断上次输出结果里是否包含”的字符串,如果有则执行下一步,否则就等待一段时间(timeout)。
5. [send "xxx\r" ]
这里就是发送交互信息,与手动输入相同。 命令字符串结尾加上“\r”,如果出现异常等待的状态可以核查一下。
6. [interact]
执行完成后保持交互状态,把控制权从expect交会给shell,shell就可以执行spawn加壳的命令。
没有这句的话,即使已经成功输入,也不会执行shell命令,因为控制权还是expect手里,而expect是不能解释shell命令的。
运行:
./test3.expect expect test3.expect |
root@type-ThinkPad-T480s:/home/type# ./test3.expect |
注意后缀为.expect |
4.重定向 + 文件
apt-get install ssh < commend.txt |
特殊地,当一个shell命令需要多个参数时,以echo为例,用\n来区分多个参数,例如parasoft安装时在不同阶段共需要7次交互,可以用以下命令来代替手动操作:
echo -e "1\n\n\n\n\n\n" | ./parasoft_cpptest_professional-2020.1.0.20200422B856-linux.x86_64.sh |
二. 密码
1.expect
#! /usr/bin/expect set timeout 0 spawn sudo apt-get update #expect "Password:" send "******\r" # your password interact |
2.EOF文本块
#! /bin/bash sudo -S mkdir test <<EOF ****** # your password EOF |
三、终端控制
1.模拟:timeout
timeout 5 apt-get remove ssh |
也适用于输入密码
|
2.杀死进程
su root & pid=$! kill -SIGSTOP $pid |
-SINGSTOP → CTRL+Z
-SIGINT → CTRL+C
实例:docker build自动在镜像中安装parasoft及其依赖环境。
PS:若是apt-get,可以通过apt-get -y xxx来执行自动确认,而无需用echo或expect。
Linux Shell 脚本交互输入相关推荐
- Linux Shell - 脚本中自动确认需要输入确认的命令
文章目录 Linux Shell - 脚本中自动确认需要输入确认的命令 1.yum 命令 2.其它命令 Linux Shell - 脚本中自动确认需要输入确认的命令 1.yum 命令 通过指定 -y ...
- linux脚本用户输入,如何在Linux shell脚本中提示用户输入
本篇文章给大家介绍关于如何在Linux shell脚本中提示用户输入?下面来看具体的内容. 我们首先来看一下命令# read var # read -s "Waiting for input ...
- linux运维实战练习及linux shell脚本、awk、sed工具命令学习总结
一.linux shell 脚本 1.描述shell程序的运行原理(可附带必要的图形说明): Linux系统的shell作为操纵系统的外壳,为用户提供使用操纵系统的接口.它是命令语言.命令解释程序及程 ...
- linux怎么监控守护进程,linux shell脚本守护进程监控svn服务
最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...
- shell脚本自动回车_干货分享:Linux shell脚本分享!!快收藏起来吧
Linux shell 脚本分享 Shell 是一个命令解释器,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户,Shell 它是一个用 C 语言编写的程序,它是用户使用 Lin ...
- 教会你Linux Shell自动交互的三种方法
你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享 ...
- linux shell 博客,【博客侠】Linux Shell脚本系列:开始上手(1)
看标题大家应该知道,这是一个关于 Linux Shell 脚本的系列文章.通过本系列文章希望帮助 Linux 初学用户快速开始上手编写 Shell 脚本,能够利索的对脚本进行测试和使用. 在接下来的首 ...
- linux自动点击软件上的按钮有什么用,教会你Linux Shell自动交互的三种方法
你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享 ...
- linux shell脚本学习
linux shell脚本学习笔记 文章目录 linux shell脚本学习笔记 一.脚本入门 1.我的第一个linux脚本 2.关于date命令的知识 二.shell脚本中的变量 1.为什么脚本需要 ...
最新文章
- vim中tab键8空格换4空格
- Amazon Corretto技术细节探秘
- 开发腾讯移动游戏平台SDK ios版Ane扩展 总结
- spring27: bean装配-基于xml
- 01:操作系统(centos,redhat):性能监控和网络命令
- [html] 如何优化大数据列表(10万+)的性能?说说你的方案
- java学习(158):线程的常用方法yield,优先级
- java几种删除_几种删除Linux目录的方法
- 修复版GEP宝塔内嵌版全解源码
- url 解析一个url里面的参数,获取地址栏参数信息
- python向量化编程技巧_Python学习(六)向量化
- Nginx负载均衡和F5的区别---系统运维工作笔记001
- 微服务架构实战(二):使用API Gateway
- 国际版(英文版)Skype使用国内卡打电话(转)
- android tf卡 修复工具,闪迪sd卡修复工具(sd卡修复工具安卓版)
- 力扣(leetcode) 1833. 雪糕的最大数量(快速排序待更新......)
- php个框架的优缺点,PHP主流框架优缺点分析
- java 对比函数_java中字符串比较函数和操作函数,详细解析
- 几种冗余机械臂逆向运动学方法(带公式推导)
- Unity编辑器拓展(Handles/EditorTool)
热门文章
- spdlog linux编译出错,spdlog 基本结构分析
- 心理学上22条关于生活、情绪与交往间的习惯
- Unity——lua文件(.lua后缀的文件)无法被Unity识别问题
- IntelliJ IDEA Maven Project Dependencies红色波浪线报错
- 计算机类对口升学都可以升啥专业,“深入解答”对口升学计算机能上一本么
- 独立游戏市场营销策略:社交营销篇
- Hadoop中HDFS的Shell操作(开发重点)、启动Hadoop集群、基本语法、常用命令实操、命令大全、-help、-mkdir、-moveFromLocal、-copyFromLocal
- 搭建spring cloud zuul
- Flask学习之旅——2.5 include和set语句
- 批量获取PDF里的数据,并转换成excel表格