{"id":34063386,"url":"https://github.com/umurarslan/evenger","last_synced_at":"2026-04-05T18:32:12.566Z","repository":{"id":65204361,"uuid":"587077455","full_name":"umurarslan/evenger","owner":"umurarslan","description":"Create EVE-NG network topology with EVE-NG API and excel file","archived":false,"fork":false,"pushed_at":"2023-02-02T09:15:57.000Z","size":68,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-27T12:33:50.044Z","etag":null,"topics":["automation","eve-ng","eve-ng-api","network","network-automation","network-programming"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/umurarslan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2023-01-09T22:44:52.000Z","updated_at":"2025-02-08T11:52:48.000Z","dependencies_parsed_at":"2023-02-17T17:45:38.006Z","dependency_job_id":null,"html_url":"https://github.com/umurarslan/evenger","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/umurarslan/evenger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umurarslan%2Fevenger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umurarslan%2Fevenger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umurarslan%2Fevenger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umurarslan%2Fevenger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/umurarslan","download_url":"https://codeload.github.com/umurarslan/evenger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umurarslan%2Fevenger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31446524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T15:22:31.103Z","status":"ssl_error","status_checked_at":"2026-04-05T15:22:00.205Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","eve-ng","eve-ng-api","network","network-automation","network-programming"],"created_at":"2025-12-14T05:21:34.684Z","updated_at":"2026-04-05T18:32:12.561Z","avatar_url":"https://github.com/umurarslan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Evenger\nCreate EVE-NG network topology with EVE-NG API and excel file.\n\n---\n\n## Requirements\n\n[Python \u003e= 3.9](https://www.python.org/downloads/)\n\n\u003e For Windows, select the **Add Python 3.x to PATH** checkbox during installation.\n\n---\n\n## Installation\n\n```\npip install evenger\n```\n\n---\n\n## Usage (API)\n\n```py\n# import Evenger\nfrom evenger import Evenger\n```\n\n```py\n# define Evenger object\nevenger_lab = Evenger(\n    eveng_server_url='http://172.18.18.18',\n    username='admin',\n    password='eve',\n    lab_path='my_lab_folder/my_lab'\n)\n```\n\n```py\n# add NEW lab\nevenger_lab.add_lab()\n```\n\n```py\n# add regular bridge (network) to topology (type: bridge)\nevenger_lab.add_network(\n    name='Bridge_INTERNAL',\n    type='bridge',\n    left='200',\n    top='200'\n)\n\n# add cloud bridge (network) to topology (type: pnet0)\nevenger_lab.add_network(\n    name='Bridge_MANAGEMENT',\n    type='pnet0',\n    left='700',\n    top='200'\n)\n```\n\n```py\n# add node nokia sros\nnokia_sros_cpm_node_dict = {\n    'image': 'timoscpm-21.10.R6',\n    'name': '7750_test_1',\n    'management_address': '10.1.1.102/24',\n    'timos_line': 'slot=A chassis=SR-12 card=cpm5',\n    'timos_license': 'ftp://172.18.18.18/sros_vSIM_R21_license_file.txt',\n    'left': '500',\n    'top': '200'\n}\nevenger_lab.add_node_sros_cpm(**nokia_sros_cpm_node_dict)\n```\n\n```py\n# add linux server\ncentos7_node_dict = {\n    'image': 'linux-centos7',\n    'name': 'centos7_server',\n    'cpu': '1',\n    'ram': '1024',\n    'left': '700',\n    'top': '700'\n}\nevenger_lab.add_node_linux(**centos7_node_dict)\n```\n\n```py\n# add any custom node with eve-ng node json data (e.g. Cisco XRv 9000)\ncisco_xrv_json_text='''\n{\n  \"template\": \"xrv\",\n  \"type\": \"qemu\",\n  \"count\": \"1\",\n  \"image\": \"xrv-k9-6.0.1\",\n  \"name\": \"xrv_custom_node\",\n  \"icon\": \"XR.png\",\n  \"uuid\": \"\",\n  \"cpulimit\": \"undefined\",\n  \"cpu\": \"1\",\n  \"ram\": \"3072\",\n  \"ethernet\": \"4\",\n  \"qemu_version\": \"\",\n  \"qemu_arch\": \"\",\n  \"qemu_nic\": \"\",\n  \"qemu_options\": \"-machine type=pc,accel=kvm,usb=off -serial mon:stdio -nographic -no-user-config -nodefaults -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -realtime mlock=off -no-shutdown -boot order=c\",\n  \"ro_qemu_options\": \"-machine type=pc,accel=kvm,usb=off -serial mon:stdio -nographic -no-user-config -nodefaults -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -realtime mlock=off -no-shutdown -boot order=c\",\n  \"config\": \"0\",\n  \"delay\": \"0\",\n  \"console\": \"telnet\",\n  \"left\": \"200\",\n  \"top\": \"800\",\n  \"postfix\": 0\n}\n'''\nevenger_lab.add_node_custom(custom_json_text=cisco_xrv_json_text)\n```\n\n---\n\u003e Before create any connection, all bridge and node should be already created. Do not add any node after connection.\n---\n\n```py\n# connect node to bridge/network\nevenger_lab.connect_node_to_bridge(\n    node_name='7750_test_1',\n    node_port='1/1/1',\n    bridge_name='Bridge_Internal'\n)\n```\n\n```py\n# connect node to node\nevenger_lab.connect_node_to_node(\n    first_node='7750_test_1',\n    first_port='1/1/1',\n    second_node='7750_test_2',\n    second_port='1/1/2'\n)\n```\n\n---\n\n## Usage (Node Configuration with Telnet)\n- Create config folder in current working directory e.g. **my_config_folder**.\n- Create txt file with eve-ng node name e.g. **7750_test_1.txt** in config folder (node must be booted completely and supported eve-ng telnet).\n- Add cli configuration to node text file with **\u003c_EXPECT: ***expected-string***\u003e** which depends on node cli. Below example for Nokia SROS:\n\n    ```\n    _TIMEOUT: 3\n    _EXPECT: ogin\n    admin\n    _EXPECT: assword\n    admin\n    _EXPECT: \u003econfig\n    configure\n        system\n            name \"7750_test_1_system_name\"\n        exit\n    exit\n    logout\n    ```\n\n- After that add node configs to config folder (my_config_folder/7750_test_1.txt, my_config_folder/7750_test_2.txt etc.) run below python code:\n    ```py\n    # import Evenger\n    from evenger import Evenger\n    ```\n    \n    ```py\n    # define Evenger object\n    evenger_lab = Evenger(\n        eveng_server_url='http://172.18.18.18',\n        username='admin',\n        password='eve',\n        lab_path='my_lab_folder/my_lab'\n    )\n    ```\n    \n    ```py\n    # send configuration with telnet for eve-ng telnet supported node\n    evenger_lab.config_with_telnet(config_folder='my_config_folder')\n    ```\n\n---\n\n## Usage (Create Topology with Excel File)\n\nCheck **examples/evenger_topology.xlsx** excel file in project repo. \n\"_LAB_INFO\" sheet must be filled for eve-ng access and other sheets are same as API functions use regarding eve-ng topology. \n\n- Run from CLI:\n\n    \u003e With pip installation, **evenger** command is already added to system path.\n    \n    Help:\n    ```\n    PS C:\\Users\\alg\\desktop\u003e evenger -h\n    usage: evenger.py [-h] [--excel_file EXCEL_FILE] [--config_folder CONFIG_FOLDER] [--auto_start AUTO_START] [--boot_time BOOT_TIME]\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      --excel_file EXCEL_FILE\n                            excel file path [e.g. my_evenger_topology.xlsx] (default: --excel_file=evenger_topology.xlsx)\n      --config_folder CONFIG_FOLDER\n                            config folder path [e.g. my_configs_folder] (OPTIONAL default: --config_folder=configs)\n      --auto_start AUTO_START\n                            auto start [YES or NO] (default: --auto_start=YES)\n      --boot_time BOOT_TIME\n                            node boot time in seconds [e.g. 150] (default: --boot_time=180)\n    ```\n    \n    \u003e Run **evenger** command in working directory which includes excel file and/or config folder\n    \n    Run without config file:\n    ```\n    PS C:\\Users\\alg\\desktop\u003e evenger --excel_file my_evenger_topology.xlsx\n    ```\n\n    Run with config files folder:\n    ```\n    PS C:\\Users\\alg\\desktop\u003e evenger --excel_file my_evenger_topology.xlsx --config_folder my_configs_folder\n    ```\n    \n- Run from python code:\n    ```py\n    # import Evenger only, no need create Evenger object\n    from evenger import Evenger\n\n    # create topology with excel file\n    Evenger.excel_topology(\n        excel_filename='evenger_topology.xlsx',\n        auto_start='YES'\n    )\n\n    # create topology with excel and telnet configuration\n    Evenger.excel_topology(\n        excel_filename='evenger_topology.xlsx',\n        auto_start='YES',\n        config_folder='my_config_folder',\n        node_boot_time=150\n    )\n    ```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumurarslan%2Fevenger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fumurarslan%2Fevenger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumurarslan%2Fevenger/lists"}