标签: regex

用于正则表达式替换的 Bash 命令

什么 bash 命令可用于管道上的正则表达式替换?

     cat foo.txt | someprogram
Run Code Online (Sandbox Code Playgroud)

linux ubuntu bash regex pipe

5
推荐指数
1
解决办法
1926
查看次数

使用 robocopy 将多个文件夹复制到一个目的地

我正在寻找使用 robocopy 将多个文件夹从目录复制到远程网络共享的解决方案。我想从包含数百个我不感兴趣的文件夹的目录中选择几个文件夹。我想使用正则表达式在 linux 中执行类似于 scp 的操作,但这在 robocopy 中不起作用:

c:\robocopy "c:\results\1319_TC1.*" "\\datastore\somefolder\"
Run Code Online (Sandbox Code Playgroud)

powershell robocopy regex scp

5
推荐指数
1
解决办法
4万
查看次数

apache locationmatch 负正则表达式

我正在尝试通过 Apache 公开一个位置。通常,我的 vhost 中有这个块,上面写着

<Location />
    AuthType Basic
    AuthUserFile /web/.htpasswd
    AuthName "Test Site"
    Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

这工作得很好 - 提供的一切都需要一个有效的用户。现在我想公开一个不需要身份验证的服务,所以我正在寻找一种方法来使除 /services 之外的所有位置都需要身份验证。我一直在玩 LocationMatch,但我并不完全清楚它在做什么。

<LocationMatch ^/(?!services)[^.]*$>
AuthType Basic
...
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

允许 /services 及其下面的所有内容跳过 LocationMatch,但它具有允许 example.com/.somefile 绕过 LocationMatch 块的副作用。

此外,当我尝试

<LocationMatch ^/(?!services)>
AuthType Basic
...
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

一切(包括 /services)都由 LocationMatch 匹配。

如果有人能告诉我 [^.]* 类做了什么而第二个测试没有,以及如何在保持所有其他路径经过身份验证的同时只公开 /services ,我将不胜感激。

regex apache-2.2

5
推荐指数
1
解决办法
1万
查看次数

是否可以从 apache LocationMatch 指令中获取匹配的正则表达式?

我想知道以下代码是否应该有效:

<LocationMatch "/(.*)([/])?(.*)">
    Order allow,deny
    Allow from all

    AuthType Basic
    AuthName "Git"
    AuthUserFile  /git/.htpasswd
    AuthGroupFile /git/.htgroup
    Require group $1
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

我试图通过这个实现的是需要一个基于第一个正则表达式变量的组。所以如果用户去http://localhost/a-repository-name他必须在组a-repository-name中才能打开网址。

出于某种原因,我无法使此代码正常工作并且 apache 返回: Authorization of user **** to access /a-repository-name failed, reason: user is not part of the 'require'ed group(s).
我想它与Require group $1.
这是正确的方法还是我遗漏了什么?

regex apache-2.2

5
推荐指数
2
解决办法
4309
查看次数

多个 sshd 的正则表达式收到断开连接... [preauth]

什么 fail2ban 正则表达式会捕获这样的日志?

Apr  9 08:48:28 server sshd[1856]: Received disconnect from 43.255.190.117: 11:  [preauth]
Apr  9 09:06:05 server sshd[1936]: Received disconnect from 43.255.191.159: 11:  [preauth]
Apr  9 09:06:10 server sshd[1938]: Received disconnect from 43.255.190.126: 11:  [preauth]
Apr  9 09:31:12 server sshd[2005]: Received disconnect from 43.255.190.123: 11:  [preauth]
Apr  9 09:37:06 server sshd[2013]: Received disconnect from 43.255.190.149: 11:  [preauth]
Apr  9 09:53:55 server sshd[2036]: Received disconnect from 43.255.190.149: 11:  [preauth]
Apr  9 10:16:59 server sshd[2368]: Received disconnect from 43.255.190.165: 11:  [preauth] …
Run Code Online (Sandbox Code Playgroud)

regex fail2ban

5
推荐指数
1
解决办法
6978
查看次数

Postfix 虚拟域:如何接受除两个子域之外的所有子域?

假设我的 Postfix 服务器为域example.com提供服务,我希望它接受 example.com 的所有子域的邮件,但mail.example.comin.example.com 除外

起初,我尝试使用排除这两个子域的正则表达式:

(?(?!mail|in).+\.example.com)

但它没有用。我不确定问题是否出在正则表达式上,或者 Postfix 的正则表达式引擎是否不支持条件,所以我决定尝试使用表文件的条件。此时我的表看起来像这样:

/etc/postfix/virtual_domains:

