我们有一个受密码保护的 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;