原文出处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
看来这就是问题的根源所在。不知道为什么会这样。


webwizard 于 2008-04-09 15:57:22发表:
这是我曾经写的一篇文章,注明出处了。