如何查看网站用什么代码做的/seo综合排名优化
Shell脚本:expect脚本免交互
expect脚本免交互
- 一、免交互基本概述:
- 1.交互与免交互的区别:
- 2.格式:
- 3.通过read实现免交互:
- 4.通过cat实现查看和重定向:
- 5.变量替换:
- 二、expect安装:
- 1.概述:
- 2.作用:
- 3.expect基本命令:
- 4.实例:
- 5.扩展:
一、免交互基本概述:
1.交互与免交互的区别:
(1)交互:人工发出指令控制程序的运行,程序收到人工相应指令后,做出相应的反应。
(2)免交互:程序按编写好的运行方式,进行指定指令操作,在这个过程中,不需要人工操作,自动化完成。
2.格式:
(1)基本格式:
命令 <<标记 例: wc -l<<wang
> >1
> >2
> >wang
标记 2
(2)总结:
1.标记可以使用任意字符,但必须是合法字符(EOF)
2.结尾的标记一定要顶格写,前面不能有任何字符
3.结尾后也不能有任何字符,包括空格
4.开头标记前后空格会被忽略
5.开头和结尾标记必须一致
3.通过read实现免交互:
[root@test1 opt]# read i <<EOF
> wang,bkpp
> EOF
[root@test1 opt]# echo $i
wang,bkpp
4.通过cat实现查看和重定向:
1.[root@test1 opt]# cat <<EOF #查看
> billkin
> ppkritt
> EOF
billkin
ppkritt
2.[root@test1 opt]# cat <<EOF>wen.txt #重定向
> chanyeol
> baekhyun
> EOF
[root@test1 opt]# cat wen.txt
chanyeol
baekhyun
5.变量替换:
(1)变量替换:
[root@test1 opt]# vim chen.sh
file="chen.sh"
i="the best luck"
cat > $file <<EOF
i like $i
EOF
[root@test1 opt]# sh chen.sh
[root@test1 opt]# cat chen.sh
i like the best luck
(2)整体替换:
[root@test1 opt]# vim chen.sh
var="bkpp is real"
myvar=$(cat <<EOF
the summer in pruket
$var
EOF
)
echo $myvar
[root@test1 opt]# sh chen.sh
the summer in pruket bkpp is real
(3)关闭免交互:
[root@test1 opt]# vim wang.sh
var="GREAT!i am going to school!"
myvar=$(cat <<'EOF'
today is monday
$var
EOF
)
echo $myvar
[root@test1 opt]# sh wang.sh
today is monday $var
(4)补充:
1.[root@test1 opt]# vim kai.sh #去除行首的tab字符,但是不能去除空格
cat <<-'EOF'kokopoppower
EOF
[root@test1 opt]# sh kai.sh
kokopoppower
2.[root@test1 opt]# vim kai.sh #多行注释
:<<EOFkokopoppower
EOF
[root@test1 opt]# sh kai.sh
二、expect安装:
1.概述:
(1)建立在tcl之上的一个工具
(2)用于进行自动化控制和测试
(3)解决shell脚本中交互相关的问题
2.作用:
(1)判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回。
(2)只能捕捉由spawn启动的进程的输出。
(3)用于接收命令执行后的输出,然后和期望的字符串匹配。
3.expect基本命令:
(1)send(设置超时时间,指定变量):向进程发送字符串,用于模拟用户的输入:该命令不能自动回车换行,一般要加\r(回车) 或者\n
(2)spawn:用于捕捉关键词,后面常跟一个linux执行命令。
(3)expect:用于判断上层捕捉输出的结果是否有指定字符,有则立即返回,没有则默认等待10s。
(4)exp_continue命令:expect多分支判断时使用。
(5)set命令:可用于设置变量、设置expect超时时间,默认是10s。
(6)结束符: expect eof 结束并返回原来环境,原来主机。interact 结束但是不会返回原来的地方,保持当前状态,当前主机。
4.实例:
(1)用免交互的方式给用户设置密码。
[root@test1 opt]# vim passwd.sh
#!/usr/bin/expect
set timeout 5spawn passwd lisiexpect "New passwd:"
send "123456\r"
expect "Retype new passwd:"
send "123456\r"expect eof
[root@test1 opt]# chmod 777 passwd.sh
[root@test1 opt]# ./passwd.sh
(2)用传参方式实现免交互登录:
[root@test1 opt]# vim passwd.sh
#!/usr/bin/expect
set timeout 5set username [lindex $argv 0]
set password [lindex $argv 1]spawn su - $usernameexpect "Password:"
send "$password\r"
expect "*]$"
send_user "ok"
expect eof
(3)用嵌入模式实现免交互:
[root@test1 opt]# vim passwd.sh
#!/bin/bash
user=$1
password=$2
useradd $1
/usr/bin/expect <<-EOFspawn passwd $userexpect "新的 密码:"
send "${password}\r"
expect "重新输入新的 密码:"
send "${password}\r"
expect eof
EOF
[root@test1 opt]# chmod 777 passwd.sh
[root@test1 opt]# ./passwd.sh wang 1233456
useradd:用户“wang”已存在
spawn passwd wang
更改用户 wang 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
(4)用ssh实现免交互:
[root@test1 opt]# vim ssh.sh
#!/usr/bin/expect
set timeout 5
set hostname [lindex $argv 0]
set password [lindex $argv 1]
spawn ssh $hostname
expect {"Connection refused" {send_user "ssh访问被拒绝\n"}"No route to host" {send_user "主机名/IP地址有误\n"}"yes/no" {send "yes\n";exp_continue}"password" {send "$password\n"}
}
interact
5.扩展:
(1)监控脚本写一个函数库,用定时任务调用,每月1号执行:
[root@test1 opt]# vim hanshu.sh #创建函数库
fx () {
df -h | awk -F "[ ,%]+" 'NR>1 {if($5>20){print $1"警告!"}}'
}
[root@test1 opt]# vim wang.sh #调用函数
. /opt/hanshu.sh
a=`fx`
echo $a
[root@test1 opt]# crontab -e#创建定时任务
0 0 1 * * /opt/wang.sh
(2)在实现ssh免交互登录的基础上,使它在密码出错的情况下,也可以免交互自动完成:
[root@test1 opt]# vim passwd.sh
#!/usr/bin/expect
set timeout 5
set hostname [lindex $argv 0]
set ip [lindex $argv 1]
set password [lindex $argv 2]spawn ssh $hostname@$ip
expect { "connection refused" {send_user "ssh访问被拒绝\n"exit}"No route to host" {send_user "主机名/ip地址有误\n"exit}"yes/no" {send "yes\n";exp_continue}"password" {send "$password\n"}"Permission denied, please try again."} interact
[root@test1 opt]# chmod 777 passwd.sh
[root@test1 opt]# ./passwd.sh root 192.168.174.13 123
(3)免交互实现fdisk的磁盘分区,格式化,挂载:
[root@test1 opt]# vim fdisk.sh#!/bin/bash
/usr/bin/expect <<-EOF
set timeout 5
spawn fdisk /dev/sdb
expect {"命令(输入 m 获取帮助):" { send "n\n";exp_continue}"Select (default p): " {send "p\n";exp_continue}"分区号 (1-4,默认 1):" {send "\n";exp_continue}"起始 扇区 (2048-41943039,默认为 2048):" {send "\n";exp_continue}"Last 扇区*" {send "+10G\nw\n";exp_continue}
expect eof
}
EOFmkfs.xfs -f /dev/sdb1
mkdir /data
mount /dev/sdb1 /data
[root@test1 opt]# chmod 777 fdisk.sh
[root@test1 opt]# ./fdisk.sh
相关文章:

Shell脚本:expect脚本免交互
Shell脚本:expect脚本免交互 expect脚本免交互 一、免交互基本概述:1.交互与免交互的区别:2.格式:3.通过read实现免交互:4.通过cat实现查看和重定向:5.变量替换: 二、expect安装:1.…...

王道考研计算机网络第二章知识点汇总
2.1.1物理层基本概念 电气特性和功能特性易混淆,注意区分。电气特性一般指的是某个范围,功能特性一般指的是电平所代表的含义。 2.1.2数据通信基础知识 同步传输是指发送方和接收方节奏是统一的,数据之间是没有间隔的是一个一个的区块。在键…...

06.05
1.二进制求和 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 考虑一个最朴素的方法:先将 aaa 和 bbb 转化成十进制数,求和后再转化为二进制数。利用 Python 和 Java 自带的高精度运算,我们可以很简单地写出这…...

【虹科案例】虹科数字化仪在激光雷达大气研究中的应用
01 莱布尼茨研究所使用激光雷达进行大气研究 图 1:在 Khlungsborn 的 IAP 办公室测试各种激光器 大气研究使用脉冲激光束通过测量大气中 100 公里高度的多普勒频移和反向散射光来测量沿光束的温度和风速。返回的光信号非常微弱,会被阳光阻挡,…...

