【发布时间】:2018-07-13 03:38:50
【问题描述】:
我需要发出多个 HTTP PUT 请求。
我为他们准备了一个 XML 模板,以及一个包含我设备中的 ID、名称和 IP 的 CSV 文件。 (我想更改系统中的名称或 IP)。
这些设备在我的 CSV 数据中具有完全相同的 ID。
Input.csv (id, name, ip)
123,test1, 10.56.22.1
124,test2, 10.56.2
我的 Perl 脚本
use strict;
use warnings;
use XML::Twig;
use LWP::UserAgent;
use HTTP::Headers;
use HTTP::Request;
use File::Slurp;
use JSON -support_by_pp;
use LWP 5.64;
use MIME::Base64;
use IO::Socket::SSL;
use File::Slurp;
# Create a user agent object
my $ua = LWP::UserAgent->new( ssl_opts => {
SSL_verify_mode => SSL_VERIFY_NONE(),
verify_hostname => 0,
} );
my $xml = XML::Twig->new->parsefile ('iemplate.xml');
$xml->set_pretty_print('indented_a');
open ( my $input, '<', 'input.csv' ) or die $!;
while ( <$input> ) {
chomp;
my ($id, $name, $ip) = split /,/;
$xml->root->set_att('name', $name);
$xml->get_xpath('//ipaddress', 0)->set_text($ip);
my $uri = 'https://hostname:9060/ers/config/networkdevice/($id)';
my $req = HTTP::Request->new('PUT', $uri, [
Accept => 'application/vnd.com.cisco.ise.network.networkdevice.1.1+xml',
Content_Type => 'application/vnd.com.cisco.ise.network.networkdevice.1.1+xml;charset=utf-8'
],
$xml->sprint
);
$req->content($xml->sprint);
$req->authorization_basic("user", "user");
# Pass request to the user agent and get a response back
my $res = $ua->request($req);
# Check the outcome of the response
if ($res->is_success) {
print $res->status_line, "n";
}
else {
print $res->status_line, "n";
}
}
我收到此错误:
404 未找到
但我知道这些 ID 在我的系统中。我应该如何将我的 ID 添加到 URL 以执行多个 PUT 请求?
【问题讨论】:
-
404 表示您访问的 URI 不存在。尝试使用
curl与它交谈 - 你可以curl -XPUT -
$uri正确吗?填充后添加一行以将其打印出来,以便您验证它