Articles of 正则expression式

命令replace成bash脚本$ 1的值

我有这个简单的脚本来改变我的apache2网站的权限 /var/www/html# cat permissions_setup.sh chown -R root $1 chgrp -R www-data $1 chmod -R 750 $1 chmod g+s $1 我在我的html/目录中有两个.sh shell脚本 /var/www/html# ll total 40 drwxr-xr-x 8 root root 4096 Jul 5 16:45 ./ drwxr-xr-x 4 root root 4096 Jun 13 18:37 ../ drwxr-s— 5 root www-data 4096 Jun 6 18:17 foo.com/ drwxr-s— 5 root […]

如何从perl脚本执行perl命令(正确转义)

我有一个Perl脚本,我需要在远程主机上执行一个简单的perl命令: ssh 192.168.1.1 "perl -pi.bup -e 's/^(\s+?kernel)(.*)(?<!audit=1)$/$1$2 audit=1/' /etc/grub.conf" 这只是简单地将“ audit=1 ”添加到/etc/grub.conf中每个内核行的末尾(如果它尚不存在)。 单线程在主机上直接运行时工作得很好,但不能通过另一个perl脚本中的ssh执行。 我试图用一个或多个反斜杠来逃避所有的美元符号,我也试图逃避“ \s ”中的反斜杠,但我似乎没有任何工作。 注意我不想将脚本复制到远程主机,然后执行它 – 我想直接使用ssh命令来执行它。 如何正确地逃避这一点,使其工作? – 2015年9月9日更新,以显示我在做的Perl脚本: sub SomeMethod { &RunCommand($host, "perl -pi.bup -e \'s/^(\s+?kernel)(.*)(?<!audit=1)\$/\$1\$2 audit=1/\' /etc/grub.conf"); } sub RunCommand { my ($server, $command) = @_; my $commandOutput = ""; if ($server ne "") { $command = "ssh $server \"$command\""; […]

rabbitmqctl set_policy从正则expression式中删除脱字符(^)锚

我从PowerShell运行这个,所以我不知道这是否会发生在不同的环境(正则expression式本身只包括除了那些以“amq。”开头的东西)。 当我运行下面的命令,'^'从模式中删除: rabbitmqctl set_policy mirroring '^(?!(?:amq\.)).+$' '{"""ha-mode""":"""all"""}' 它输出以下内容: Setting policy "mirroring" for pattern "(?!(?:amq\\.)).+$" to "{\"ha-mode\":\"all\"}" with priority "0" … 我尝试过以不同的方式逃脱它,没有任何成功。 有趣的是,从networkingpipe理插件设置它工作正常。 UPDATE 这个问题似乎与^在batch file(我认为)中是一个保留的字符有关,并且就batch file而言并没有被引用(即,PS需要传入引用string中的模式,但它是按原样传递正则expression式)。 基于beatcracker的回答,以下任何一项工作: rabbitmqctl set_policy mirroring '"^(?!(?:amq\.)).+$"' '{\"ha-mode\":\"all\"}' rabbitmqctl –% set_policy mirroring "^(?!(?:amq\.)).+$" {\"ha-mode\":\"all\"} rabbitmqctl @('set_policy','mirroring','"^(?!(?:amq\.)).+$"','{\"ha-mode\":\"all\"}') Start-Process -FilePath 'rabbitmqctl' -ArgumentList 'set_policy mirroring "^(?!(?:amq\.)).+$" {\"ha-mode\":\"all\"}'

Postfix Header_Check正则expression式'不匹配'的问题

我试图configurationPostfix不接受与我自己的域以外的FROM地址的出站邮件。 以下正则expression式只能成功拒绝3个域: /etc/postfix/header_checks: /(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS! 我想基本上扭转它,并阻止一切,但3。 所以根据手册: !/ pattern / flags结果当模式与inputstring不匹配时,使用相应的结果值。 但是,这只是阻止了一切: /etc/postfix/header_checks: !/(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS!

Nginx重写规则删除子文件夹

我试图设置一个nginx重写规则,但无法弄清楚如何让它工作。 我想将所有urlhttps://domainname.com/archives/year/month/date/postnameredirect到https://domainname.com/postname 页面https://domainname.com/archives需要保持活跃。 谁能帮助我? 欢呼声,夏普

Fail2ban正则expression式不匹配我的日志

我试图在Fail2ban中创build一个failregex来查找这些行(和IP地址),但我不能写它。 我的日志行如下所示: [Thu Sep 22 10:28:32.215159 2016] [:error] [pid 1616] [client 83.143.240.13:54895] FastCGI:server“/var/www/cgi-bin/php5-fcgi-104.236.209.45-80- bloggerger.com“stderr:PHP消息:WPlogin失败,用户名:admin,referer: http : //blogginger.com/wp-login.php [Thu Sep 22 04:38:01.588441 2016] [:error] [pid 24937] [client 49.151.91.8:58121] FastCGI:server“/var/www/cgi-bin/php5-fcgi-104.236.209.45-80- bloggerger.com“stderr:PHP消息:WPlogin失败,用户名:admin,referer: http : //blogginger.com/wp-login.php 这是我在attack.conf中的failregex行: failregex = [[]client <HOST>[]] WP login failed.* 但它不起作用。 没有任何匹配。 什么是正确的failregex线find这些日志行? 谢谢!

HAproxy正在给我正则expression式replace的问题,这是一个错误还是我做一些不正确的?

我正在尝试通过在POSTpath的节点上强制进行URL编码来纠正URL参数问题,这种情况经常发生。 在这个时候,最好是在代理层修复这个问题,直到开发出更好的解决scheme。但是Haproxy给了我这个问题,我还要提一下,我现在被Haproxy v1.5所困住了(从我可以告诉,也离开使用Lua列表的选项..引入v1.6?)。 这是一个例子是这样的.. 我通常以这种forms得到POST请求 http(s)://sub.domain.com/context/{context}/staticPath/location/{location}/material/{material} 所以,在实践中可能看起来更像这样。 http://sub.domain.com/context/smith/staticePath/location/columbus/material/abc/123 从另一端需要以下 http://sub.domain.com/context/smith/staticePath/location/columbus/material/abc%2F123 问题是,abc / 123是一个单一的材料,需要看起来更像“abc%2F123”,其中“/”斜线正在改变实际的path。 我试图在代理中捕捉到这一点,我可以得到正则expression式来捕获我所需要的,但似乎每当我尝试在捕获组中有一个“斜杠”/ /和/或试图把斜杠放回到取代部分它打破了重写。 下面是我尝试过的一些例子,同时请记住,我打算扩大抓取以抓取整个url,但正在简化尝试解决这些问题,同时我也试图从这个记忆中讲述一些故事点,所以请原谅,如果下面没有死..我尝试了许多,很多组合试图想出一个可行的战略。 通过这种方式.. reqrep (\w+\s?)\/(material)\/(\w+\s?)\/(.*) \1\2\3%2f\4 我可以让捕获组再次将URL重新组合起来,但path节点之间没有path定界符(“/”)。 像这样,它不会取代,它只会发送原始path。 reqrep (\w+\s?)\/(material)\/(\w+\s?)\/(.*) \1\/\2\/\3%2f\4 采取这样的策略… reqrep (\w+\s?)(\/)(material)(\/)(\w+\s?)\/(.*) \1\2\3\4\5%2f\6 我尝试的另一个策略是在捕获组中保留“/”,以便它们可以在replace中出现,而不在捕获组中留下不需要的“斜线”,如下所示。 reqrep (\w+\s?)(\/material\/)(\w+\s?)\/(.*) \1\2\3%2f\4 我也读了一下,看到一些正则expression式有空格,replace有一些间距的例子。我可以通过在replace中使用一些间距来closures,但是在最终的结果中留下不希望的空格。 也.. 如果我逃脱一个空间,然后加一个斜线,似乎更接近..前。 \1\ /\2但是,我会得到像(例如) location /material..东西,像上面提到的添加空间。 我注意到的模式是,当我试图在正则expression式中添加斜杠到捕获组时,它会弄乱replace,使我猜测像..这样的事情是否由于它们在捕获组中而不能逃脱? 而且,为什么我不能把它们放回文字replace? 这是我想象我可能已经偶然发现了一个错误的地步..但也意识到我可以搞砸了。 使用Nginx开发了一个解决scheme,但是如果能够让Haproxy做到这一点,在我们需要的前面站立一个实例也不是最实际的,主要是因为我们已经使用Haproxy来做相当多的其他东西已经。 我真的更喜欢用另一种方式来解决这个问题,但是现在使用代理似乎是我最好的select之一。 我也没有奢望强迫发起人给予更好的path。

在grep正则expression式中转义特殊字符

我试图在一个文件上运行一个grep正则expression式,在那里我必须排除出现“00”和“0”的行。 我想出了这个expression方式: grep -a -E \"stored\"\:\ \"\*123\*(?!00)[0-9]{2,5}\#\" $filename 但是当我试图用bash运行它时,我得到了 -bash !00: event not found ,或者(一旦我input了set +H ), -bash: syntax error near unexpected token ('` 请问我需要做什么才能在bash中正确地逃避这个正则expression式?

redirect所有包含1个单词的URL,但不包含其他单词

我正在将我的网站迁移到另一个平台,但在完成新网站的所有页面开发时,我需要我的用户在两个平台之间进行导航。 所以我需要对包含1个单词的所有URL进行301redirect,但不包含其他单词: 例: 旧网站:www2.misite.com 新网站:www.misite.com 我需要redirect包含单词“www2.misite.com/travel(.*)”的所有url,但不包含“预订”和“酒店”等字样。 我的服务器是Nginx,我不知道这是用正则expression式还是用nginx语句完成的。 非常感谢你。

Apache mod_rewrite,使用RewriteCond中的当前URL

我在Apache VirtualHostconfiguration中有几个RewriteRules。 我想能够testing当前的URL(在重写之前)针对某些条件。 问题在于variables%REQUEST_URI在处理开始时被设置,并且在每个规则之后都不会改变。 关于这些variables的文档很less。 有没有办法使用RewriteCond来testing当前的url? 我已经启用了重写日志,很明显,即使在第一个RewriteRule被匹配并重写之后,%REQUEST_URI仍然被设置为“/” #Map '/' and '' to '/home' RewriteRule ^/?$ /home #Check for cached page RewriteCond %{DOCUMENT_ROOT}/system/cache%{REQUEST_URI}.html -f RewriteRule ^(.+)$ /system/cache/$1.html [QSA,L] 有没有简单的方法来完成这个? 编辑:这是从RewriteLog摘录,我不认为是一个内部的子请求正在发生。 (3) applying pattern '^/?$' to uri '/' (2) rewrite '/' -> '/home' (3) applying pattern '^([^.]+)$' to uri '/home' (4) RewriteCond: input='/var/www/vhosts/example.com/subdomains/demo/rails/public/system/cache/.html' pattern='-f' => not-matched (3) […]