Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 将命令输出解析为变量LIVE(网络流量监控)_Macos_Bash_Perl_Sed_Grep - Fatal编程技术网

Macos 将命令输出解析为变量LIVE(网络流量监控)

Macos 将命令输出解析为变量LIVE(网络流量监控),macos,bash,perl,sed,grep,Macos,Bash,Perl,Sed,Grep,我正在用bash编写一个网络监控脚本。我使用的基本命令是ettercap-T-M ARP-I en1///。然后我将egrep--color“Host:| GET”导入其中 我得到的示例输出如下所示: GET /images/srpr/logo11w.png HTTP/1.1. Host: www.google.com. GET /en-us/us/products HTTP/1.1. Host: www.caselogic.com. 我想要的输出是: Title: logo11w.png U

我正在用bash编写一个网络监控脚本。我使用的基本命令是
ettercap-T-M ARP-I en1///
。然后我将egrep--color“Host:| GET”导入其中

我得到的示例输出如下所示:

GET /images/srpr/logo11w.png HTTP/1.1.
Host: www.google.com.
GET /en-us/us/products HTTP/1.1.
Host: www.caselogic.com.
我想要的输出是:

Title: logo11w.png
URL: www.google.com/images/srpr/logo11w.png HTTP/1.1.

Title: Products - Case Logic
URL: www.caselogic.com/en-us/us/products
注意事项:
HTTP/1.1.
和主机末尾的
都不见了。它们也组成一个
URL
,每个
标题
/
URL
列表后都有一个空行。我试图通过将命令输出解析为一个带有

var=`sudo ettercap -T -M ARP -i en1 // // | egrep --color 'Host:|GET'` | echo $var
但显然,这不起作用,因为变量的输入是一个命令,直到用户请求停止(
CTRL+C
)时才执行该命令

为了获得HTML页面的标题,我使用命令
wget-qO-'https://url.goes/here“| perl-l-0777-ne”如果打印$1/\s*(*?)\s*请尝试以下操作:

title\u host.pl

#!/usr/bin/env perl

use warnings;
use strict;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();

my ($get,$host,$title);
while (<>) {
    if (m|^GET (\S+) |) {
        $get = $1;
    } elsif ( m|^Host: (\S+)\.| ) {
        $host = $1;
    } else {
        # Unrecognized line...reset
        $get = $host = $title = '';
    }

    if ($get and $host) {
        my ($title) = $get =~ m|^.*\/(.+?)$|; # default title
        my $url = 'http://' . $host . $get;
        $mech->get($url);
        if ($mech->success) {
            # HTML may have title, images will not
            $title = $mech->title() || $title;
        }
        print "Title: $title\n";
        print "URL: $url\n";
        print "\n";

        $get = $host = $title = '';
    }
}
现在只需将输入导入perl脚本:

cat input | perl title_host.pl
Title: logo11w.png
URL: http://www.google.com/images/srpr/logo11w.png

Title: Products - Case Logic
URL: https://www.caselogic.com/en-us/us/products
输出:

cat input | perl title_host.pl
Title: logo11w.png
URL: http://www.google.com/images/srpr/logo11w.png

Title: Products - Case Logic
URL: https://www.caselogic.com/en-us/us/products

谢谢,我会试试的!我是否可以在bash脚本中包含Perl以使其可移植?如果没有,那很好。是的,您可以在herdoc中包含perl脚本:非常感谢!工作得很有魅力!您意识到提供命令的脚本需要(1)在您的路径中,(2)被授予可执行权限吗?这里已经有很多问题和答案描述了必要的步骤。