Java抽象类介绍
1 问题 声明一个名为Employee的抽象类,其中包含name(姓名)和sex(性别)两个String类型的私有属性,并声明一个继承于Employee抽象类的子类Teacher。 2 方法 2.1 定义一个抽象类:Employee。 2.2 为Employee类设计一个抽象方法。 2.3实现抽象类Em…...

适配器模式的运用
文章目录 一、适配器模式的运用1.1 介绍1.2 适配器模式结构1.3 类适配器模式1.3.1 类适配器模式类图1.3.2 代码 1.4 对象适配器模式1.4.1 对象适配器模式类图1.4.2 代码 1.5 应用场景1.6 JDK源码解析1.6.1 字节流到字符流的转换类图1.6.2 部分源码分析1.6.3 总结 一、适配器模式…...

2023/6/8总结
MySQL必知必会 commit 和 rollback 的差异是commit会提交,而rollback不会,就好像是撤回。 使用保留点: 简单的rollback和commit语句就可以写入或者撤销整个事务处理,但是,只是对简单的事务处理才能这样做࿰…...

AIGC大模型之——以文生图介绍
一、什么是以文生图? 以文生图是AIGC ( AI Generated Content )框架中的一个关键技术,通过文字描述,将文字转化为图像并展示出来。以文生图具有白动化程度高、精度高、可扩展性强、可定制化等优势,具有广泛的应用前景&…...

kali学习笔记(二)
一、关闭自动锁屏 关闭自动锁屏对于测试人员来说,可以按照自己的习惯来设置,不然kali会过十分钟就锁屏,有的时候会比较不方便。 1、使用root账号登录,在display设置选项中做如下设置。 2、把休眠选项关掉。 二、创建快照 关机创…...

avx指令集判断的坑
(一)背景 项目中依赖算法同学编写的算法模块,他们在使用avx,sse指令集来提高速度,结果在一些机器上崩溃,导致项目无法发版。 我给他们说,我们项目中使用了谷歌的 libyuv 库,也使用了…...

求内推,求明主!
个人资料: 性 别: 男 年 龄: 30岁 户 籍: 湖南衡阳 专 业: 计算机科学与技术 求职意向: Java软件开发工程师/JavaWeb开发工程师 现 居 地: 深圳市龙华新区 自考本科学历,6年工作经验(做过商城,APP,小程序,也研究多个开源案例,开源项目,并提交过PR) 自我评价: 做事积极主动,有责…...

第十三章:约束
第十三章:约束 13.1:约束(constraint)概述 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为…...

M.2 SSD接口详解
一、M.2简介 M.2接口是一种新的主机接口方案,可以兼容多种通信协议,如sata、PCIe、USB、HSIC、UART、SMBus等。 M.2接口是为超极本(Ultrabook)量身定做的新一代接口标准,以取代原来的mSATA接口。无论是更小巧的规格尺…...

在本地Windows 11 系统的桌面版Docker上搭建PlantUML
文章目录 在本地Windows系统的桌面版Docker上搭建PlantUML简介步骤步骤 1:安装Docker Desktop步骤 2:启动Docker Desktop步骤 3:拉取PlantUML镜像步骤 4:运行PlantUML容器步骤 5:访问PlantUML Web界面 结论参考资料 结…...

mysql的sql_mode模式
1、sql_mode是MySQL中的一个系统变量,用于设置服务器在执行SQL语句时的行为模式。它可以控制服务器的严格性和特性,包括数据校验、日期处理、空值处理等。 下面是一些常见的sql_mode模式及其作用: STRICT_ALL_TABLES:为所有存储…...

chatgpt赋能python:Python编程必备之OpenCV库下载与安装
Python编程必备之OpenCV库下载与安装 作为目前最热门的计算机视觉库之一,OpenCV在人工智能领域中发挥着巨大的作用。而Python作为一门强大的编程语言,在OpenCV的使用上也有其独特的优势。本文将介绍Python如何下载和安装OpenCV库,以及如何引…...

sparkSQL的使用
sparksql只能处理结构化数据 基于rdd构建dataframe对象 from pyspark.sql import SparkSession from pyspark.sql.types import StructType, StringType, IntegerTypeif __name__ __main__:spark SparkSession.builder.appName(test).master(local[*]).getOrCreate()sc spa…...

