免交互 实验
免交互
交互:我们发出指令控制程序的运行,程序在接收到指令之后按照指令的效果做出对应的反应。
免交互:间接的,通过第三方的方式把指令传送给程序,不用直接下达指令。
Here document 免交互
这是命令行格式,也可以写在脚本当中。通过I/O重定向的方式将命令的列表传送给交互式程序或命令。
是标准输入的一种替代品。代替了人工的输入方式。
语法格式:
命令(linux的系统命令)<<标记 内容1 内容2 内容3 标记 [root@test2 opt]# wc -l << xy102 > 123 > 456 > xy102 2
注意事项:
1、标记可以是任意合法字符(一般不使用特殊字符,不以数字开头,通常以EOF作为默认的标记位)
2、结尾的标记一定要顶格写。且前面不能有任何字符,空格也不行。
3、结尾的标记后面也不能有任何字符,包括空格。
4、开头的标记前后的空格都会被省略掉
[root@test2 opt]# cat <<eof>>test2.txt > aaa > bbb > cccc > dddd > eof [root@test2 opt]# cat test2.txt aaa bbb cccc dddd
[root@test2 opt]# tee test3.txt<<eof > aa > bbc > ss > eof aa bbc ss [root@test2 opt]# cat test3.txt aa bbc ss
整体变量赋值
[root@test2 opt]# vim test1.txt #!/bin/bash #引入变量 var="Great! I am going to school" myvar=$(cat <<EOF this is mondy $var EOF ) echo $myvar [root@test2 opt]# sh test1.txt this is mondy Great! I am going to school
标记加引号就不再往里传值
[root@test2 opt]# vim test1.txt #!/bin/bash #引入变量 var="Great! I am going to school" myvar=$(cat <<'EOF' this is mondy $var EOF ) echo $myvar [root@test2 opt]# sh test1.txt this is mondy $var
免交互只对tab键
[root@test2 opt]# vim test1.txt #!/bin/bash cat <<-'EOF'test1 test2 EOF [root@test2 opt]# sh test1.txt test1 test2
Expect实现免交互
用cl语言写一个工具,主要用自动化控制和测试。解决shell脚本交互问题。
转义符
\n:换行
\r:回车
\t:相当于一个tab键
\b:表示退格,删除
免交互修改密码
[root@test3 opt]# vim passwd.sh #!/usr/bin/expect #声明解释器,不再是默认的bash。必须要写 set timeout 5 #set相当于设置,timeout超时时间,expect有一个默认超时时间10秒。设置超时时间5秒 spawn passwd wbl #spawn后用来声明需要执行的命令,开启会话过程,并且跟踪后续的交互信息 expect "新的 密码:" #捕获需要执行的命令行 send "abc123\r" #输入指令代码 expect "重新输入新的 密码:" send "abc123\r" #最后结束语,结束语只能写一个 expect eof #交互指令结束之后,会退回原用户,切换回之前的用户 #interact #留在当前用户,不动 [root@test3 opt]# chmod 777 passwd.sh [root@test3 opt]# ./passwd.sh spawn passwd wbl 更改用户 wbl 的密码 。 新的 密码: 无效的密码: 密码少于 7 个字符 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 invalid command name "~"while executing "~ ..."(file "./passwd.sh" line 19)
连接另一台主机
#!/usr/bin/expect set ip 192.168.65.22 set user root set password 123 set timeout 5 #进入命令行 spawn ssh $user@$ip expect {"yes/no" {send "yes\r";exp_continue} #捕获两次,表示该项被匹配之后继续匹配其他指定内容。类似循环continue允许继续执行"*password" {send "$password\r"} } interact 结果 [root@test3 opt]# ./test1.sh spawn ssh root@192.168.65.22 The authenticity of host '192.168.65.22 (192.168.65.22)' can't be established. ECDSA key fingerprint is SHA256:vArlM9v0tBqTAeP9OCssdmVcDMvpAQlZkb3UPFaH0hY. ECDSA key fingerprint is MD5:28:e9:05:f9:e5:68:ce:f8:4a:e3:98:2a:1a:43:88:e4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.65.22' (ECDSA) to the list of known hosts. root@192.168.65.22's password: Last login: Tue Jun 25 10:51:59 2024 from 192.168.65.1
免交互磁盘分区?
#免交互实现磁盘分区,分一个区,第一步要格式,第二部要实现挂载(手动), #在这个分区的挂载创建一个文件,写入内容“学习正好”,并且打印 #在一个脚本里完成
[root@test3 opt]# vim disk.sh #!/bin/bash disk=$1 /usr/bin/expect <<-EOF spawn fdisk $disk expect "命令(输入 m 获取帮助):"send "n\r" expect "Select (default p):"send "\r" expect "分区号 (1-4,默认 1):"send "\r" expect "起始 扇区 (2048-41943039,默认为 2048):"send "\r" expect "Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039) :" send "+200M\r" expect "命令(输入 m 获取帮助):"send "w\r" expect eof EOF mkfs.xfs -f /dev/sdb1 if [ $? -eq 0 ] then mkdir /opt/date mount /dev/sdb1 /opt/date file="/opt/date/date.txt" i="学习真好" cat > $file <<EOF $i EOF cat /opt/date/date.txt else echo "脚本有问题" fi
结果
[root@test3 opt]# ./disk.sh /dev/sdb spawn fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):n Partition type:p primary (0 primary, 0 extended, 4 free)e extended Select (default p): Using default response p 分区号 (1-4,默认 1): 起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+200M 分区 1 已设置为 Linux 类型,大小设为 200 MiB 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=12800 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=51200, imaxpct=25= sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=855, version=2= sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 学习真好
1
相关文章:
免交互 实验
免交互 交互:我们发出指令控制程序的运行,程序在接收到指令之后按照指令的效果做出对应的反应。 免交互:间接的,通过第三方的方式把指令传送给程序,不用直接下达指令。 Here document 免交互 这是命令行格式&#…...
Sublime Text 设置
备份 {"font_size": 10,"index_files": true,"font_face": "Courier New","vintage_start_in_command_mode": false,"ignored_packages": ["Vintage"],"word_wrap": "false" }关闭…...

