从 Bugzilla 下载报告

从 Bugzilla 下载报告

我们有一个受密码保护的 Bugzilla 实例,我想下载 CSV 格式的报告。

使用

wget $URL

或者

curl $URL

我没有收到任何错误,没有身份验证请求。Bugzilla 只提供了一个 0 字节的文件

浏览器也会发生同样的情况。如果我输入 URL,我会得到一个空文件。如果我之前登录过任何 Bugzilla 页面,Bugilla 就会传送该文件。

有没有办法从命令行进行身份验证、存储 cookie,然后使用相同的 cookie 获取报告?

答案1

好吧,也许有更好的解决方案,但可以用一个小的 Perl 脚本来完成

#!/usr/bin/perl

use strict;
use warnings;

use WWW::Mechanize;
use Readonly;

Readonly::Scalar my $base_url => 'https://example.org';
Readonly::Scalar my $url      => "$base_url/bugzilla/report.cgi?...&ctype=csv&format=table";

# just as an example: put them in a property file
Readonly::Scalar my $username => 'USERNAME';
Readonly::Scalar my $password => 'PASSWORD';

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

$mech->get("$url&GoAheadAndLogIn=1");

my %login = (
    "Bugzilla_login"=> $username,
    "Bugzilla_password"=> $password
);
$mech->set_fields(%login);
$mech->submit( 'GoAheadAndLogIn' );
$mech->get( $url );
$mech->save_content( 'name.csv' );

1;

相关内容