需求如下:

package main

import "fmt"
import "regexp" func main() {
var s = "cat a /dev/vda"
fmt.Println(CheckComm(s))
} //命令验证
func CheckComm(s string) bool {
reg := "^(ls|cat|top|echo|history|head|tail)"
match,_ := regexp.MatchString(reg, s)
ispass := match
fmt.Println("筛选只读命令:", ispass) if ispass {
return ispass
} reg = "while|for|if"
match,_ = regexp.MatchString(reg, s)
ispass = !match
fmt.Println("排除Shell关键字:", ispass) if !ispass {
return ispass
} reg = "^(dd|alias|fsck|rm)"
match,_ = regexp.MatchString(reg, s)
ispass = !match
fmt.Println("排除危险命令:", ispass) if !ispass {
reg = "^(dd|alias|fsck|rm)\\s+[^\\s]+\\s+[^\\s]*/tmp"
match,_ = regexp.MatchString(reg, s)
ispass = match
fmt.Println("筛选完整安全的参数:", ispass) if !ispass {
return ispass
}
} reg = "[^\\s]+\\s+[^\\s]+\\s+[^\\s]*/dev/vda"
match,_ = regexp.MatchString(reg, s)
ispass = !match
fmt.Println("排除危险的参数:", ispass) if !ispass {
return ispass
} return ispass
}

  

用go语言和正则表达式写的linux危险命令拦截的更多相关文章

  1. [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义

    C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...

  2. C语言程序代写(Linux下线程)

    联系QQ:928900200 CSCI 3120 Operating Systems Summer 2014 Handout 3Assignment 2Date Due: June 5, 2014 b ...

  3. Linux常用命令详解—基于CentOS7

    ## Linux 目录- /:根目录,一般只存放目录,不存放文件- /bin -> /usr/bin:可执行二进制文件的目录,也是常用命令目录,如常用的命令 ls.cat.mv 等- /boot ...

  4. linux C语言处理正则表达式

    Linux下C语言处理正则表达式——regex.h 具体函数介绍 编译正则表达式函数 int regcomp(regex_t *preg, const char *regex, int cflags) ...

  5. C语言使用正则表达式

    http://blog.chinaunix.net/uid-479984-id-2114941.html C语言使用正则表达式 据说一个好的程序员是会使用DB和Regular Expression的程 ...

  6. JAVA语言之怎样写出高性能的Java代码?

    本文主要向大家介绍了JAVA语言之怎样写出高性能的 Java 代码?通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 在这篇文章中,我们将讨论几个有助于提升Java应用程序性能的方法.我 ...

  7. C语言调用正则表达式

    标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库 ...

  8. 嵌入式C语言自我修养 01:Linux 内核中的GNU C语言语法扩展

    1.1 Linux 内核驱动中的奇怪语法 大家在看一些 GNU 开源软件,或者阅读 Linux 内核.驱动源码时会发现,在 Linux 内核源码中,有大量的 C 程序看起来“怪怪的”.说它是C语言吧, ...

  9. 【转载】Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解

    Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解 1清风揽月10人评论5006人阅读2017-06-21 15:48:43   博文说明[前言]: 本文 ...

  10. Linux grep 命令中的正则表达式详解

    在 Linux .类 Unix 系统中我该如何使用 Grep 命令的正则表达式呢? Linux 附带有 GNU grep 命令工具,它支持扩展正则表达式(extended regular expres ...

随机推荐

  1. vue项目中使用lottie动画

    一,安装vue-lottie 1 npm install --save vue-lottie 二,引用vue-lottie 在main.js引入并全局注册组件也可在页面单独引用 1 import lo ...

  2. 【Linux】sed文本处理及软件管理

    软件管理 1.编译安装http2.4,实现可以正常访问 安装编译相关工具包 root@mirror-centos8-p11 ~]# yum install gcc make autoconf apr- ...

  3. 将音频格式从flac转到wav的两种方法

    最近在智能语音中用到了数据集cn-celeb.这个数据集的音频格式是flac,而在做数据增强(augmentation)以及模型训练时用的数据格式是wav,因此需要把音频格式从flac转到wav.我在 ...

  4. 2022-11-13:以下go语言代码中,如何获取结构体列表以及结构体内的指针方法列表?以下代码应该返回{“S1“:[“M1“,“M2“],“S2“:[],“S3“:[“M1“,“M3“]},顺序不限

    2022-11-13:以下go语言代码中,如何获取结构体列表以及结构体内的指针方法列表?以下代码应该返回{"S1":["M1","M2"], ...

  5. 2021-04-01:给定一个正方形矩阵matrix,原地调整成顺时针90度转动的样子。[[a,b,c],[d,e,f],[g,h,i]]变成[[g,d,a],[h,e,b],[i,f,c]]。

    2021-04-01:给定一个正方形矩阵matrix,原地调整成顺时针90度转动的样子.[[a,b,c],[d,e,f],[g,h,i]]变成[[g,d,a],[h,e,b],[i,f,c]]. 福大 ...

  6. 2021-08-13:给定一个每一行有序、每一列也有序,整体可能无序的二维数组 ,在给定一个正数k,返回二维数组中,最小的第k个数。

    2021-08-13:给定一个每一行有序.每一列也有序,整体可能无序的二维数组 ,在给定一个正数k,返回二维数组中,最小的第k个数. 福大大 答案2021-08-13: 二分法. 代码用golang编 ...

  7. ESLint: Expected a space before ‘/>‘, but not found. (vue/html-closing-bracket-spacing)

    文件->设置->编辑器->代码样式->HTML->其他-->在空的标签(打钩)

  8. ArcGIS如何自动获得随机采样点?

      本文介绍基于ArcMap软件,实现在指定区域自动生成随机点的方法.   在GIS应用中,我们时常需要在研究区域内进行地理数据的随机采样:而采样点的位置往往需要在结合实际情况的前提下,用计算机随机生 ...

  9. js 字符串格式数组转为数组对象

    工作中经常会遇到将json字符串转换为json对象,但是将字符串格式数组转为数组对象的场景却不多 如: 其中label_exp: "["cap_pop","wk ...

  10. ubuntu18 安装单机k8s v1.18.2

    背景 当我们需要对k8s进行二次开发时,k8s环境是必须的,那么在ubuntu上部署单机k8s是最方便的,便于开发调试 系统准备 本人用的是Ubuntu18,以下以此为例 部署之前,最好切换至root ...