免交互

1、定义

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

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

2、Here Document 免交互

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

2.1语法格式

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

内容1 ​

内容2 ​

内容3 ​

标记

2.2注意事项

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

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

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

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

2.3用法

统计行数

[root@test1 ~]# wc -l <<xy102

> 123

> 456

> 789

> xy102

3

read命令输入内容并打印

[root@test1 ~]# read i <<EOF
> ABC
> EOF
[root@test1 ~]# echo $i
ABC

更改用户密码

[root@test1 ~]# passwd dn <<EOF
> 123
> 123
> EOF
更改用户 dn 的密码 。

cat命令+免交互

[root@test1 ~]# cat <<EOF>>test0.txt
> aaa
> bbb
> ccc
> ddd
> EOF
[root@test1 ~]# cat test0.txt
aaa
bbb
ccc
ddd

tee命令

[root@test1 opt]# tee test1.txt<<EOF
> 111
> 222
> 333
> 444
> EOF
111
222
333
444
[root@test1 opt]# cat test1.txt
111
222
333
444

引入变量

file="test1.sh"
i=school
cat > $file <<EOF
I am going to $i
EOF

整体变量赋值

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

3、Expect实现免交互

3.1定义

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

3.2转义符

\n:换行

\r:回车

\t:相当于一个tab键

\b:表示退格,相当于删除

3.3用法

3.3.1修改用户密码

#!/usr/bin/expect
#声明解释器,不再是默认的bash,需要声明
set timeout 5
#set设置,timeout超时时间,expect有一个默认的超时时间为10秒,设置超时时间为5秒
#也可以作为设置变量

spawn passwd dn
#spawn后面用来声明需要执行的命令,开启会话过程,并且跟踪后续的交互信息

expect "新的 密码:"
#捕获需要执行的命令行,只要能够捕获即可,不需要完整的,可以用*代表所有

send "abc123\r"
#输入指令代码

expect "重新输入新的 密码:"

send "abc123\r"

#最后一定要有结束语,结束语只能写一个
expect eof
#交互指令结束之后会退回原用户,切换回之前的用户
interact
#留在当前用户,不会动

免交互只能先赋权再./执行

chomod 777 passwd.sh ./passwd.sh

3.3.2su免交互切换用户

#!/usr/bin/expect
set timeout 5
#传参的方式来表示
set username [lindex $argy 0]
set passwd [lindex $argy 1]
#这种方式就是位置变量
#开始追踪
spawn su - $username
#免交互开始执行
expect "密码"
send "$passwd\r"
#继续捕获
expect "~]$" (普通用户)
【expect "~]#"  (管理员)】
send_user "ok"
#send_user = echo 打印指定内容
#结束语
interact
expect eof

3.3.3嵌入执行模式  

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

#!/bin/bash
user=$1
password=$2
#非交互命令,使用的是shell
useradd $user
#嵌入免交互
/usr/bin/expect <<-EOF
spawn passwd $user
expect "新的*"
send "$password\r"
expect "重新*"
send "$password\r"
expect eof
EOF

ssh免密登录

 #!/usr/bin/expect
set ip 192.168.230.30
set user root
set password 123
set timeout 5
#进入命令行:
spawn ssh $user@$ip
expect {
        "yes/no" {send "yes\r";exp_continue}
#这里捕获两次,表示该项被匹配之后,继续匹配其他指定的内容,类似于循环的continue,允许expect语句继续向下执行
         "password" {send "$password\r"}
}
interact

 主机连接