gitignore的语法
.gitignore 文件是用来告诉 Git 哪些文件或目录不应该被跟踪的。下面是一些常见的 .gitignore 文件语法规则: 空行或以#开头的行将被 Git 忽略,可以用作注释。 星号 * 代表零个或多个任意字符。例如, *.txt 会匹配所有的 .txt 文件。 问号 ? 代表一个…...

长袋除尘器
长袋低压脉冲除尘器是具有先进水平的高效袋式除尘设备,是一种处理风量大、清灰效果好、除尘效率高、运行可靠、维护方便、占地面积小的大型除尘设备。 工作机理 1、过滤原理: 长袋低压脉冲除尘器含尘气体由进风口进入,经过灰斗时,气体中部分大颗粒粉尘…...

HTML+CSS实训——Day02——仿一个网易云音乐的登陆界面
仓库链接:https://github.com/MengFanjun020906/HTML_SX 前言 今天要继续完成我们的音乐软件了,昨天写完了封面,今天该完成开屏广告和登陆界面了。 登陆界面代码 <!DOCTYPE html> <html lang"en"> <head><meta charse…...

css蓝桥杯--电影院排座位
目录 一、介绍二、准备三、⽬标四、代码五、知识点六、完成 一、介绍 随着⼈们⽣活⽔平的⽇益提升,电影院成为了越来越多的⼈休闲娱乐,周末放松的好去处。各个城市的电影院数量也随着市场的需求逐年攀升。近⽇,⼜有⼀个电影院正在做着开张前…...

c++学习——多态
多态 **多态的语法****多态的底层原理图****多态案1——计算机类****纯虚函数和抽象类****多态案例2——饮品****虚析构和纯虚析构****多态案例3—— 电脑组装** 多态是C面向对象三大特性之一 多态分为两类 静态多态:函数重载和运算符重载属于静态多态,复用函数名 动…...

Java SPI机制及原理详解
前言 Java SPI (Service Provider Interface) 是一种重要的组件化方式,它可以让程序在运行时动态地装载一些实现模块,从而增强程序的可扩展性和灵活性。本文将详细介绍 Java SPI 的基本概念、原理以及使用方法。 1. 什么是Java SPI Java SPI 是一种标准…...

不压缩打包layui
手动打包 下载layui源码(当前版本2.6.4),并解压缩 下载地址:layui gitee 安装nodejs(v10.24.1) 下载链接 windows-x64 安装cnpm npm install -g cnpm -registryhttps://registry.npm.taobao.org全局安…...

过去、现在及未来
人生最邪恶的地方在于,只能年轻一次 回顾下我毫无规划的,且已经消耗掉的青春 一:过去 19岁,进入大学,兼职、玩儿、暧昧 20-21岁,初创软件公司打杂、恋爱、暧昧 22、23、24岁,上海ÿ…...

leetcode701. 二叉搜索树中的插入操作(java)
二叉搜索树中的插入操作 leetcode701. 二叉搜索树中的插入操作题目描述 递归解题解题思路代码演示 二叉树专题 leetcode701. 二叉搜索树中的插入操作 原题链接: 来源:力扣(LeetCode) 链接:https://leetcode.cn/problem…...

Docker的容器管理操作
1、创建容器 容器创建:就是将镜像加载到容器的过程。 创建容器时如果没有指定容器名称,系统会自动创建一个名称。 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。 docker create创建的容器…...

计算机组成原理——中央处理器
文章目录 **一 CPU的功能和基本结构****1 CPU的功能****2 [基本结构](http://t.csdn.cn/bpCt3)****2.1 运算器****2.2 控制器** **二 指令执行过程****1 指令周期****2 指令周期的数据流****2.1 取指周期****2.2 间址周期****2.3 执行周期****2.4 中断周期** **3 指令的执行方案…...

tidb变更大小写敏感问题的总结
作者: sustyle 原文来源: https://tidb.net/blog/2a72bc13 1 背景 近期,我们线上的tidb集群就遇到一个变更忽略大小写的需求,本来以为一个改表工单就解决了,但是业务反馈工单完成后,大小写仍旧敏感&…...

法规标准-UN R158标准解读
UN R158是做什么的? UN R158全名为针对驾驶员识别车辆后方弱势道路使用者,联合国对倒车系统和机动车的统一规定,该法规涉及批准倒车和机动车辆的装置,主要为保证倒车时避免碰撞,方便驾驶员观察了解车辆后部人员和物体…...