spire.Pdf 将pdf转成image
一、nuget安装 <ItemGroup><PackageReference Include"Spire.PDF" Version"10.6.7" /></ItemGroup> 二、直接上代码 using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.IO;namespace …...

仓颉编程语言 -- 初识(一)
官网 文档 原生智能化 内嵌AgentDSL的编程框架,自然语言&编程语言有机融合;多Agent协同,简化符号表达,模式自由组合,支持各类智能应用开发。 天生全场景 轻量化可缩放运行时,模块化分层设计…...

前端JS必用工具【js-tool-big-box】学习,数值型数组的正向排序和倒向排序
这一小节,我们说一下前端 js-tool-big-box 这个工具库,添加的数值型数组的正向排序和倒向排序。 以前呢,我们的数组需要排序的时候,都是在项目的utils目录里,写一段公共方法,弄个冒泡排序啦,弄…...
python web框架哪家强?Flask、Django、FastAPI对比
前言 当你掌握了python的基础知识,并且会用和HTML和CSS编写简单的静态网页。现在你只需再掌握一个python web框架的知识,就可以开始编写一个动态的网站了。目前市面比较流程的python web框架有三个flask、Django、FastAPI。接下来我们对比一下。他们三个…...
Mybatis plus:IService接口
一、介绍 在MybatisPlus框架中,IService接口扮演着重要的角色。作为一个通用的服务接口,IService定义了一系列方法,包括查询、插入、更新、删除等。这些方法的定义使得在服务层进行数据库操作变得更为便捷和高效。 IService 接口是一个泛型接…...

时序分析基本概念介绍——min pulse width 最小脉冲宽度
文章目录 前言一、什么是 min pulse width?二、为什么检查 min pulse width?三、如何设置 min pulse width约束?1. 在sdc里面定义2. library里面定义 四、如何检查 min pulse width?五、如何修复 min pulse width?总结…...
PHP原生代码生成pdf---解决中文乱码问题
github地址 尝试了使用composer下载FPDF或者FPDI,但是无法解决中文乱码问题。只有使用这个github上的中文包才可以,那俩没必要下。 直接上代码(这里并没有使用任何框架) require(./fpdf/chinese.php);//生成pdf$pdf new PDF_Chinese();$pdf->AddPage…...

