Вы можете написать сценарий tmsh, который будет использоваться локально на BIG-IP для запроса этой информации, или вы можете использовать интерфейс iControl REST для запроса этой информации.Вы можете получить более одного запроса для получения точной информации, поскольку профили и политики скрыты в подколлекциях родительского объекта виртуального сервера.Однако в одном запросе вы можете получить имя, место назначения (IP + порт виртуального сервера) и элементы коллекции профилей, например, с помощью curl или с помощью инструмента Postman:
https://ltm3.test.local/mgmt/tm/ltm/virtual?$select=name,destination,profilesReference&expandSubcollections=true
Это возвращает всевиртуальные серверы только с именем, портом ip + и информацией профиля в следующем формате json (для краткости только виртуальный сервер показывает политику на нем):
{
"kind": "tm:ltm:virtual:virtualcollectionstate",
"selfLink": "https://localhost/mgmt/tm/ltm/virtual?$select=name%2Cdestination%2CprofilesReference&expandSubcollections=true&ver=14.0.0",
"items": [
{
"name": "bigvip_443",
"destination": "/Common/192.168.102.60:443",
"profilesReference": {
"link": "https://localhost/mgmt/tm/ltm/virtual/~Common~bigvip_443/profiles?ver=14.0.0",
"isSubcollection": true,
"items": [
{
"kind": "tm:ltm:virtual:profiles:profilesstate",
"name": "ASM_asm_test_policy",
"partition": "Common",
"fullPath": "/Common/ASM_asm_test_policy",
"generation": 569,
"selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~bigvip_443/profiles/~Common~ASM_asm_test_policy?ver=14.0.0",
"context": "all",
"nameReference": {
"link": "https://localhost/mgmt/tm/security/bot-defense/asm-profile/~Common~ASM_asm_test_policy?ver=14.0.0"
}
},
{
"kind": "tm:ltm:virtual:profiles:profilesstate",
"name": "clientssl",
"partition": "Common",
"fullPath": "/Common/clientssl",
"generation": 553,
"selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~bigvip_443/profiles/~Common~clientssl?ver=14.0.0",
"context": "clientside",
"nameReference": {
"link": "https://localhost/mgmt/tm/ltm/profile/client-ssl/~Common~clientssl?ver=14.0.0"
}
},
{
"kind": "tm:ltm:virtual:profiles:profilesstate",
"name": "http",
"partition": "Common",
"fullPath": "/Common/http",
"generation": 553,
"selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~bigvip_443/profiles/~Common~http?ver=14.0.0",
"context": "all",
"nameReference": {
"link": "https://localhost/mgmt/tm/ltm/profile/http/~Common~http?ver=14.0.0"
}
},
{
"kind": "tm:ltm:virtual:profiles:profilesstate",
"name": "tcp",
"partition": "Common",
"fullPath": "/Common/tcp",
"generation": 553,
"selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~bigvip_443/profiles/~Common~tcp?ver=14.0.0",
"context": "all",
"nameReference": {
"link": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp?ver=14.0.0"
}
},
{
"kind": "tm:ltm:virtual:profiles:profilesstate",
"name": "websecurity",
"partition": "Common",
"fullPath": "/Common/websecurity",
"generation": 568,
"selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~bigvip_443/profiles/~Common~websecurity?ver=14.0.0",
"context": "all",
"nameReference": {
"link": "https://localhost/mgmt/tm/ltm/profile/web-security/~Common~websecurity?ver=14.0.0"
}
}
]
}
},
Это намного чище, есливы пишете скрипт на выбранном вами языке, который возвращает только те данные, которые вы хотите получить с ваших виртуальных серверов, и это может быть сделано с удаленной машины для любого большого количества устройств с большим IP-адресом.