红联Linux门户
Linux帮助

卡巴斯基Linux版本检测Key是否有效的莫名奇妙的问题

发布时间:2007-10-18 01:02:23来源:红联作者:yardslong
原文出处http://web-wizard.spaces.live.com/blog/cns!d7bd5cd582e4406f!276.entry

命令为: /opt/kav/5.5/kav4unix/bin/licensemanager -s

结果显示如下:
Kaspersky license manager for Linux. Version 5.5.0/RELEASE #68
Copyright (C) Kaspersky Lab, 1997-2005.
Portions Copyright (C) Lan Crypto
License info:
Expiration date: 10-09-2010, expires in 1057 days
Product name: Kaspersky Anti-Virus BO for SendMail / Qmail / Postfix Milter API International Edition. 50-99 MailAddress 1 year NFR Licence
Key file kav4workstation-linux-5.5.3.key
Type: Commercial
Expiration date: expired
Serial: 0038-000413-000A3FD4
Product name: Kaspersky WorkSpace Security (WS) US Edition. 10-Workstation 3 year Comm.Lic.+Maint. Download Pack
Key file 00FFF07B.key
Type: Commercial
Expiration date: 10-09-2010, expires in 1058 days
Serial: 049E-0003F4-00FFF07B

命令为: /opt/kav/5.5/kav4unix/bin/licensemanager -s |grep 'expires in'

手工在linux终端下测试,可以显示所有被添加的Key文件的信息。
Expiration date: 10-09-2010, expires in 1057 days
Expiration date: 10-09-2010, expires in 1058 days

将上述命令存入变量 $Kaspersky_Check
即 $Kaspersky_Check="/opt/kav/5.5/kav4unix/bin/licensemanager -s |grep 'expires in'";

可是在Apache服务器的PHP脚本中执行条件判断语句

if (`$Kaspersky_Check`)
{
echo ("Kaspersky key is valid!
");
}
else
{
echo ("Kaspersky key is not valid!
");
}

却得不到有效结果。
始终提示 Kaspersky key is not valid!

而后换用另一种方法
$TempLog = tempnam("/tmp", "avp_");
$Kaspersky_Check_3 = "/opt/kav/5.5/kav4unix/bin/licensemanager -s > ".$TempLog;
echo ("Kaspersky_Check_3 cmd= ".$Kaspersky_Check_3."
");
system($Kaspersky_Check_3);
$Lines = explode("\n", rtrim(shell_exec("cat $TempLog|grep 'expires in'"),"\n"));
unlink($TempLog);
foreach($Lines as $Line)
{
$Pattern = "/^Expiration date:(.+)expires in(.*)/";
if(preg_match($Pattern, $Line, $Matches))
{
$OneLine = $Matches[1];
echo ("Kaspersky_Check_3
".$OneLine."
");
}
}

照样得不到合理的结果。

手工执行命令/opt/kav/5.5/kav4unix/bin/licensemanager -s > /tmp/avp_menual

得到结果如下(同上)
Kaspersky license manager for Linux. Version 5.5.0/RELEASE #68
Copyright (C) Kaspersky Lab, 1997-2005.
Portions Copyright (C) Lan Crypto
License info:
Expiration date: 10-09-2010, expires in 1057 days
Product name: Kaspersky Anti-Virus BO for SendMail / Qmail / Postfix Milter API International Edition. 50-99 MailAddress 1 year NFR Licence
Key file kav4workstation-linux-5.5.3.key
Type: Commercial
Expiration date: expired
Serial: 0038-000413-000A3FD4
Product name: Kaspersky WorkSpace Security (WS) US Edition. 10-Workstation 3 year Comm.Lic.+Maint. Download Pack
Key file 00FFF07B.key
Type: Commercial
Expiration date: 10-09-2010, expires in 1058 days
Serial: 049E-0003F4-00FFF07B

而将上述PHP代码中的unlink($TempLog);注释掉。然后到临时目录中寻找生成的文件,打开后却只有如下内容:

Kaspersky license manager for Linux. Version 5.5.0/RELEASE #68
Copyright (C) Kaspersky Lab, 1997-2005.
Portions Copyright (C) Lan Crypto

看来这就是问题的根源所在。不知道为什么会这样。
文章评论

共有 1 条评论

  1. webwizard 于 2008-04-09 15:57:22发表:

    这是我曾经写的一篇文章,注明出处了。