1

脚本在手动运行时运行良好,但是当我在 cronjob 中安排它时,它显示:

malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<html>\r\n<head><tit...") at /usr/local/lib/perl5/site_perl/5.14.2/JSON.pm line 171.

脚本本身:

#rest config vaiables


$ENV{'PERL_LWP_SSL_VERIFY_NONE'} = 0;
print "test\n";
my $client = REST::Client->new();
$client->addHeader('Authorization', 'Basic YWRtaW46cmFyaXRhbg==');
$client->addHeader('content_type', 'application/json');
$client->addHeader('accept', 'application/json');
$client->setHost('http://10.10.10.10');
$client->setTimeout(1000);

$useragent = $client->getUseragent();

print "test\n";

#Getting racks by pod
                 $req = '/api/v2/racks?name_like=2t';
               #print " rekvest {$req}\n";
               $client->request('GET', qq($req));
               $racks = from_json($client->responseContent());
               $datadump = Dumper (from_json($client->responseContent()));

crontab -l

*/2 * * * *  /usr/local/bin/perl /folder/api/2t.pl > /dmitry/api/damnitout 2>&1

感谢任何建议谢谢你,德米特里

4

1 回答 1

2

很难说到底发生了什么,但根据我的经验,99% 的运行问题都crontab源于环境变量的差异。

调试此的典型方法:在脚本的开头添加如下块:

foreach my $key (keys %ENV) {
    print "$key = $ENV{$key}\n";
}

在控制台中运行它,查看输出,将其保存在日志文件中。

现在,在 crontab 中重复相同的操作并将其保存到日志文件中(您已经这样做了 - 这很好)。

尝试以两种方式运行它并尝试修复它时,看看环境变量是否有任何差异。在 Perl 中,可能最简单的方法是通过更改 %ENV 来更改环境。在解决了所有差异之后,没有理由不能正常工作。

祝你好运!

于 2012-12-23T00:44:09.407 回答