Linux网络——shell编程之免交互

news2024/9/21 2:37:28

Linux网络——shell编程之shell编程之免交互

  • 一、概述
      • 1.常用的交互程序:
      • 2.语法格式:
  • 二、Here Document常规用法
      • 1.read 命令的读取
      • 2.wc -l 的内容行数统计
      • 3.passwd用户密码的修改
      • 4.cat 查看内容并输出到文件中
      • 5.cat 查看交互内容并输出到新的文件中
      • 6.交互内容中输出变量
  • 三、Expect实现免交互运用
      • 1.Expect 工具的主要特点
      • 2.Expect 工具的安装
  • 三、Expect免交互的脚本运用
      • 1.示例一:免交互预设值修改用户密码
      • 2.示例二:通过位置变量传入获取值,修改用户密码

一、概述

使用I/O重定向的方式将命令列表提供给交互式程序,是标准输入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地 生产出一个文件并用作命令的标准输入,Here Document 可以与非交互式程序和命令一起使用

1.常用的交互程序:

read,ftp,passwd,su,sudo,fdisk等等

2.语法格式:

命令 <<标记
... #标记之间是传入内容
...
标记

注:
1.标记可以使用任意合法字符,但开始标记与结尾标记需要保持一致。(常用标记EOF,使用其他字母也可以)
2.结尾的标记一定要顶格写,前面不能有任何字符。
3.结尾的标记后面也不能有任何字符(包括空行)。
4.开头标记前后的空格会被省略掉。

二、Here Document常规用法

1.read 命令的读取

read a <<EOF
>hello world
>EOF

在这里插入图片描述

2.wc -l 的内容行数统计

在这里插入图片描述

3.passwd用户密码的修改

passwd <<EOF
>密码
>密码
>EOF

在这里插入图片描述

4.cat 查看内容并输出到文件中

在这里插入图片描述

5.cat 查看交互内容并输出到新的文件中

在这里插入图片描述

6.交互内容中输出变量

在这里插入图片描述

三、Expect实现免交互运用

Expect 工具是一款使用 Tcl 语言编写的自动交互式应用程序工具,它可以模拟用户与交互式程序(如 Telnet、SSH、FTP、scp 等)之间的交互过程,从而可以实现自动化的测试、配置和管理等操作。Expect 工具可以根据预定的脚本,自动完成一系列的操作,减少人工干预,提高工作效率。

1.Expect 工具的主要特点

①.可以与任何交互式程序进行交互,包括 Telnet、SSH、FTP、scp 等;
②.支持自动化的测试、配置和管理等操作;
③.支持交互式操作,包括键盘输入、命令执行、输出读取等;
④.可以使用 Tcl 语言编写脚本,灵活性和可扩展性强;
⑤.支持多种平台,包括 Linux、Unix、Windows 等。

2.Expect 工具的安装

安装下载expect工具
yum install -y expect
检查expect安装包:
rpm -q expect
检查依赖包tcl:
rpm -q tcl

三、Expect免交互的脚本运用

1.示例一:免交互预设值修改用户密码

#!/usr/bin/expect            ##引入expect工具

set timeout 5                ## 设置超时时间为5秒,默认情况下是 10 秒

spawn passwd ztm             ## spawn追踪后面指令产生的交互过程
expect "新的 密码"            ## 匹配交互过程中的提示信息,这里要完全一致,否则会匹配不到
send "123456\r"              ## 相当于 echo,传送在该交互中的预设值 
expect "重新输入新的 密码"
send "123456\r"

expect eof                   ## 结束符

在这里插入图片描述

2.示例二:通过位置变量传入获取值,修改用户密码

#!/usr/bin/expect

set username [lindex $argv 0]
set password [lindex $argv 1]

spawn passwd $username
expect "新的 密码"
send "$password\n"
expect "重新输入新的 密码"
send "$password\n"

expect eof

在这里插入图片描述

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

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

相关文章

【计算机系统基础4】程序的机器级表示

4.程序的机器级表示 4.1&#xff08;&#x1f3eb; CMU补充 &#xff09;x86-64 Linux 寄存器使用 %rax 返回值调用函数保存可以通过程序修改 rdi&#xff0c;…&#xff0c;%r9 传入参数&#xff08;arguments&#xff09;调用函数保存可通过程序进行修改 %r10&#xff0c;%…

