DAY 37 shell免交互

news2024/9/24 21:29:27

Here Document 概述

常用的交互程序:read,ftp,passwd,su,sudo

cat也可配合免交互的方式重定向输出到文件

Here Document 的作用

  • 使用I/O重定向的方式将命令列表提供给交互式程序
  • 标准输入的一种替代品

格式

命令 <<标记
 
输入内容
 
标记

Here Document使用注意事项

  • 标记可以使用任意合法字符
  • 结尾的标记一定要顶格写,前面不能有任何字符
  • 结尾的标记后面也不能有任何字符(包括空格)
  • 开头标记前后的空格会被省略掉

Here Document操作

read命令  只能打印第一行内容

 统计行数

 免交互修改密码

 查看内容

 tee: 实现标准输入与输出

 Here Document变量设定

Here Document 也支持使用变量,如果标记之间有变量被使用,会先替换变量值。如果想要将一些内容写入文件,除了常规的方法外,也可以使用 Here Document。如果写入的内容中包含变量,在写入文件时要先将变量替换成实际值,在结合 cat 命令完成写入


涉及到换行时,输出变量要加双引号

如果涉及到换行,输出变量时要加双引号,不然会显示在同一行

 输入的内容不进行变量的替换

如果希望输入的内容不进行变量的替换,将开始标记加上单引号

 多行注释使用冒号为开头的Here Document,是多行注释。输入的内容不会被执行。(一般直接使用#进行注释)

 Expect

Expect是建立在 tcl 语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题

需要安装两个软件包:expect,tcl

建立在 tcl 语言基础上的一个工具,常被用于进行自动化控制和测试,解决 shell 脚本中交互相关的问题

Expect基本命令

1.脚本解释器

  • expect 脚本中首先引入文件,表明使用的是哪一个 shell
  • #!/usr/bin/expect

2. spawn 启动进程并捕捉交互信息

  • spawn 后面通常跟一个 Linux 执行命令,表示开启一个会话、启动进程,并跟踪后续交互信息。
  • 例如:spawn passwd root

3. expect 从进程接收字符串

  • 判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回;
  • 只能捕捉由 spawn 启动的进程的输出;
  • 用于接收命令执行后的输出,然后和期望的字符串匹配。

4. send 用于向进程发送字符串

  • 向进程发送字符串,用于模拟用户的输入;

  • 该命令不能自动回车换行,一般要加\r (回车)或者\n

 方式一:  expect "密码" {send "abc123\r"}  #同一行 send 部分要有{} 

 方式二:  expect "密码"  send "abc123\r"     #换行send部分不需要有{} 

 方式三: 
 expect支持多个分支 
 expect               #只要匹配了其中一个情况,执行相应的send语句后退出该 expect 语句 

 {  

"密码1" {send "abc123\r"}  

"密码2" {send "123456\r"}  

"密码3" {send "123123\r"}
 }

5. 结束符(expect eof 和 interact只能二选一)

expect eof

  • 表示交互结束,等待执行结束,退回到原用户,与spawn对应。
  • 比如切换到root用户,expect脚本默认的是等待10s当执行完命令后,默认停留10s后,自动切回了原用户

interact

  • 执行完后保持交互状态,把控制权交给控制台会停留在目标终端而不会退回到原终端,这个时候就可以手工操作了,interact后的命令不起作用;
  • 例如:interact后添加exit,并不会退出root用户。而如果没有interact则登录完成后会退出,而不是留在远程终端上。
  • 使用interact会保持在终端而不会退回到原终端;
  • 例如:切换到root用户,会一直在root用户状态下;比如ssh到另外一台服务器,会一直在目标服务器终端,而不会切换到原来服务器

注意:expect eof 与interact只能二选一

6. set 设置会话超时时间

  • expect 默认的超时时间是10秒,通过set 命令可以设置会话超时时间,若不限制超时时间则应设置为-1
  • 例如: set time out 30

7. exp_continue

  • exp_continue 附加于某个 expect 判断项之后,可以使该项被匹配后,还能继续匹配该 expect 判断语句内的其他项。
  • exp_continue 类似于控制语句中的 continue 语句。表示允许 expect 继续向下执行指令。
  • 并行执行,exp_continue 前面的匹配如果有就执行,没有就不执行;但后面的一定会执行。

注意:使用exp_continue时,如果跟踪像 passwd 这样的输入密码后就结束进程的命令,expect{}外不要再加上expect eof 因为spawn进程结束后会默认向expect发送eof,会导致后面的expect eof 执行报错

8. send_users

  • 表示回显命令,相当于echo

9. 接收参数

  • expect 脚本可以接受从bash命令行传递参数,使用 [lindex $argv n]获得。其中你从0开始,分别表示第一个,第二个,第三个.....参数

passwd 修改用户密码

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创建部署你的第一个智能合约

原文参考地址 【Web3 开发系列教程—创建你的第一个智能合约&#xff08;2&#xff09;】部署第一个智能合约&#xff0c;增加自己的内容 如果你是区块链开发的新手并且不知道从哪里开始&#xff0c;或者你只是想了解如何部署智能合约并与之交互&#xff0c;那么本指南适合你。…

大数据技术(入门篇)--- 使用Spring Boot 操作 CDH6.2.0 Spark SQL进行离线计算

前言 CDH 6.2.0 搭建的环境&#xff0c;并不能直接使用 spark 相关资源&#xff0c;需要对此服务端环境进行一些修改Spark 目前仅支持 JDK1.8, Java项目运行环境只能使用JDK 1.8我这里使用的是 CDH6.2.0集群&#xff0c;因此使用的依赖为CDH专用依赖&#xff0c;需要先添加仓库…

跨平台开发工具怎么选?IDE工具推荐

软件开发工具链的价值&#xff0c;越来越多企业看到了它。近年来&#xff0c;国内也迎来了软件开发工具的自主化浪潮&#xff0c;今天就来跟大家盘点一下2023年十大移动开发IDE工具。 一、Android Studio 作为Android开发IDE工具的首选&#xff0c;Android Studio提供了一个全…

API7 助力头部券商实现数字化转型

背景 随着中国经济步入高质量发展阶段&#xff0c;数字化转型正在被更多的企业提上议程。2021 年证监会出台的《证券期货行业科技发展“十四五”规划》中指出&#xff0c;需“提升证券期货业数据治理水平”&#xff0c;“深化数字化转型标准建设&#xff0c;推动行业数据接口的…

涨点神器:Yolov8引入CVPR2023 InternImage:注入新机制,扩展DCNv3,助力涨点,COCO新纪录65.4mAP!

1.InternImage介绍 论文:https://arxiv.org/abs/2211.05778 代码:GitHub - OpenGVLab/InternImage: [CVPR 2023 Highlight] InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions 理论部分参考知乎:CVPR2023 Highlight | 书生模型霸…

机器学习:LightGBM算法原理(附案例实战)

机器学习&#xff1a;LightGBM算法原理&#xff08;附案例实战&#xff09; 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可…

Python结合Qt实现点击按钮保存并生成自定义word详细讲解(相信我,耐心看完,一定会有收获的)

一、需求介绍 因为我的毕设需要设计一个系统&#xff0c;然后把结果生成检测报告供企业下载。模型大概已经训练好了&#xff0c;也就差个导出word功能&#xff0c;把模型识别的数据结果输入到word导出即可。 二、最终实现效果 这里随便整个模板来对所需要的函数进行说明&…

嵌入式 QT Creator使用

目录 1、QT Creator界面 2、QT Creator设置 3、第一个程序 3.1 新建一个项目 3.2 项目的文件组成和管理 3.3 项目的编译、调试与运行 1、QT Creator界面 启动 Qt Creator &#xff0c;出现如图 1 所示的主窗口&#xff1a; Qt Creator 的界面很简洁。上方是主菜单栏&a…

【架构设计】如何设计一个几十万在线用户弹幕系统

文章目录 一、前言二、项目介绍客户端轮询WebSocket主动推送 三、弹幕初始架构四、弹幕架构演进五、弹幕存储六、弹幕查询七、总结 一、前言 现在无论是直播还是电视剧&#xff0c;我们都可以看到上面慢慢的弹幕&#xff0c;满足十几万用户在线的弹幕系统&#xff0c;我们该如…

ChatGPT 如何获取API Key

什么是OpenAI API Key? OpenAI是ChatGPT的“开发商”&#xff0c;提供API使得开发者可以在自己的应用程序上调用OpenAI的相关服务&#xff08;除了ChatGPT&#xff0c;OpenAI还有其他产品&#xff09;。如果想调用OpenAI的产品服务在自己的应用程序上&#xff0c;我们就需要申…

Web接口测试工具---Poster与Postman

工作当中有不少时间在编写和维护接口自动化测试用例。打算先整理一些接口相关工具的使用。 简单对接Web口测试的相关工具/技术做个划分。 HTTP/SOAP协议接口的功能测试&#xff1a; 1、浏览器URL&#xff08;GET请求&#xff09; http://127.0.0.1:8000/login/?usernamezhangs…

4.25、IO多路复用简介

4.25、IO多路复用简介 1. I/O多路复用&#xff08;I/O多路转接&#xff09;①阻塞等待&#xff08;BIO模型&#xff09;②非阻塞&#xff0c;忙轮询&#xff08;NIO模型&#xff09;③IO多路转接技术&#xff08;select/poll&#xff09;④IO多路转接技术&#xff08;epoll&am…

基于DeepSpeed训练ChatGPT

基于DeepSpeed训练ChatGPT 最少只需一张32G GPU&#xff0c;自己也可以训练一个ChatGPT&#xff01; 最近微软发布了一个基于DeepSpeed的训练优化框架来完成ChatGPT类模型的训练&#xff0c;博主对其进行了研究并通过此博文分享相关技术细节。 一、配置预览 1、开源仓库&…

如何更换电脑背景图片?这样做很简单!

案例&#xff1a;怎样把电脑背景图换成自己的照片&#xff1f; 【我的电脑背景图片是系统自带的壁纸&#xff0c;不太好看&#xff0c;我想把它换成自己的照片。有没有小伙伴知道电脑怎么更换背景图片&#xff1f;在线求个简单的方法&#xff01;】 在日常生活中&#xff0c;…

YOLOV5引入SE注意力机制以及精度提升问题

YOLOV5引入SE注意力机制以及精度提升问题 1. 如何增加SE注意力机制 在model/common.py中添加SE结构 class SE(nn.Module):def __init__(self, c1, c2, r16):super(SE, self).__init__()self.avgpool nn.AdaptiveAvgPool2d(1)self.l1 nn.Linear(c1, c1 // r, biasFalse)sel…

23-Ajax-axios

一、原生Ajax <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width…

用canvas画曲线图

1.创建 canvas 绘图上下文&#xff08;指定 canvasId&#xff09; 定义&#xff1a;在自定义组件下&#xff0c;第二个参数传入组件实例this&#xff0c;以操作组件内 canvas 组件。需要指定 canvasId&#xff0c;该绘图上下文只作用于对应的 canvas。 参数 参数类型说明can…

jQWidgets V15.0[2023-03-03] Crack

高级 JavaScript 和 HTML5 用户界面框架 jQWidgets 为构建专业网站和移动应用程序提供了全面的解决方案。它完全基于 HTML5、CSS 和 JavaScript 等开放标准和技术构建。jQWidgets 支持响应式 Web 开发&#xff0c;并帮助您创建在台式机、平板电脑和智能手机上看起来很漂亮的应…

Jenkins构建结果自定义内容推送企业微信

环境&#xff1a;gitlab、jenkins(2.400,windows环境下&#xff09;、企业微信 功能&#xff1a;推送构建人、构建时长、构建结果、git提交信息到企业微信并相应提交人 一、企业微信添加群聊机器人 在弹出的页面添加一个新的机器人&#xff0c;创建完成后会有一个webhook地址…

Django DRF - 认证Authentication

1.概念 身份验证是将传入请求与一组标识凭据&#xff08;例如&#xff0c;请求来自的用户或与其进行签名的令牌&#xff09;相关联的机制。然后&#xff0c;权限和限制策略可以使用这些凭据来确定是否应允许该请求。 身份验证本身不会允许或不允许传入的请求&#xff0c;它只…