免交互和嵌入执行模式

目录

概念

语法格式

统计行数

赋值变量

修改密码​编辑往文件里添加内容

​编辑​编辑引入变量

整体赋值​编辑

加引号不赋值变量

expect实现免交互

免交互设置密码

免交互切换用户

嵌入执行模式 

添加用户并免交互设置密码

免交互登录

传参实现ssh

练习


概念

交互:我们发出指令控制程序的运行,程序在接受到指令之后按照指令的效果做出对应的反应。

免交互:间接的通过第三方的方式把指令传送给程序,不用直接下达指令。

免交互的方式:

免交互 全名 Here Document 

这是命令行格式,也可以写在脚本中,通过I/O重定向的方式将命令的列表传送给交互程序或命令。是标准输入的一种替代品,代替了人工的输入方式。

语法格式

命令(Linux的系统命令)  <<标记

内容1

内容2

内容3

标记

命令(Linux的系统命令) <<标记
内容1
内容2
内容3
标记

注意事项:

1.标记可以是任意合法字符(一般不用特殊字符,不以数字开头,通常以EOF作为默认的标记位)2.结尾的标记一定要顶格写,并且前面不能有任何字符,空格也不行

3.结尾的标记后面也不能有任何字符,包括空格

4.开头的标记前后的空格都会被省略 

统计行数

赋值变量

修改密码往文件里添加内容

引入变量

整体赋值

加引号不赋值变量

expect实现免交互

用tcl语言写的一个工具,主要用自动化控制和测试。解决shell脚本交互的问题。     

转义符:

\n:换行

\r:相当于回车

\t:相当于tap键

\b:退格,相当于删除键

免交互设置密码

免交互切换用户

嵌入执行模式 

添加用户并免交互设置密码

免交互登录

传参实现ssh

#!/usr/bin/expect
set timeout 5
set hostname [lindex $argv 0]
set password [lindex $argv 1]#进入命令行
spawn ssh $hostnameexpect {"No route to host" {send_user "主机名/IP有误\n"}"Connection refused" {send_user "ssh连接拒绝\n"}"(yes/no)" {send "yes\r";exp_continue}"password" {send "$password\r"}
}
#
interact

练习

一个脚本完成要求:免交互实现磁盘分区,分一个区即可,分完之后,第一步格式化,第二步实现挂载,手动挂载即可,然后在分区挂载点创建一个文件,写入内容"学习使我快乐!"并打印。

#!/bin/bash
disk=$1
/usr/bin/expect <<-EOF
set timeout 5
spawn fdisk /dev/$disk
expect "Command" 
send "n\r"
expect {"Select" {send "\r";exp_continue}"Partition number" {send "\r";exp_continue}"First sector" {send "\r";exp_continue}"Last sector" {send "\r";exp_continue}"Command" {send "w\r"}
}
expect eof
EOFpartprobe
lsblk | grep "${disk}1"
if [ $? -eq 0 ];thenecho "分区/dev/${disk}1已建立!"
elseecho "未检测到分区,请检查!"exit
fi
mkfs.xfs /dev/${disk}1
mkdir /opt/${disk}1
mount /dev/${disk}1 /opt/${disk}1
echo "学习使我快乐" > /opt/${disk}1/test.txt
cat /opt/${disk}1/test.txt

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

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

相关文章

梦想CAD二次开发

1.mxdraw简介 mxdraw是一个HTML5 Canvas JavaScript框架&#xff0c;它在THREE.js的基础上扩展开发&#xff0c;为用户提供了一套在前端绘图更为方便&#xff0c;快捷&#xff0c;高效率的解决方案&#xff0c;mxdraw的实质为一个前端二维绘图平台。你可以使用mxdraw在画布上绘…

使用Token管理用户session

起因&#xff1a;单点登录问题&#xff0c;登录时访问的是tomcat1&#xff0c;访问获取用户数据时访问的是tomcat2&#xff0c;而用户的session信息在tomcat1上存储&#xff0c;tomcat2并不知道该用户来过&#xff0c;所以在获取个人信息时从session中获取不到数据&#xff0c;…

Django 日志配置解析

在 Django 中设置和使用日志是一个有效的方式来监控和调试应用程序。日志可以帮助你理解应用的运行状态&#xff0c;记录错误信息&#xff0c;以及跟踪重要的系统事件。Django 使用 Python 的标准 logging 模块来配置和管理日志。 目录 配置日志写日志日志中间件日志配置与日志…

复盘|接口自动化测试框架建设的经验与教训

为什么选择这个话题&#xff1f; 一是发现很多“点工”在转型迷茫期都会问一些自动化测试相关的问题&#xff0c;可以说自动化测试是“点工”升级的必经之路&#xff1b;二是Google一下接口自动化测试&#xff0c;你会发现很多自动化测试框架相关的文章&#xff0c;但是大部分…

VBA 批量变换文件名

