Shell编程之免交户

news2025/1/15 20:36:33

expect

  • 一、多行重定向
    • 1.1 格式
    • 1.2 注意事项
    • 1.3 使用实例
  • 二、expect免交户
    • 2.1 expect概述
      • 2.1.1 定义
      • 2.1.2 安装
      • 2.1.3 命令格式
    • 2.2 相关命令
      • 2.2.1 spawn
      • 2.2.2 expect
      • .3 send
      • 2.2.3 set
      • 2.2.4 send_user
      • 2.2.5 exp_continue
      • 2.2.6 脚本解释器
      • 2.2.7 结束符
      • 2.2.8 exit
    • 2.3 运用实例
      • .1 免交互实现远程登录并且执行命令,执行结束自动退出。
      • .2 免交互实现传输文件
      • .3 综合应用

一、多行重定向

1.1 格式

语法格式

命令<<   标记


...(输入内容)

标记

1.2 注意事项

  • 标记可以使用任意的合法字符(通用的字符是EOF)
  • 结尾的标记一定要顶格写,前面不能有任何字符(包括空格)
  • 结尾的标记后面也不能有任何字符(包括空格)
  • 开头标记前后空格会被省略掉
  • 单引号 变量双引号 —

1.3 使用实例

#!/bin/bash
cat <<EOF >1.txt
1
2
3
4
4
5
EOF

在这里插入图片描述
在这里插入图片描述

二、expect免交户

2.1 expect概述

2.1.1 定义

expect是建立在tcl之上的一个工具,用于进行自动化控制和测试,解决shell脚本中交互相关的问题

2.1.2 安装

yum install -y expect

2.1.3 命令格式

expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ]
expect
判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回·只能捕捉由spawn启动的进程的输出
·用于接收命令执行后的输出,然后和期望的字符串匹配send
·向进程发送字符串,用于模拟用户的输入·该命令不能自动回车换行,一般要加r (回车)

2.2 相关命令

命令功能简介
spawn启动一个新的进程
expect等待输入中的特定模式或字符串
send发送文本到当前spawn的进程
send_user向用户显示文本消息
interact允许用户与当前spawn的进程进行交互。
sleep暂停执行一定的时间
eof等待到达文件结束,结束符
exit退出当前的expect脚本

2.2.1 spawn

开启一个会话、进程,并跟踪后续交互信息。

spawn <command> 

举个例子

#!/usr/bin/expect

#启动一个新的SSH会话,并连接到指定的主机
spawn ssh user@host
#等待看到 “password:” 提示符
expect "password:"
#发送密码到远程主机并回车
send "mypassword\r"
#等待看到命令行提示符
expect "$ "
#发送指定命令到远程主机并回车
send "ls -l\r"
expect "$ "
#发送退出命令并回车
send "exit\r"
expect eof

2.2.2 expect

  • 判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回·
  • 只能捕捉由spawn启动的进程的输出·
  • 用于接收命令执行后的输出,然后和期望的字符串匹配

.3 send

  • 向进程发送字符串,用于模拟用户的输入;
  • 该命令不能自动回车换行,需要配合\r使用,实现自动执行命令

2.2.3 set

设置超时时间,过期则继续执行后续,指令单位是秒,默认为10秒

otimeout-1表示永不超时

2.2.4 send_user

相当于echo.

2.2.5 exp_continue

允许expect继续向下执行指令。

2.2.6 脚本解释器

表明使用哪一个shell.
#!/usr/bin/expect

2.2.7 结束符

expect eof #表示执行结束

2.2.8 exit

退出脚本.

2.3 运用实例

.1 免交互实现远程登录并且执行命令,执行结束自动退出。

在这里插入图片描述

在这里插入图片描述

.2 免交互实现传输文件

#!/usr/bin/expect
spawn scp /etc/fstab 192.168.91.101:/mnt
expect {
  "yes/no" { send "yes\n";exp_continue }
  "password" { send "123123\n" }
}

expect eof 

# \r也行

.3 综合应用