【网络协议详解】——VLAN技术(学习笔记)

目录 &#x1f552; 1. VLAN介绍&#x1f558; 1.1 目标&#x1f558; 1.2 帧格式&#x1f558; 1.3 划分方式&#x1f558; 1.4 链路&#x1f558; 1.5 端口模式&#x1f564; 1.5.1 接入端口&#x1f564; 1.5.2 干道端口&#x1f564; 1.5.3 混合端口&#xff08;仅华为交换…

信息收集-端口

&#xff08;一&#xff09;端口号 端口号&#xff0c;是指在Internet传输控制协议&#xff08;TCP&#xff09;或用户数据报协议&#xff08;UDP&#xff09;中&#xff0c;用于标识具体应用程序与计算机之间通信的端口号码 互联网上有许多使用TCP和UDP协议进行通信的应用程…

【网络协议详解】——STP技术(学习笔记)

目录 &#x1f552; 1. STP技术工作原理&#x1f552; 2. BPDU报文&#x1f558; 2.1 配置BPDU&#x1f558; 2.2 TCN BPDU &#x1f552; 3. 实验&#xff1a;了解STP生成过程 &#x1f552; 1. STP技术工作原理 以太网交换机使用生成树协议STP&#xff08;Spanning Tree Pro…

连续签到积分兑换试用流量主小程序开发

每日签到积分兑换试用流量主小程序开发 打卡兑奖小程序。用户签到活得积分。积分可以兑换商品。观看激励视频广告可以积分翻倍。 用户可以参加试用商品活动参加试用需要提交信息。可以通过分享方式直接获取试用资格。 以下是流量主小程序的功能列表&#xff1a; 广告位管理&a…

JavaWeb——HTTP 协议的基本格式和 fiddler 的用法

目录 一、HTTP定义 二、HTTP协议的工作流程 三、抓包工具Fiddler的用法 1、介绍 2、原理 3、抓包结果 &#xff08;1&#xff09;、HTTP请求 &#xff08;2&#xff09;、HTTP响应 四、HTTP协议的格式 1、HTTP请求 &#xff08;1&#xff09;、请求行 &#xff08;2…

OpenAPI的签名校验

前言 作为一个后端开发&#xff0c;提供API接口或者对接第三方API接口的时候&#xff0c;考虑接口的防刷、重放等安全问题&#xff0c;严格意义上&#xff0c;都需要加上双方约定的签名规则。 大致思路 一般情况下&#xff0c;签名规则没有墨守成规的规定&#xff0c;只要考…

MediaPipe Face Detection可运行在移动设备上的亚毫秒级人脸检测

MediaPipe人脸检测 MediaPipe人脸检测是一种超快速的人脸检测解决方案,具有6个界标和多人脸支持。它基于BlazeFace,BlazeFace是为移动GPU推理量身定制的轻巧且性能良好的面部检测器。检测器的超实时性能使其可应用于需要准确地关注面部区域作为其他任务特定模型: 例如 1、3…

如何有效解决企业文件安全事件频发问题?

企业文件安全是企业必须解决的一个关键问题。随着数字化趋势的不断发展&#xff0c;企业严重依赖于以电子格式存储和访问数据。这种转变使得组织必须实施适当的安全协议&#xff0c;以确保其敏感数据免受未经授权的访问或盗窃。 企业网盘的使用已经在公司中流行起来&#xff0c…

ChatGPT:3. 使用OpenAI创建自己的AI网站:2. 使用 flask web框架快速搭建网站主体

使用OpenAI创建自己的AI网站 如果你还是一个OpenAI的小白&#xff0c;有OpenAI的账号&#xff0c;但想调用OpenAI的API搞一些有意思的事&#xff0c;那么这一系列的教程将仔细的为你讲解如何使用OpenAI的API制作属于自己的AI网站。博主只能利用下班时间更新&#xff0c;进度慢…

mybatis是如何集成到spring的之SqlSessionFactoryBean

