Есть ли способ получить данные из файла конфигурации big-ip F5, используя PHP или любой другой язык? - PullRequest
0 голосов
/ 05 марта 2019

Я не знаком с сетями, но у меня есть требование, где я должен читать файл conf с большим ip и хранить виртуальные данные ltm в файле.

Пример файла conf:

> ltm virtual /Common/vs_test {
>     destination /Common/10.01.01.111:80
>     ip-protocol tcp
>     mask 255.255.255.255
>     policies {
>          /Common/adt_vs_test {}
>     }
>     profile {
>        /Common/ADT_DSS_A_G { }
>     }
>     rules {
>        ....
>     }
>     security {
>         ....
>     } 
  }

Из этого файла мне нужно

Имя виртуального сервера - vs_test

IP: 10.01.01.111

Порт: 80

Политика безопасности: DSS_A_G

Может кто-нибудь помочь мне разобраться?

1 Ответ

0 голосов
/ 06 марта 2019

Вы можете написать сценарий 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-адресом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...