#!/usr/bin/expect
spawn ssh 192.168.2.102
expect {
    "*assword:" {
        send "123123\r"
        exp_continue
    }
    "*yes/no" {
        send "yes\r"
        exp_continue
    }
    "# " {
        send "ls -l\r"
#如果是以普通用户,那么提示符替换为$
        expect "# "
        send "cat file.txt\r"
        expect {
            "File not found" {
                send "echo File not found\r"
                expect "# "
            }
            -re "hello\\s+world" {
                send "echo Matched\r"
                expect "# "
            }
        }
        send "exit\r"
    }
}
expect eof

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

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

相关文章

【Django】Task3 外键的使用、Queryset和Instance

【Django】Task3 外键的使用、Queryset和Instance Task3主要理解数据库外键的使用场景&#xff0c;了解Queryset的功能&#xff0c;通过编写代码体验Queryset中对数据库实例的curd操作&#xff0c;同时了解到Instance的定义。 1.外键的使用 1.1什么是外键 数据表外键是数据…

SHELL 基础

echo 打印命令 &#xff1a; 显示字符串 [rootserver ~]# echo this is SHELL language this is SHELL language [rootserver ~]# echo this is SHELL language this is SHELL language [rootserver ~]# echo "this is SHELL language" this is SHELL language…

el-table 实现动态表头 静态内容 根据数据显示动态输入框

直接放代码了 <el-table:data"form.tableDataA"borderstripestyle"width: 100%; margin-top: 20px"><el-table-columnv-for"(category, categoryIndex) in form.tableDataA":key"categoryIndex":label"category.name&qu…

AWS security 培训笔记

云计算的好处 Amazon S3 (Storage) Amazon EC2 (Compute) 上图aws 的几个支柱&#xff1a;安全是其中一个啦 其中安全有几个方面 IAMdetection基础架构保护数据保护应急响应 关于云供应商的责任 data center 原来长这样 &#xff0c;据说非常之隐蔽的 如果有天退役了&#xf…

回归预测 | MATLAB实现TSO-BP金枪鱼群优化算法优化BP神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现TSO-BP金枪鱼群优化算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现TSO-BP金枪鱼群优化算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果…

第1篇:Arduino与ESP32开发板的安装方法

一、下载安装包 arduino2.1.0-esp32_2.0.9-esp8266_3.1.1离线安装包 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…

计算机网络——OSI与TCP/IP各层的结构与功能,都有哪些协议?

文章目录 一 OSI与TCP/IP各层的结构与功能,都有哪些协议?1.1 应用层1.2 运输层1.3 网络层1.4 数据链路层1.5 物理层1.6 总结一下 二 ⭐TCP 三次握手和四次挥手(面试常客)2.1 TCP 三次握手漫画图解2.2 为什么要三次握手⭐2.3 第2次握手传回了ACK&#xff0c;为什么还要传回SYN&…

小程序的数据绑定和事件绑定

小程序的数据绑定 1.需要渲染的数据放在index.js中的data里 Page({data: {info:HELLO WORLD,imgSrc:/images/1.jpg,randomNum:Math.random()*10,randomNum1:Math.random().toFixed(2)}, }) 2.在WXML中通过{{}}获取数据 <view>{{info}}</view><image src"{{…

C#反编译工具ILSPY

ILSPY ILSpy 是一个开源的.Net程序集浏览器和反编译工具。 Visual Studio 2022附带了默认情况下启用的F12反编译支持&#xff08;使用我们的引擎v7.1&#xff09;。 在Visual Studio 2019中&#xff0c;您必须手动启用F12支持。转到“工具”/“选项”/“文本编辑器”/C#/Adva…

最新ai系统ChatGPT程序源码+详细搭建教程+mj以图生图+Dall-E2绘画+支持GPT4+AI绘画+H5端+Prompt知识库

目录 一、前言 二、系统演示 三、功能模块 3.1 GPT模型提问 3.2 应用工作台 3.3 Midjourney专业绘画 3.4 mind思维导图 四、源码系统 4.1 前台演示站点 4.2 SparkAi源码下载 4.3 SparkAi系统文档 五、详细搭建教程 5.1 基础env环境配置 5.2 env.env文件配置 六、环境…