1. 页面布局 在“main”Sheet中按照下面的格式编辑。 2. 实现代码 Private wsMain As Worksheet Private intIdx As LongPrivate Sub getExcelBookList(strPath As String)Dim fso As ObjectDim objFile As ObjectDim objFolder As ObjectSet fso CreateObject("Script…

CAN和CANFD数据写入.asc文件的dll

因为工作需要&#xff0c;需要做一些硬件不是CANoe的上位机&#xff08;比如说周立功CAN,NI-CAN&#xff09;&#xff0c;上位机需要有记录数据的功能&#xff0c;所以用Qt制作了一个记录数据的dll&#xff0c;方便重复使用&#xff08;因为有的客户指定了编程软件&#xff0c;…

Android高级面试_12_项目经验梳理

Android 高级面试-1&#xff1a;Handler 相关 问题&#xff1a;Handler 实现机制&#xff08;很多细节需要关注&#xff1a;如线程如何建立和退出消息循环等等&#xff09; 问题&#xff1a;关于 Handler&#xff0c;在任何地方 new Handler 都是什么线程下? 问题&#xff1a…

Redis主从复制、哨兵以及Cluster集群

1.Redis高可用 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&#xff0c;除了保证提供…

加密教程:pdf怎么加密?7个pdf加密技巧任你选(图文详解)

pdf作为一种便携式文档&#xff0c;是展示内容的首选格式&#xff0c;目前也已广泛应用于交换和分享重要等温&#xff0c;例如内部报告、人力资源文件&#xff0c;以及商业提案等包含敏感信息的文档。然而&#xff0c;在如今的数字化时代&#xff0c;随着越来越多的企业将其文档…

划分子网、子网掩码、地址范围、网络地址和广播地址。

一公司原来使用 192.168.1.0/24 这个标准网络&#xff0c;现在想为公司的每个部门(共六个)单独配置一个子网&#xff0c;其中最大的部门要分配 IPv4 地址的数量不超过 25 个。求每个子网的子网掩码、地址范围、网络地址和广播地址。 因为2&#xff0c;4&#xff0c;8所以划分为…

el-date-picker设置时间范围

下面这种写法会报错&#xff1a;找不到expirationDate&#xff0c;这是因为涉及到this的指向问题 在普通函数中&#xff0c;this 的上下文并不指向 Vue 组件实例&#xff0c;而是取决于函数的调用方式或者是否使用了严格模式 <el-date-pickerclass"date-icon-common&q…

capitalize()方法——字符串首字母转换为大写

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 capitalize()方法用于将字符串的首字母转换为大写&#xff0c;其他字母为小写&#xff0c;例如图1所示的效果。 图1 字符串首字母大写效果…

代码随想录算法训练营第五十二天-复习|LeetCode704 二分查找、LeetCode35 搜索插入位置、LeetCode27 移除元素

题1&#xff1a; 指路&#xff1a;704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 代码&#xff1a; class Solution { public:int search(vector<int>& nums, int target) {int left 0; int right nums.size() - 1;while (left < right) {int middl…

动手实现一个可发送短信随机密码的高安全性用户密码系统

动手实现一个可发送短信随机密码的高安全性用户密码系统 1、背景2、设计3、代码实现3.1、首先先看一下ThreadSpecificSecureRandom组件代码实现,如图所示3.2、调用nextInt的UserPasswordSystemManager组件的代码实现3.3、UserPasswordSystemManager组件所提供的方法,请看下图…

智慧数据中心可视化:高效管理与直观监控的未来

随着数据中心的规模和复杂性不断增加&#xff0c;传统管理方式难以满足需求。智慧数据中心通过图扑可视化实现实时数据监控和智能分析&#xff0c;将复杂的基础设施直观呈现&#xff0c;极大提升了运维效率、故障排查速度和资源优化能力&#xff0c;为企业提供现代化、智能化的…

Android使用WorkManager实现循环定时通知

引入包 def work_version “2.9.0” // (Java only) implementation “androidx.work:work-runtime:$work_version” // Kotlin coroutines implementation "androidx.work:work-runtime-ktx:$work_version"// optional - RxJava2 support implementation "a…

农业新质生产力数据(2012-2022年)原始+dofile+测算数据集

数据简介&#xff1a;农业新质生产力是指在现代农业发展中&#xff0c;通过融合尖端科技、信息技术与创新管理模式&#xff0c;实现农业生产效率飞跃、产品质量显著提升及生产可持续性增强的一种革新性生产能力&#xff0c;农业新质生产力代表了从依赖传统资源转向依靠科技创新…

一加Ace3 刷机救砖简化说明

注意&#xff1a;工具使用英文目录&#xff0c;支持救砖和降级。PJE110国行版&#xff0c;CPH2609国际版。目前国行版不能完美转换国际版&#xff0c;每次升级都需要刷oplusstanvbk&#xff0c;不建议使用。跨国转换或ROOT一定先解锁Bootloader&#xff0c;可以使用“一加全能工…

【java 执行 postgresql sql 结果不一致】

java 执行 postgresql sql 结果不一致 问题描述&#xff1a;pk_deptdoc&#xff0c;deptname 这两个字段只显示第一个字符。解决方案&#xff1a;是因为用到了UNION ALL&#xff0c;为了两边查询结果一致&#xff0c;我们一般会定一个空值&#xff0c;却没有定义数据类型&#…

Linux免交互

免交互 交互&#xff1a;我们发出指令控制程序的运行&#xff0c;程序在接受到指令之后按照指令的效果做出对应的反应 免交互&#xff1a;间接的通过第三方的方式把指令传送给指定的程序&#xff0c;不用直接的下达指令 Here Document 免交互&#xff1a; 这是命令行格式&…