免交互简单操作

免交互

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

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

Here Document免交互

这是命令行格式,也可以写在脚本当中,通过l/O重定向的方式将命令的列表传送给交互程序或者命令。

是标准输出的一种替代品,代替了人工的输入方式

语法格式

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

内容1

内容2

内容3

标记

wc -l <<xy102
> 123
> 456
> 789
> xy102
3

注意事项:
1、标记可以是任意合法字符(一般不用特殊字符,不以数字带头,通常以EOF作为默认的标记位)

2、结尾的标记一定要顶格写,且前面不能有任何字符,空格也不行

3、结尾的标记后面也不能有空格

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

文件插入 两种方式 tee

[root@test1 opt]# cat <<EOF>>test1.txt
> 123
> 456
> 789
> EOF
[root@test1 opt]# cat test1.txt 
123
456
789
[root@test1 opt]# tee test2.txt <<EOF
> 1
> 2
> 3
> 4
> 5
> 6
> EOF
1
2
3
4
5
6
[root@test1 opt]# cat test2.txt 
1
2
3
4
5
6

引入变量

file="test1.sh"
i=school
cat >$file <<EOF
I am going to $i
EOF
sh 1.sh 
[root@test1 opt]# cat test1.sh 
I am going to school

整体变量赋值

 vim 2.sh var="Great! I am going to school"
myvar=$(cat <<EOF
this is monday
$var
EOF
)
echo $myvar
运行脚本
sh 2.sh 
this is monday Great! I am going to school

关闭免交互

 vim 2.sh var="Great! I am going to school"
myvar=$(cat <<'EOF'
this is monday
$var
EOF
)
echo $myvar
sh 2.sh 
this is monday $var

Expect实现免交互

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

rpm -q tcl expect

wh

转义符

\n:换行

\r:回车

\t:相当于tab键

\b:表示退格,删除

先安装软件

先赋权文件, ./才可以执行

./passed.sh

!/ure/bin/expect

声明解释器

set timeout 5

set设置timeout超时时间 默认是十秒设置超时时间五秒

set 也可以作为设置变量

spawn

后面需要执行的命令,开启会话过程,并跟踪后续的免交互信息

expect “新的密码:”

捕获需要执行的命令行,只要能够捕获即可,不需要完整的,可以用*代表所有

send “abc123\r”

输入指令代码

expect “重新输入新的密码:”

send “abc123\r”

结束语只能写一个

expect eof

交互指令结束后,会退回原用户,切换之前的用户

interact

留在当前用户

#!/usr/bin/expect# 设置超时时间为5秒
set timeout 5
# 执行更改用户dn的密码命令
spawn passwd dn
# 期待 "新的 密码:" 提示
expect "新的 密码:"
# 输入新密码(假设密码是 "abc123")
send "abc123\r"
# 期待 "重新输入新的 密码:" 提示
expect "重新输入新的 密码:"
# 再次输入新密码
send "abc123\r"
# 期待命令结束
expect eof赋权
chmod 777 test1.sh 
执行./test1.sh 
spawn passwd dn
更改用户 dn 的密码 。
新的 密码:
无效的密码: 密码少于 7 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新

切换用户

设置超时时间

sed_user “ok”

sed_user = echo 打印指定内容

在这里插入图片描述

#!/usr/bin/expect
set timeout 5#设置超时时间
set username [lindex $argv 0]
set password [lindex $argv 1]
将用户和密码分别赋给这两个变量
spawn su - $username
expect "密码"
send "$password\r"
expect "~]$"
send_user "ok"
expect eof对文件进行赋权
chmod 777 su.sh 
[root@test1 opt]# su test1
[test1@test1 opt]$ ./su.sh dn abc123
spawn su - dn
密码:
[dn@test1 ~]$ ok[test1@test1 opt]$ 

嵌入执行模式

在shell当中加入expect,涉及到环境切换的场景不建议使用嵌套模式

ssh su不适合使用嵌入模式

在这里插入图片描述

#!/bin/bash
user=$1
password=$2
useradd $user
/usr/bin/expect <<EOF
spawn passwd $user
expect "新的"
send "password\r"
expect "重新"
send "password\r"
expect eof
EOFsh qiantao.sh mmm 123
spawn passwd mmm
更改用户 mmm 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 它基于字典单词
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

ssh免密登录

连接固定主机

1、设置变量

在这里插入图片描述

连接主机

在这里插入图片描述

免交互实现硬盘分区

分完区

第一步要格式化

第二步实现挂载,手动挂载

在分区创建文件 写入“学习真好” 打印结果

简单的操作流程

#!/bin/bash/usr/bin/expect <<EOF
#设置分区
spawn fdisk /dev/sdd
expect "输入 m 获取帮助"
send "n\r"
expect "(default p): "
send "\r"
expect "(1-4,默认 1):"
send "\r"
expect "(2048-41943039,默认为 2048):" 
send "\r"
expect "(2048-41943039,默认为 41943039):" 
send "\r"
expect "输入 m 获取帮助"
send "w\r"expect eof
EOF
#刷新
partprobe
#创建文件系统
mkfs.xfs -f /dev/sdd1
#创建目录
mkdir /opt/test4
#设置挂载点
mount /dev/sdd1 /opt/test4
echo "学习真好" > /opt/test4/test2.txt
cat /opt/test4/test2.txt

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

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

相关文章

不用找了!这个软件自带各行业话术,客服效率飞跃

有一款客服工具软件&#xff0c;不但能吸附聊天窗口&#xff0c;实现图文视频话术的一键发送&#xff0c;还内置了多行业的优质客服话术模板&#xff0c;允许用户直接下载使用&#xff0c;快速构建起适合自身企业的专业客服知识库。 前言 在今天的快节奏商业环境中&#xff0c…

Linux shell脚本编程

一、sehll简介&#xff1a; 用户通过shell向计算机发送指令的 计算机通过shell给用户返回指令的执行结果 1.1、通过shell编程可以达到的效果 提高工作的效率 可以实现自动化 1.2、sehll脚本编写的流程 1、用vi/vim创建一个.sh的文件 2、在文件中进行开发 3、个文件赋予可执行权…

【如何使用RSA签名验签】python语言

文章目录 签名方法异步同步通知数据验签生活号响应数据验签同步响应数据验签 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f388;欢迎踏入我的博客世界&#xff0c;能与您在此邂逅&#xff0c;真是缘分使然&#xff01;&#x1f60a; &#x1f338;愿您在此停留的…

作业7.2

用结构体数组以及函数完成: 录入你要增加的几个学生&#xff0c;之后输出所有的学生信息 删除你要删除的第几个学生&#xff0c;并打印所有的学生信息 修改你要修改的第几个学生&#xff0c;并打印所有的学生信息 查找你要查找的第几个学生&#xff0c;并打印该的学生信息 1 /*…

idea常用问题记录

文章目录 1.ant构建报错编译错误1.1 解决办法 1.ant构建报错编译错误 Compile failed;xxx 1.1 解决办法

Python系统教程02

巩固 input()输出函数 回顾 1 、 input()函数&#xff1a; 在 input()函数输入时&#xff0c;输入的内容一定为字符串类型。 2 、条件分支语句&#xff1a; 每一个 if 语句可以看成一个个体&#xff0c;elif 和 else 都是一个 if 个体的一部分&#xff0c;每一个 if 个体 运…

51单片机外部中断(按键识别)

欢迎入群共同学习交流 时间记录&#xff1a;2024/7/2 一、电路原理图 51单片机包含INT0、INT1两个外部中断接口 二、知识点介绍 1.中断寄存器位介绍 &#xff08;1&#xff09;TCON定时控制寄存器&#xff0c;位0&#xff08;IT0&#xff09;中断INT0请求信号选择位&#x…

WordPress主题开发进群付费主题v1.1.2 多种引流方式

全新前端UI界面&#xff0c;多种前端交互特效让页面不再单调&#xff0c;进群页面群成员数&#xff0c;群成员头像名称&#xff0c;每次刷新页面随机更新不重复&#xff0c;最下面评论和点赞也是如此随机刷新不重复 进群页面简介&#xff0c;群聊名称&#xff0c;群内展示&…

注意!年龄越大,社交圈子越窄?其实这是老人的理性选择!数学家告诉你:何时该跳槽,何时该坚守!你必须知道的三个智慧:让你的人生更加精彩!

