一.常规输入:回车、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
spawn apt-get remove ssh
Y
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包将被【卸载】:
ssh
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 8 个软件包未被升级。
解压缩后将会空出 98.3 kB 的空间。
(正在读取数据库 ... 系统当前共安装有 304178 个文件和目录。)
正在卸载 ssh (1:7.2p2-4) ...

注意后缀为.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

也适用于输入密码

(base) :~$ timeout 5 su root
密码: (base) :~$

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 脚本交互输入相关推荐

  1. Linux Shell - 脚本中自动确认需要输入确认的命令

    文章目录 Linux Shell - 脚本中自动确认需要输入确认的命令 1.yum 命令 2.其它命令 Linux Shell - 脚本中自动确认需要输入确认的命令 1.yum 命令 通过指定 -y ...

  2. linux脚本用户输入,如何在Linux shell脚本中提示用户输入

    本篇文章给大家介绍关于如何在Linux shell脚本中提示用户输入?下面来看具体的内容. 我们首先来看一下命令# read var # read -s "Waiting for input ...

  3. linux运维实战练习及linux shell脚本、awk、sed工具命令学习总结

    一.linux shell 脚本 1.描述shell程序的运行原理(可附带必要的图形说明): Linux系统的shell作为操纵系统的外壳,为用户提供使用操纵系统的接口.它是命令语言.命令解释程序及程 ...

  4. linux怎么监控守护进程,linux shell脚本守护进程监控svn服务

    最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...

  5. shell脚本自动回车_干货分享:Linux shell脚本分享!!快收藏起来吧

    Linux shell 脚本分享 Shell 是一个命令解释器,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户,Shell 它是一个用 C 语言编写的程序,它是用户使用 Lin ...

  6. 教会你Linux Shell自动交互的三种方法

    你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享 ...

  7. linux shell 博客,【博客侠】Linux Shell脚本系列:开始上手(1)

    看标题大家应该知道,这是一个关于 Linux Shell 脚本的系列文章.通过本系列文章希望帮助 Linux 初学用户快速开始上手编写 Shell 脚本,能够利索的对脚本进行测试和使用. 在接下来的首 ...

  8. linux自动点击软件上的按钮有什么用,教会你Linux Shell自动交互的三种方法

    你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享 ...

  9. linux shell脚本学习

    linux shell脚本学习笔记 文章目录 linux shell脚本学习笔记 一.脚本入门 1.我的第一个linux脚本 2.关于date命令的知识 二.shell脚本中的变量 1.为什么脚本需要 ...

最新文章

  1. vim中tab键8空格换4空格
  2. Amazon Corretto技术细节探秘
  3. 开发腾讯移动游戏平台SDK ios版Ane扩展 总结
  4. spring27: bean装配-基于xml
  5. 01:操作系统(centos,redhat):性能监控和网络命令
  6. [html] 如何优化大数据列表(10万+)的性能?说说你的方案
  7. java学习(158):线程的常用方法yield,优先级
  8. java几种删除_几种删除Linux目录的方法
  9. 修复版GEP宝塔内嵌版全解源码
  10. url 解析一个url里面的参数,获取地址栏参数信息
  11. python向量化编程技巧_Python学习(六)向量化
  12. Nginx负载均衡和F5的区别---系统运维工作笔记001
  13. 微服务架构实战(二):使用API Gateway
  14. 国际版(英文版)Skype使用国内卡打电话(转)
  15. android tf卡 修复工具,闪迪sd卡修复工具(sd卡修复工具安卓版)
  16. 力扣(leetcode) 1833. 雪糕的最大数量(快速排序待更新......)
  17. php个框架的优缺点,PHP主流框架优缺点分析
  18. java 对比函数_java中字符串比较函数和操作函数,详细解析
  19. 几种冗余机械臂逆向运动学方法(带公式推导)
  20. Unity编辑器拓展(Handles/EditorTool)

热门文章

  1. spdlog linux编译出错,spdlog 基本结构分析
  2. 心理学上22条关于生活、情绪与交往间的习惯
  3. Unity——lua文件(.lua后缀的文件)无法被Unity识别问题
  4. IntelliJ IDEA Maven Project Dependencies红色波浪线报错
  5. 计算机类对口升学都可以升啥专业,“深入解答”对口升学计算机能上一本么
  6. 独立游戏市场营销策略:社交营销篇
  7. Hadoop中HDFS的Shell操作(开发重点)、启动Hadoop集群、基本语法、常用命令实操、命令大全、-help、-mkdir、-moveFromLocal、-copyFromLocal
  8. 搭建spring cloud zuul
  9. Flask学习之旅——2.5 include和set语句
  10. 批量获取PDF里的数据,并转换成excel表格