#!/usr/bin/expect
set timeout 5
set hostname [lindex $argv 0]
set password [lindex $argv 1]
spawn ssh $hostname
expect {
        "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

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

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

相关文章

6.26.4.3 条件生成对抗和卷积网络用于x射线乳房质量分割和形状分类

一种基于条件生成对抗网络(conditional Generative Adversarial Networks, cGAN)的乳房肿块分割方法。假设cGAN结构非常适合准确地勾勒出质量区域&#xff0c;特别是当训练数据有限时。生成网络学习肿瘤的内在特征&#xff0c;而对抗网络强制分割与基础事实相似。从公开DDSM数据…

【语言模型】深入探索语言模型中的神经网络算法:原理、特点与应用

随着人工智能技术的飞速发展&#xff0c;神经网络算法在语言模型中的应用日益广泛&#xff0c;为自然语言处理领域带来了革命性的变革。本文将深入探讨当前语言模型中常用的几种神经网络算法&#xff0c;包括全连接神经网络、卷积神经网络、循环神经网络、长短期记忆网络、门控…

python向类中添加新的方法

python向类中添加新的方法 1. 直接在类定义中添加方法 如果你正在定义类&#xff0c;你可以直接在类定义中添加新的方法&#xff1a; class MyClass:def method1(self):print("这是方法1")# 向类中添加新的方法def new_method(self):print("这是新添加的方法&…

【最新鸿蒙应用开发】——ArkTS与JavaScript区别

1. 箭头函数和普通函数的区别 箭头函数&#xff08;Arrow Functions&#xff09;和普通函数&#xff08;Function Declarations/Expressions&#xff09;在 JavaScript 中有一些关键区别&#xff0c;主要体现在 this 指向、语法、构造函数能力等方面。以下是它们之间的主要区别…

PostgreSQL的系统视图pg_stat_bgwriter

PostgreSQL的系统视图pg_stat_bgwriter 在 PostgreSQL 数据库中&#xff0c;pg_stat_bgwriter 视图提供了关于后台写进程&#xff08;Background Writer process&#xff09;的统计信息。后台写进程的主要任务是将脏数据&#xff08;dirty data&#xff09;从共享缓冲区写入磁…

五线谱与简谱有什么区别 五线谱简谱混排怎么打 吉他谱软件哪个好

五线谱与简谱作为音乐记谱领域的两大主流系统&#xff0c;各自承载着深厚的历史渊源与独特的表现力&#xff0c;并在全球范围内被不同程度地接受和应用。尽管两者都是为了记录音乐作品中的音高和节奏信息&#xff0c;但其内在机制、适用范围以及学习曲线存在显著差别。下面我们…

何时以及如何使用try、catch和throw关键字

在编程中&#xff0c;try、catch 和 throw 关键字通常用于处理异常&#xff08;exceptions&#xff09;&#xff0c;这是一种在程序运行时发生的问题&#xff0c;可能导致程序终止或产生不正确的结果。以下是这些关键字何时以及如何使用的基本概述&#xff1a; 何时使用 当代…

linux查看二进制文件

在Linux中&#xff0c;查看二进制文件可以使用hexdump或xxd命令。 例如&#xff0c;要查看一个名为example.bin的二进制文件的内容&#xff0c;可以使用以下命令之一&#xff1a; 使用hexdump&#xff1a; bash hexdump -C example.bin使用xxd&#xff1a; bash xxd exam…

版本控制系统:Git

基本操作 ctrl上行键&#xff1a;上次代码 本地仓库&#xff1a;Git init 新建文件&#xff1a;touch xxxx.xxx 查看状态&#xff1a;Git status 文件从工作区——暂存区&#xff1a;Git add ./文件名(.是通配符代表所有) 暂存区——仓库&#xff1a;Git commit -m &…

Spring企业开发核心框架-上

一、框架前言 1、总体技术体系 单一架构 一个项目&#xff0c;一个工程&#xff0c;导出为一个war包&#xff0c;在一个Tomcat上运行。也叫all in one. 单一架构&#xff0c;项目主要应用技术框架为&#xff1a;Spring&#xff0c;SpringMVC&#xff0c;Mybatis等 分布式架构…

vue-cil搭建项目

目录 一、使用 HbuilderX 快速搭建一个 vue-cli 项目 1.需要的环境——Node.js 2.搭建Vue-cil项目 二、组件路由 1.安装vue-router 2.创建router目录 3.使用路由 4.在main.js中配置路由 vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff1b;…

几个有意思 Python 通用命令行工具

几个 Python 通用命令行工具。 命令用途python -m http.server启动一个简单的web服务器python -m webbrowser打开你的网页浏览器python -m json.tool格式化JSON数据&#xff0c;使其美观python -m calendar显示命令行日历 快速启动一个Web服务 http.server 将http.server模块…

数字信号处理——专栏说明篇

为什么要开这个学习专栏&#xff1f; 没有过高技术&#xff0c;没有强大背景&#xff0c;如果可以&#xff0c;请你听听我的故事。 22岁的我&#xff0c;在经历了72%的迷茫且无助的大学生活后&#xff0c;我&#xff0c;一个平平无奇的在校学生&#xff0c;终于通过自我救赎&…

VsCode:配置TypeScript开发环境

一、前提 电脑已经安装了npm 何如安装npm&#xff0c;请点击查看Node.js、npm常用命令、安装多个node版本 提醒&#xff1a;下文讲解操作是在mac 系统进行的&#xff0c;TypeScript简称&#xff1a;ts 二、安装TypeScript 在终端里执行命令&#xff1a;npm install -g typescr…

【Linux】部署 GitLab 服务

1、配置实验环境 安装git apt install git 安装docker apt install docker 安装tree apt install tree 2、安装 Gitlab 下载官方库与安装包 下载官方库的安装脚本 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bas…

1panel 搭建多个网站

1panel 部署多个网站&#xff0c;另外的域名&#xff0c;或无域端口搭建方法。 当我们已经部署好一个网站后&#xff0c;想再部署一个网站在我们的服务器上时&#xff0c; 步骤&#xff1a;&#xff08;另外的域名&#xff0c;部署在同一个服务器方法&#xff09; 运行环境里…

六、资产安全—信息分级资产管理与隐私保护(CISSP)

目录 1.信息分级 2.信息分级方法 3.责任的层级 4.资产管理 5.隐私数据管理角色 6.数据安全控制 7.数据保护方案 8.使用安全基线 六、资产安全—数据管理(CISSP): 五、身份与访问管理—身份管理和访问控制管理(CISSP): 1.信息分级 信息分级举列: 2.信息分级方…

K8S 角色/组件及部署方式的简单概述

1.宏观架构图 2.角色详情 2.1 Master(Controller Plane) 早期是叫 Master 节点&#xff0c;后期改名为 Controller Plane&#xff0c;负责整个集群的控制和管理 Master 不会干活的(当然你让它干也是会干的&#xff0c;涉及到污点容忍)&#xff0c;而是起到访问入口&#xff…

使用docker搭建squid和ss5

docker run -d --name squid-container -e TZAsia/Shanghai -p 自定义端口并记得开放:3128 ubuntu/squid docker exec -it squid-container /bin/bash apt update && apt install vim # 修改 http_port 3128 为 http_port 0.0.0.0:3128 # 修改 http_access deny all 为…

天池大赛Higress插件官方demo详细部署+调试

天池大赛Higress插件官方demo详细部署调试 契机 ⚙ 使用Higress AI网关优化AI调用成本。就是基于向量召回相似问题的缓存&#xff0c;降低LLM API调用成本。就是开发一个网关插件做QA缓存嘛。前文已经成功复现了hello-world插件&#xff0c;这次结合官方提供的AI-Cache插件自…