回归预测 | MATLAB实现SOM-BP自组织映射结合BP神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SOM-BP自组织映射结合BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SOM-BP自组织映射结合BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍…

对比学习损失—InfoNCE理论理解

InfoNoise的理解 InfoNCE loss温度系数 τ \tau τ InfoNCE loss 最近在看对比学习的东西&#xff0c;记录点基础的东西 「对比学习」 属于无监督学习的一种&#xff0c;给一堆数据&#xff0c;没有标签&#xff0c;自己学习出一种特征表示。 InfoNCE 这个损失是来自于论文&am…

9.文件基本操作

第四章 文件管理 9.文件基本操作 ​    “打开文件和关闭文件”与平常鼠标双击打开文件和点击“X”关闭文件是有所不同的。 ​    操作系统在处理open系统调用时主要做了以下两件事情&#xff0c;①根据我们提供的文件存放路径在外存当中找到这个目录对应的目录表&#x…

【java毕业设计】基于ssm+mysql+jsp的个性化影片推荐系统设计与实现(程序源码)-个性化影片推荐系统

基于ssmmysqljsp的个性化影片推荐系统设计与实现&#xff08;程序源码毕业论文&#xff09; 大家好&#xff0c;今天给大家介绍基于ssmmysqljsp的个性化影片推荐系统设计与实现&#xff0c;本论文只截取部分文章重点&#xff0c;文章末尾附有本毕业设计完整源码及论文的获取方式…

《知识图谱与大模型融合实践研究报告》发布,创邻科技参编

近期&#xff0c;第三届知识图谱产业发展论坛暨知识图谱与大模型融合研讨会在北京召开。会上&#xff0c;《知识图谱与大模型融合实践研究报告》正式发布&#xff01; 该白皮书是由中国电子技术标准化研究院依托知识图谱产业推进方阵、全国信标委人工智能分委会知识图谱工作组…

图形推理 1

正确答案&#xff1a;D 你的答案&#xff1a;C 官方解析&#xff1a; 根据观察我们发现A、B、C项都为对称图形&#xff0c;只有D项不是。 官方解析&#xff1a; 图形组成元素不相似&#xff0c;先考虑属性规律&#xff0c;再考虑数量规律。属性无明显规律&#xff0c;考虑数量规…

2023-8-14 子矩阵的和

题目链接&#xff1a;子矩阵的和 #include <iostream>using namespace std;int n, m, q; const int N 1010;int a[N][N], s[N][N];int main () {scanf("%d%d%d", &n, &m, &q);for(int i 1; i < n; i )for(int j 1; j < m; j)scanf(&quo…

27、springboot自定义第三方框架和Starter组件及其测试完整版

介绍 ★ 自定义自动配置自动配置类注册 所谓的自动配置&#xff0c;就是通过一个配置类&#xff0c;然后这个配置类在我们容器中定义了大量的bean&#xff0c;然后这些bean也不是直接定义&#xff0c;它是结合了条件注解&#xff0c;只有在某些特定的条件下&#xff0c;才会生…

PHP实现每日蛋白质摄入量计算器

1.laravel 路由 //每日蛋白质摄入计算器Route::get(api/protein/intake, FormulaControllerproteinIntakeCal); 2.代码 /*** 每日蛋白质摄入计算器*/public function proteinIntakeCal(){$number intval($this->request(number));$goalFactor array(0.8, 1.16, 0.8, 1.16,…

[线程/C++]线程同(异)步和原子变量

文章目录 1.线程的使用1.1 函数构造1.2 公共成员函数1.2.1 get_id()1.2.2 join()2.2.3 detach()2.2.5 joinable()2.2.6 operator 1.3 静态函数1.4 call_once 2. this_thread 命名空间2.1 get_id()2.2 sleep_for()2.3 sleep_until()2.4 yield() 3. 线程同步之互斥锁3.1 std:mute…