我们到底应该在什么情况下探索新事物&#xff0c;什么情况下专注于已有的东西呢&#xff1f;本质上来说&#xff0c;这个问题就是在询问&#xff0c;你究竟应该耗费精力去探索新的信息&#xff0c;还是专注从既有的信息中获取收获&#xff1f; 有人采访了临终的老人&#xff0c…

中国三大平原矢量示意图分享

我们在《中国地势三级阶梯示意图分享》、《中国四大高原矢量示意图分享》和《中国主要山脉矢量示意图分享》等文中&#xff0c;为你分享过中国地势相关的矢量示意图。 现在再为你分享一下我国东北平原、华北平原和长江中下游平原的矢量示意图&#xff0c;这三大平原均位于我国…

Python实现万花筒效果:创造炫目的动态图案

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义绘制万花筒图案的函数主循环 完整代码 引言 万花筒效果通过反射和旋转图案创造出美丽的对称图案。在这篇博客中&#xff0c;我们将使用Python来实现一个动态的万花筒效果。通过利用Pygame库&#xf…

大数据可视化实验(八):大数据可视化综合实训

目录 一、实验目的... 1 二、实验环境... 1 三、实验内容... 1 1&#xff09;Python纵向柱状图实训... 1 2&#xff09;Python水平柱状图实训... 3 3&#xff09;Python多数据并列柱状图实训.. 3 4&#xff09;Python折线图实训... 4 5&#xff09;Python直方图实训...…

边缘网关带来的效益探讨-天拓四方

边缘网关作为连接物理世界与数字世界的桥梁&#xff0c;在智能制造、智慧城市等各个领域中发挥着关键作用。通过收集、处理来自各种传感器和设备的数据&#xff0c;边缘网关为实时决策、优化生产流程以及提高运营效率提供了强有力的支持。下面我们将探讨边缘网关带来的效益。 …

链路全贯通,价值引领数据能力升级|爱分析报告

数据能力已经成为企业的核心竞争力。政策驱动数据产业发展加速&#xff0c;如2023年国家数据局成立&#xff1b;2024年&#xff0c;《“数据要素”三年行动计划&#xff08;2024-2026年&#xff09;》正式发布&#xff1b;并且 2024年起正式将数据资源视为资产纳入财务报表&…

C++——list类用法指南

一、list的介绍 1、list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代 2、list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素 …

机器学习-EM算法

目录 一:最大似然估计 二:EM算法 加入隐变量 EM算法推导 1.Jensen不等式 点个赞呗!!! 一:最大似然估计 举个栗子:一个袋子里有很多个球,每次放回的取一个球,取了十次,其中有六次白球,4次黑球。那么就认为袋子里面取到白球的概率为6/10,黑球的概率为4/10。…

pytorch-01

加载mnist数据集 one-hot编码实现 import numpy as np import torch x_train np.load("../dataset/mnist/x_train.npy") # 从网站提前下载数据集&#xff0c;并解压缩 y_train_label np.load("../dataset/mnist/y_train_label.npy") x torch.tensor(y…

Vue 全局状态管理新宠:Pinia实战指南

文章目录 前言全局状态管理基本步骤&#xff1a;pinia 前言 随着Vue.js项目的日益复杂&#xff0c;高效的状态管理变得至关重要。Pinia作为Vue.js官方推荐的新一代状态管理库&#xff0c;以其简洁的API和强大的功能脱颖而出。本文将带您快速上手Pinia&#xff0c;从安装到应用&…

SpringMVC的基本使用

SpringMVC简介 SpringMVC是Spring提供的一套建立在Servlet基础上&#xff0c;基于MVC模式的web解决方案 SpringMVC核心组件 DispatcherServlet&#xff1a;前置控制器&#xff0c;来自客户端的所有请求都经由DispatcherServlet进行处理和分发Handler&#xff1a;处理器&…

三个方法教大家学会RAR文件转换为ZIP格式

在日常工作当中&#xff0c;RAR和ZIP是两种常见的压缩文件格式。有时候&#xff0c;大家可能会遇到将RAR文件转换为ZIP格式的情况&#xff0c;这通常是为了方便在特定情况下打开或使用文件。下面给大家分享几个RAR文件转换为ZIP格式的方法&#xff0c;下面随小编一起来看看吧~ …