Я пытаюсь написать сценарий на PHP, который сбрасывает пароль root на ESXi («myhost», moId="host-15458»), зарегистрированном в VCSA версии 8.0.2 («myvCenter», API-Id= 8.0.2.200). У меня есть старый пароль в $oldpass и новый пароль в $newpass. Хост для моих тестов представляет собой совершенно новую версию вложенного ESXi 8.0.2b.
Я использую его уже несколько месяцев...
Я не совсем уверен, откуда возникла проблема, после того, как я попробовал так много вещей, включая ИИ... который продолжал извиняться.
Я потерял идеи, да что угодно работать на PHP или веб-сервере (Apache) можно, SOAP, cURL или что-то еще, PowerCLI и средства на базе Windows неприемлемы. У меня есть VMWare API для PHP, но я не понимаю, как его подключить и как он работает, возможно, это решение, хотя это "старая" версия для 6.7, просто я не знаю, как ей пользоваться.
Я попробовал использовать объект SOAPClient, вход в систему прошел успешно, но, похоже, время ожидания истекло сразу, поэтому объект Session непригоден для использования даже для немедленного выхода из системы:
/var/www/html/interfaces/RootPasswordChange $ php SOAP.php
login successful
stdClass Object
(
[key] => 52c007b6-208a-8a5b-1e76-955ac6134e59
[userName] => VSPHERE.LOCAL\(redacted)
[fullName] => reporter reporter
[loginTime] => 2024-06-28T10:38:18.945751Z
[lastActiveTime] => 2024-06-28T10:38:18.945751Z
[locale] => en
[messageLocale] => en
[extensionSession] =>
[ipAddress] => (redacted)
[userAgent] => PHP-SOAP/7.4.3-4ubuntu2.23
[callCount] => 0
)
attempting logout()
SoapFault exception: [ServerFaultCode] The session is not authenticated. in /var/www/html/interfaces/RootPasswordChange/SOAP.php:52
Stack trace:
#0 /var/www/html/interfaces/RootPasswordChange/SOAP.php(52): SoapClient->__call()
#1 /var/www/html/interfaces/RootPasswordChange/SOAP.php(75): ESXI_SOAP->__construct()
#2 /var/www/html/interfaces/RootPasswordChange/SOAP.php(92): ESXI_Test()
Этот сценарий был основан на скрипте, найденном в Stack Overflow, который демонстрирует те же симптомы.
Я пробовал через вызовы cURL, работу входа и выхода из системы, Я могу получить список хостов и их moId, однако не могу получить даже информацию API:
function getApiInfo($curl, $vcs, $session_id) {
curl_setopt_array( $curl ,
[ CURLOPT_URL => "https://" . $vcs . "/api"
, CURLOPT_CUSTOMREQUEST => "GET"
, CURLOPT_RETURNTRANSFER => true
, CURLOPT_HTTPHEADER => [ API_VAR_SESSION . ': ' . $session_id ]
, CURLOPT_SSL_VERIFYPEER => false
, CURLOPT_NOPROXY => "*"
]
) ;
$res = curl_exec( $curl ) ;
print_r( $res ) ;
$inf = curl_getinfo( $curl ) ;
$ret = $inf[ 'http_code' ] ;
return $ret === 200 ? json_decode($response, true) : null;
}
выводит следующее:
HTTP/2 405
cache-control: must-revalidate,no-cache,no-store
content-type: text/html;charset=iso-8859-1
content-length: 473
x-envoy-upstream-service-time: 0
date: Fri, 28 Jun 2024 10:51:20 GMT
Error 405 HTTP method GET is not supported by this URL
HTTP ERROR 405 HTTP method GET is not supported by this URL
URI:/api
STATUS:405
MESSAGE:HTTP method GET is not supported by this URL
SERVLET:servlet 4
ИИ Claude 3.5 предложил следующее:
function getHostDetails( $curl , $vcs , $moId , $session_id ) {
$url = 'https://' . $vcs . '/api/vcenter/host/' . $moId ;
echo "$url\n";
curl_setopt_array( $curl ,
[ CURLOPT_URL => $url
, CURLOPT_CUSTOMREQUEST => 'GET'
, CURLOPT_RETURNTRANSFER => true
, CURLOPT_SSL_VERIFYPEER => false
, CURLOPT_HEADER => [ API_VAR_SESSION => $session_id ]
]
) ;
$res = curl_exec( $curl ) ;
var_dump( $res ) ;
$ret = curl_getinfo($curl);
return $ret[ 'http_code' ] === 200 ? json_decode($res , true) : null ;
}
но я получаю:
{"error_type":"NOT_FOUND","messages":[{"args":[],"default_message":"Not found.","id":"com.vmware.vapi.rest.httpNotFound"}]}"
https://myvcenter/api/vcenter/host/host-15458
string(241) "HTTP/2 404
date: Fri, 28 Jun 2024 11:42:45 GMT
content-type: application/json
x-envoy-upstream-service-time: 1
Подробнее здесь: https://stackoverflow.com/questions/786 ... h-rest-api
Изменить пароль на ESXi с помощью REST API ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1719577567
Anonymous
Я пытаюсь написать сценарий на PHP, который сбрасывает пароль root на ESXi («myhost», moId="host-15458»), зарегистрированном в VCSA версии 8.0.2 («myvCenter», API-Id= 8.0.2.200). У меня есть старый пароль в $oldpass и новый пароль в $newpass. Хост для моих тестов представляет собой совершенно новую версию вложенного ESXi 8.0.2b.
Я использую его уже несколько месяцев...
Я не совсем уверен, откуда возникла проблема, после того, как я попробовал так много вещей, включая ИИ... который продолжал извиняться.
Я потерял идеи, да что угодно работать на PHP или веб-сервере (Apache) можно, SOAP, cURL или что-то еще, PowerCLI и средства на базе Windows неприемлемы. У меня есть VMWare API для PHP, но я не понимаю, как его подключить и как он работает, возможно, это решение, хотя это "старая" версия для 6.7, просто я не знаю, как ей пользоваться.
Я попробовал использовать объект SOAPClient, вход в систему прошел успешно, но, похоже, время ожидания истекло сразу, поэтому объект Session непригоден для использования даже для немедленного выхода из системы:
/var/www/html/interfaces/RootPasswordChange $ php SOAP.php
login successful
stdClass Object
(
[key] => 52c007b6-208a-8a5b-1e76-955ac6134e59
[userName] => VSPHERE.LOCAL\(redacted)
[fullName] => reporter reporter
[loginTime] => 2024-06-28T10:38:18.945751Z
[lastActiveTime] => 2024-06-28T10:38:18.945751Z
[locale] => en
[messageLocale] => en
[extensionSession] =>
[ipAddress] => (redacted)
[userAgent] => PHP-SOAP/7.4.3-4ubuntu2.23
[callCount] => 0
)
attempting logout()
SoapFault exception: [ServerFaultCode] The session is not authenticated. in /var/www/html/interfaces/RootPasswordChange/SOAP.php:52
Stack trace:
#0 /var/www/html/interfaces/RootPasswordChange/SOAP.php(52): SoapClient->__call()
#1 /var/www/html/interfaces/RootPasswordChange/SOAP.php(75): ESXI_SOAP->__construct()
#2 /var/www/html/interfaces/RootPasswordChange/SOAP.php(92): ESXI_Test()
Этот сценарий был основан на скрипте, найденном в Stack Overflow, который демонстрирует те же симптомы.
Я пробовал через вызовы cURL, работу входа и выхода из системы, Я могу получить список хостов и их moId, однако не могу получить даже информацию API:
function getApiInfo($curl, $vcs, $session_id) {
curl_setopt_array( $curl ,
[ CURLOPT_URL => "https://" . $vcs . "/api"
, CURLOPT_CUSTOMREQUEST => "GET"
, CURLOPT_RETURNTRANSFER => true
, CURLOPT_HTTPHEADER => [ API_VAR_SESSION . ': ' . $session_id ]
, CURLOPT_SSL_VERIFYPEER => false
, CURLOPT_NOPROXY => "*"
]
) ;
$res = curl_exec( $curl ) ;
print_r( $res ) ;
$inf = curl_getinfo( $curl ) ;
$ret = $inf[ 'http_code' ] ;
return $ret === 200 ? json_decode($response, true) : null;
}
выводит следующее:
HTTP/2 405
cache-control: must-revalidate,no-cache,no-store
content-type: text/html;charset=iso-8859-1
content-length: 473
x-envoy-upstream-service-time: 0
date: Fri, 28 Jun 2024 10:51:20 GMT
Error 405 HTTP method GET is not supported by this URL
HTTP ERROR 405 HTTP method GET is not supported by this URL
URI:/api
STATUS:405
MESSAGE:HTTP method GET is not supported by this URL
SERVLET:servlet 4
ИИ Claude 3.5 предложил следующее:
function getHostDetails( $curl , $vcs , $moId , $session_id ) {
$url = 'https://' . $vcs . '/api/vcenter/host/' . $moId ;
echo "$url\n";
curl_setopt_array( $curl ,
[ CURLOPT_URL => $url
, CURLOPT_CUSTOMREQUEST => 'GET'
, CURLOPT_RETURNTRANSFER => true
, CURLOPT_SSL_VERIFYPEER => false
, CURLOPT_HEADER => [ API_VAR_SESSION => $session_id ]
]
) ;
$res = curl_exec( $curl ) ;
var_dump( $res ) ;
$ret = curl_getinfo($curl);
return $ret[ 'http_code' ] === 200 ? json_decode($res , true) : null ;
}
но я получаю:
{"error_type":"NOT_FOUND","messages":[{"args":[],"default_message":"Not found.","id":"com.vmware.vapi.rest.httpNotFound"}]}"
https://myvcenter/api/vcenter/host/host-15458
string(241) "HTTP/2 404
date: Fri, 28 Jun 2024 11:42:45 GMT
content-type: application/json
x-envoy-upstream-service-time: 1
Подробнее здесь: [url]https://stackoverflow.com/questions/78682452/change-password-on-esxi-with-rest-api[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия