Very dirty way to get a list of required patches for a server using patchlink:
<?PHP
$conn = odbc_connect(‘patchlink’,’patchlink_odbc’,”);
function lookupvulnid($id){
$conn = odbc_connect(‘patchlink’,’patchlink_odbc’,”);
$sql=”SELECT VulnerabilityName, VulnerabilityDescription, Impact FROM rpt_Vulnerabilities WHERE VulnerabilityID = ‘”.$id.”’ AND Impact IN (‘Critical’,’Critical - 01’) AND VendorName LIKE ‘Microsoft%’”;
$res=odbc_exec($conn, $sql);
while(odbc_fetch_row($res)){
$vulnName=odbc_result($res, 1);
$vulnDesc=odbc_result($res, 2);
$vulnImpact=odbc_result($res, 3);
print (“”.$vulnName.”<br>”.$vulnDesc.”<br>”.$vulnImpact.”<br>”);
print(“”.$vulnName.” - “.$vulnImpact.”<br></hr>”);}
}
if ($conn){
$sql=”SELECT AgentID FROM dbo.rpt_Agents WHERE AgentName LIKE ‘%HOSTNAME’”;
$res=odbc_exec($conn, $sql);
$devID=odbc_result($res,1);
print($devID.”<br>”);
$sql=”SELECT VulnerabilityID FROM dbo.rpt_VulnerabilityResults WHERE AgentID=’”.$devID.”’ AND Result=’Not Patched’”;
$res=odbc_exec($conn, $sql);
while(odbc_fetch_row($res)){
$vulnID = odbc_result($res, 1);
lookupvulnid($vulnID);
}
}else{
die(“unable to connect”);
}
?>