if !/(in|mail)\.example\.com/
/.+\.example\.com/ OK
endif
Run Code Online (Sandbox Code Playgroud)

/etc/postfix/main.cf:

virtual_alias_domains = regexp:/etc/postfix/virtual_domains

但它也没有奏效。我究竟做错了什么?

virtualization postfix regex domains

4
推荐指数
1
解决办法
3537
查看次数

Apache LocationMatch 正则表达式行为似乎不正确

我正在使用该LocationMatch指令在匹配某些 URL 模式时设置标头:

# 1
# Expected matches: //mysite.com/any-page-with-at-least-a-character-and-no-dot
<LocationMatch "^/[^\.]+$">
  Header set X-Intelligence "STUPID"
</LocationMatch>

# 2
# Expected matches: //mysite.com/ , //mysite.com/main ,  //mysite.com/about
<LocationMatch "^/(|main|about)$">
  Header set X-Intelligence "CLEVER"
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

但是,URL //mysite.com/ 匹配#1 而不是#2。这是一个错误还是我做错了什么?

我什至尝试"^/(main|about)?$"在 #2 中使用正则表达式,但仍然没有爱。

regex apache-2.4

4
推荐指数
1
解决办法
2万
查看次数

fail2ban 正则表达式不匹配

我必须承认,正则表达式一直是我的弱点。我从来没有坐下来花足够的时间学习它们以有效地使用它们。但是,我真的不知道为什么这不匹配。我正在尝试制作一个自定义的 failregex 来阻止人们试图利用任何 xmlrpc.php 错误(并且他们一直在尝试这样做)。

我在 Ubuntu 16.04.2 上使用 fail2ban v0.9.3,Apache 2.4.18。

这是我的正则表达式:

<HOST> - - \[\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2} +\d{4}\] "POST /xmlrpc.php HTTP/1.0" 200

这是一个不匹配的示例行(IP 替换为 0):

0.0.0.0 - - [06/Apr/2017:07:45:42 +0000] "POST /xmlrpc.php HTTP/1.0" 200 752 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

我无法弄清楚为什么它不匹配。据我所知,这应该是完全匹配的。任何人都可以透露一些信息吗?

此外,让 + 和 - 符号的时区偏移量匹配会很好……我认为HTTP/1.0HTTP/1.\d{1}它替换应该匹配 1.0 和 1.1,对吗?

提前致谢!

编辑:在使用fail2ban-regex 在命令行上玩弄之后,我发现它的正则表达式<HOST> - - \[将匹配所有行。但是,第二个我将其更改为<HOST> - - \[\d{2}它根本不匹配任何行。这似乎没有道理!

编辑 2:嗯,与此同时,我正在使用<HOST> - - \[.* "POST /(xmlrpc|wp-login).php HTTP/1.\d" 200并且与我想要的行匹配。但是,我仍然很想知道为什么我原来的不匹配,因为我宁愿使用更具体的正则表达式而不是我现在使用的广泛的正则表达式。

regex fail2ban

4
推荐指数
1
解决办法
7321
查看次数

LocationMatch 正则表达式可以匹配查询字符串部分吗?

我正在尝试使用 LocationMatch 正则表达式来尝试在通过应用程序上传或下载某个文件时进行匹配。应用程序在 URL 中使用查询字符串。

请求:

“POST /uploads.js?attachment_id=2&filename=issues%20(12).csv&content_type=application%2Fvnd.ms-excel HTTP/1.1”200 336

我注意到正则表达式似乎无法看到“?”之后的查询字符串字符。在网址中。
那是对的吗?为什么?
有没有办法能够正则表达式匹配查询字符串部分中的内容?

regex apache-2.4

4
推荐指数
1
解决办法
4332
查看次数

nginx:多个匹配的位置块

我尝试设置 max-age 标头指令和 Content-Disposition “附件”如下:

location / {

    # set up max-age header directive for certain file types for proper caching
    location ~* \.(?:css|js|ico|gif|jpe?g|png|mp3|mpeg|wav|x-ms-wmv|eot|svg|ttf|woff|woff2)$ {
        expires 7d;
        add_header Cache-Control "public";
    }

    # force download for ceratain file types
    location ~* \.(?:fb2|mobi|mp3)$ {
         add_header Content-Disposition "attachment";
    }
...
}
Run Code Online (Sandbox Code Playgroud)

问题在于 .mp3 文件与两个位置块都匹配。仅使用第一个 (max-age)。我怎样才能同时拥有 .mp3 文件 - max-ageContent-Disposition “附件”?

nginx regex http-headers regular-expressions

4
推荐指数
1
解决办法
7591
查看次数