Чтобы сгенерировать / инициировать новое сканирование уязвимостей на SoftLayer, это работает (для каждого сервера в учетной записи):
require_once('SoapClient.class.php');
$apiUsername = "omitted";
$apiKey = "omitted";
$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUsername, $apiKey);
$accountInfo = $client->getObject();
$hardware = $client->getHardware();
foreach ($hardware as $server){
$scanclient = SoftLayer_SoapClient::getClient('SoftLayer_Network_Security_Scanner_Request', '', $apiUsername, $apiKey);
$scantemplate = new stdClass();
$scantemplate->accountId = $accountInfo->id;
$scantemplate->hardwareId = $server->id;
$scantemplate->ipAddress = $server->primaryIpAddress;
try{
// Successfully creates new scan
$scan = $scanclient->createObject($scantemplate);
} catch (Exception $e){
echo $e->getMessage() . "\n\r";
}
}
При смене
$reportstatus = $scanclient->createObject($scantemplate);
в
$reportstatus = $scanclient->getReport($scantemplate);
API отвечает с ошибкой относительно «Объект не существует для выполнения метода.».
Требуется ли SoftLayer_Network_Security_Scanner_RequestInitParameters в соответствии с документами? Если да, как вы определяете эти «параметры инициализации» и прикрепляете их к запросу о статусе или отчете?
http://sldn.softlayer.com/reference/services/SoftLayer_Network_Security_Scanner_Request/getReport
Вам нужно установить параметр init с помощью PHP-клиента Softlayer, вы можете сделать это следующим образом:
Когда вы создаете клиент:
$virtualGuestService = SoftLayer_SoapClient::getClient('SoftLayer_Virtual_Guest', $initParemter, $username, $key);
Или после создания клиента:
$virtualGuestService = SoftLayer_SoapClient::getClient('SoftLayer_Virtual_Guest', null, $username, $key);
# Setting the init parameter
$virtualGuestService->setInitParameter($virtualGuestId);
Параметр init — это, в основном, идентификатор объекта, который вы хотите отредактировать или удалить, в этом случае параметр init — это идентификатор сканирования уязвимостей, для которого вы хотите получить отчет.
Вы можете попробовать этот код:
$scanclient = SoftLayer_SoapClient::getClient('SoftLayer_Network_Security_Scanner_Request', '', $apiUsername, $apiKey);
$scanclient->setInitParameter(15326); # The id of the vulnerability scan
$reportstatus = $scanclient->getReport();
Чтобы получить список ваших сканирований уязвимостей в VSI, вы можете использовать этот метод:
http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/getSecurityScanRequests
и для серверов с открытым исходным кодом вы можете использовать этот:
http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/getSecurityScanRequests
С уважением
Других решений пока нет …