当前位置: 首页 > ds >正文

SHELL 编程正则表达式

一、自动磁盘分区与挂载

核心工具fdisk(分区)、mkfs(格式化)、mount(挂载),结合expect实现自动化交互。
脚本关键点

  • 使用expect脚本模拟交互式输入(如n创建分区、p主分区、wq保存)。
  • 示例命令:
expect << EOF  
spawn fdisk /dev/sdc  
expect "命令*" {send "n\r"}  
# 后续依次响应分区类型、大小等提示  
expect eof  
EOF  

二、批量用户创建与管理

场景:通过expect远程批量创建用户到多台主机。
脚本核心

  • 使用ssh远程连接,useradd创建用户,passwd --stdin设置密码。
  • 示例片段:
expect << EOF  
spawn ssh root@10.0.0.12  
expect "password" {send "123456\n"}  
expect "]#" {send "useradd jack\n"}  
expect "]#" {send "echo 123456 | passwd --stdin jack\n"}  
EOF  

三、正则表达式基础
1. 字符匹配
  • 单字符匹配
    • .:任意单个字符(如st..e匹配state)。
    • []:指定范围内字符(如[a-z]匹配小写字母)。
    • [^]:范围外字符(如[^0-9]匹配非数字)。
  • 示例
grep '[s-t]' file  # 匹配包含s到t之间字母的行  

2. 锚定匹配
  • 位置限定
    • ^:行首(如^user匹配以 user 开头的行)。
    • $:行尾(如\.conf$匹配以.conf 结尾的行)。
    • \</\>:单词首尾(如\<root\>匹配独立单词 root)。
  • 示例
grep '^[a-z]' file  # 匹配以小写字母开头的行  
3. 分组与限定
  • 分组:用()提取匹配内容,\1引用第一组,\2引用第二组。
egrep '(server\.[0-9])' config  # 提取server.x格式内容  
  • 次数限定
    • *:任意次(如ab*c匹配 ac、abc、abbbc)。
    • +:至少 1 次(如ab+c匹配 abc、abbbc)。
    • {m,n}:m 到 n 次(如ab{2,4}c匹配 abbbc)。

四、扩展正则与应用
1. 特殊字符集
  • 预定义字符集
    • [:alnum:]:字母 + 数字,[:digit:]:数字,[:lower:]:小写字母。
  • 示例
grep "[[:digit:]]{3}" file  # 匹配3位数字  
2. 实际应用场景
  • IP 地址验证
    egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$' ip.txt  # 简单IP格式匹配  
    
  • 网址验证
    egrep '^http(s)?://[a-z0-9]+\.[a-z]{2,5}$' url.txt  
    
  • 手机号 / 邮箱验证
    egrep '^1[3-9][0-9]{9}$' phone.txt  # 手机号格式  
    egrep '^[a-z]+@[a-z]+\.[a-z]{2,5}$' email.txt  # 邮箱格式  
    

    五、自动化检测脚本

    核心逻辑

  • 定义正则表达式验证输入格式(IP、网址、手机号等)。
  • 使用expectshell命令(如pingcurl)检测目标存活。
  • 示例功能:
    • 主机存活检测:ping -c1 -W1 IP
    • 网站可用性检测:curl -s -o /dev/null URL

http://www.xdnf.cn/news/14250.html

相关文章:

  • js 查看字符串字节数
  • 快速幂算法详解:从暴力到优雅的数学优化
  • Python脚本开发入门:从基础到进阶技巧
  • SpringBoot ​@ControllerAdvice 处理异常
  • 鸿蒙app 开发中 如何 看 app 页面的ui结构
  • JS 数组转Object和Map
  • PHP基础-运算符
  • 【62 Pandas+Pyecharts | 智联招聘大数据岗位数据分析可视化】
  • 如何VMware虚拟机扩容磁盘,有很详细图文
  • Blazor Web Assembly - 使用Power Automate Desktop来跟踪一下Blazor页面的内存使用情况
  • 动态规划:求最长回文子串
  • OpenMMlab导出MaskFormer/Mask2Former实例分割模型并用onnxruntime和tensorrt推理
  • DB2连接池监控与挂起连接释放指南
  • Win32OpenSSL工具下载地址
  • Electron截取响应体
  • @Validation 的自定义校验实现, Spring Boot 和 java
  • 实现网页中嵌入B站视频播放器:解决high_quality=1 失效的问题
  • struct stat结构体
  • NY230NY233美光固态闪存NY237NY246
  • 【Transformer拆解】-2. 位置编码(Positional Encoding)
  • 一个密码实现库crypto-work
  • Pandas数据工程深度解析
  • 四数之和-力扣
  • XSS (Reflected)-反射型XSS
  • 晶振常见封装工艺及其特点
  • 深入讲解 Ollama 的源码
  • 【Java多线程从青铜到王者】定时器的原理和实现(十一)
  • Spring依赖注入源码学习:基于XML配置的DI源码解析
  • PGCP:用于比较基因组学的植物基因组综合数据库-文献精读144
  • 信息学奥赛一本通 1543:【例 3】与众不同