智慧车库管理系统
摘 要 随着城市化进程的不断加快,私家车数量的快速增长给城市交通带来了巨大的挑战,停车问题成为城市交通管理中的一大难题。车辆停车时,在停车场寻找停车位耗时过久,不仅仅浪费用户的时间,还可能引起交通拥堵。城市停…...
每日新闻掌握【2024年6月26日 星期三】
2024年6月26日 星期三 农历五月廿一 大公司/大事件 OpenAI将终止对中国提供API服务 从6月24日晚间开始,已有多名用户收到了来自OpenAI的邮件。该邮件表示,“我们的数据显示您的组织来自OpenAI目前不支持的地区的API流量。”邮件进一步表示,…...

InVEST实践及在生态系统服务供需、固碳、城市热岛、论文写作等实际项目中应用
白老师(研究员):长期从事生态系统结构-格局-过程-功能-服务的变化与响应关系等研究工作,重点围绕生物多样性、生态系统服务与价值等,构建生物地球化学模型和评价指标体系,为城市、区域和自然保护区的可持续发展和生态环…...

慧科新闻搜索研究数据库的使用指南及个人获取途径
《慧科新闻搜索研究数据库》WiseSearch由慧科讯业有限公司出品。WiseSearch是具有新闻搜索/浏览、对比分析等功能的一站式新闻搜索平台;内容包括1200种报刊和8000 网站的新闻资讯,平面媒体涵盖全国综合大报、党委机关报、都市报、行业报刊媒体࿰…...

SpringBoot学习03-[Spring Boot与Web开发]
Spring Boot与Web开发 RestTemplateMockMvc在SPringBoot中使用 SpringBoot整合swagger2SpringBoot的springmvc自动配置底层原理包含ContentNegotiatingViewResolver和BeanNameViewResolverContentNegotiatingViewResolverBeanNameViewResolver 支持提供静态资源,包括…...

数据恢复篇:如何恢复丢失的Android短信?
许多用户发现自己处于重要短信意外从Android手机中删除的情况。幸运的是,有一些行之有效的方法可以在没有root的情况下恢复已删除的短信Android,这可以成为救命稻草。这些技术不需要深厚的技术知识,也不需要损害设备的安全性。为了帮助您摆脱…...

数据结构历年考研真题对应知识点(栈)
目录 3.1栈 3.1.1栈的基本概念 【栈的特点(2017)】 【入栈序列和出栈序列之间的关系(2022)】 【特定条件下的出栈序列分析(2010、2011、2013、2018、2020)】 3.1.2栈的顺序存储结构 【出/入栈操作的模拟(2009)】 3.1栈 3.1.1栈的基本概念 【栈…...

BarTender版软件下载及安装教程
根据行业数据显示强大的配套应用软件甚至能够管理系统安全性、网络打印功能、文档发布、打印作业记录等,为满足不同的需要和预算,BarTender 提供四个版本,每个都拥有卓越的功能和特性。根据软件大数据显示多国语言支持:轻松设计…...
Python 中从字典中提取所有值到列表
目录: 使用 keys() 方法使用 values() 方法使用 items() 方法使用 * 解包使用列表推导式使用 lambda 函数有时候,在使用 Python 字典时,只关心获取字典的值而不关心字典的键。可以使用多种方法从字典中获取所有的值。 使用 keys() 方法 Python 字典(Dictionary) keys() 方…...

Netty中Reactor线程的运行逻辑
Netty中的Reactor线程主要干三件事情: 轮询注册在Reactor上的所有Channel感兴趣的IO就绪事件。 处理Channel上的IO就绪事件。 执行Netty中的异步任务。 正是这三个部分组成了Reactor的运行框架,那么我们现在来看下这个运行框架具体是怎么运转的~~ 这…...
liunx 搭建 zookeeper
创建下载路径 #创建文件夹 mkdir -p /mydata/zookeeper #进入文件夹 cd /mydata/zookeeper下载zookeeper文件 #下载 wget https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz #解压文件 tar -zxvf apache-zookeeper-3.5.9-bin.…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...