文章目录 1 前言1.1 集成spring前使用mybatis的方式1.2 集成mybatis到spring的关键步骤 2 SqlSessionFactoryBean对象分析2.1 buildSqlSessionFactory做了什么事情&#xff1f;2.2 为什么是SqlSessionFactoryBean却可以使用SqlSessionFactory&#xff1f; 3 验证demo4 举一反三…

【QT】自定义工程封装成DLL并如何调用(带ui界面的)

一、动态库的封装 1、首先新建一个Library工程 2、修改类型为共享库&#xff0c;自定义项目名称以及项目路径 3、选择编译器 4、选择动态库所需要的模块 5、自定义类名&#xff0c;点击下一步 6、点击下一步 7、项目总览 8、此时的文件中还没有ui文件&#xff0c;因为要封装带…

南京邮电大学算法与设计实验四:回溯法(最全最新,与题目要求一致)

要求用回溯法求解8-皇后问题&#xff0c;使放置在8*8棋盘上的8个皇后彼此不受攻击&#xff0c;即&#xff1a;任何两个皇后都不在同一行、同一列或同一斜线上。请输出8皇后问题的所有可行解。 用回溯法编写一个递归程序解决如下装载问题&#xff1a;有n个集装箱要装上2艘载重分…

pg事务:隔离级别(2)

事务隔离级别的历史 ANSI SQL-92定义的隔离级别和异常现象确实对数据库行业影响深远&#xff0c;甚至30年后的今天&#xff0c;绝大部分工程师对事务隔离级别的概念还停留在此&#xff0c;甚至很多真实的数据库隔离级别实现也停留在此。但后ANSI92时代对事物隔离有许多讨论甚至…

【5.20】五、安全测试——渗透测试

目录 5.3 渗透测试 5.3.1 什么是渗透测试 5.3.2 渗透测试的流程 5.3 渗透测试 5.3.1 什么是渗透测试 渗透测试是利用模拟黑客攻击的方式&#xff0c;评估计算机网络系统安全性能的一种方法。这个过程是站在攻击者角度对系统的任何弱点、技术缺陷或漏洞进行主动分析&#x…

如何在项目管理中实现任务活动的留痕管理?

项目工作为什么需要留痕呢? 1&#xff0c;记录项目工作&#xff1a;在项目管理工作中常常涉及多部门协作&#xff0c;工作留痕可以帮助我们有效复原已经发生了的工作活动&#xff0c;从而留下印迹供日后查证。 2&#xff0c;支撑工作复盘&#xff1a;在项目工作结束之后&…

SpringBoot程序启动速度提速分析

传统的破程序&#xff08;百万行级一个微服务&#xff09;&#xff0c;在我的P15-gen2代电脑上启动一次需要80秒左右(直接运行三次&#xff0c;取平均值&#xff09;&#xff0c;在其它人电脑上可想而知了。 大概记录几点 1 优化肯定是需要找工具观察的&#xff0c;不观测还…

MyBatis、MyBatis-plus

文章目录 MyBatis一、MyBatis简介1. 什么是MyBatis2. MyBatis开发步骤3. 环境搭建4. MyBatis的映射文件&#xff08;UserMapper)5. 动态sql语句6. MyBatis的增删改查 二、MyBatis核心配置文件&#xff08;sqlMapConfig&#xff09;1. MyBatis常用配置1&#xff09;environments…

使用JAVA代码实现跳动爱心(脱单节程序员必备哦)

520&#xff01;&#xff01;&#xff01;表白日&#xff0c;你脱单了吗&#xff1f;你跟对象彻夜不归了吗&#xff1f; 如果没有说明&#xff0c;你的诚心不够&#xff0c;来给对象一个代码表白吧&#xff01; 话不多说&#xff0c;先上效果图&#xff1a; 实现代码如下&…

kicad学习笔记6:kicad启动及其grid参数设置和修改

1。kicad启动&#xff1a; single_top.cpp 启动函数&#xff1a; 1。 IMPLEMENT_APP( APP_SINGLE_TOP )2。 PGM_SINGLE_TOP::OnPgmInit()3。 PGM_BASE::InitPgm2。kicad参数 grid参数定义&#xff1a; struct GRID_SETTINGS {bool axes_enabled;std::vector<wxString&…