{"id":32971829,"url":"https://github.com/davidjohngee/clicrud","last_synced_at":"2026-01-28T10:16:59.413Z","repository":{"id":86779578,"uuid":"49012732","full_name":"DavidJohnGee/clicrud","owner":"DavidJohnGee","description":"Brocade CLI interface manager via SSH \u0026 Telnet for ICX, MLX, CER, CES, vRouter","archived":false,"fork":false,"pushed_at":"2017-05-08T16:06:08.000Z","size":122,"stargazers_count":13,"open_issues_count":2,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-12-06T21:47:54.086Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DavidJohnGee.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,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-01-04T17:38:48.000Z","updated_at":"2024-08-09T14:52:02.000Z","dependencies_parsed_at":"2023-07-12T07:30:28.203Z","dependency_job_id":null,"html_url":"https://github.com/DavidJohnGee/clicrud","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DavidJohnGee/clicrud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidJohnGee%2Fclicrud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidJohnGee%2Fclicrud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidJohnGee%2Fclicrud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidJohnGee%2Fclicrud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DavidJohnGee","download_url":"https://codeload.github.com/DavidJohnGee/clicrud/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidJohnGee%2Fclicrud/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284640341,"owners_count":27039411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-15T02:00:06.050Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-11-13T05:00:31.832Z","updated_at":"2025-11-16T00:01:13.182Z","avatar_url":"https://github.com/DavidJohnGee.png","language":"Python","funding_links":[],"categories":["Vendor Abstraction Library"],"sub_categories":["NETCONF"],"readme":"# clicrud\nThis Python library has been built by Brocade, specifically tuned for Brocade CLI (tested on ICX, MLX, CER_CES, vRouter)\n\nThis Python Library takes a single, list or file based list of CLI commands and generates both programmatic\noutput as well as file based output. Output can be human readable or can be in JSON, where the key is the command\nand the value is the string output of the command. Programmatic output can be a string, or a list, where each element\nis a line with '\\r\\n' stripped out.\n\nThe newer 'configure' method on the generic class, allows users to insert configuration commands in blocks. It is stanza specific, so what this means is, if you configure a VLAN and know the configuration mode changes, then the next command in the list should be the tagging/untagging etc. When you invoke a new configure call, the block and state machine is reset. The object returned from this is a dictionary, with the key being the command and the value being possible returned values (sometimes there may be none!)\n\nThis library has clocked through 1200 CLI commands using Telnet in about 10 seconds. SSH is a little slower due to keying and\ncrypto functionality. Onboard CPUs can't handle the same data rates as un-encrypted Telnet.\n\nThis library when used in CLI Scripting mode (uses a helper class to setup a splash screen and take command line arguments)\nwill provide a basic loop so the same commands can be collected over a time period in seconds.\n\n#### Generic\nGeneric is the device class. It is possible to copy this class and 'tweak it' for other usage.\n\n#### Attributes\nDevice attributes collected via a dictionary are arbitrary and not related per device.\nThey are entirely customisable, so have fun!\n\nIn order to use the attributes, create a copy of the attribute class in the same directory as your code. As long as you follow the pythonic example in the examples directory, you're good to go.\n\n## Installation\n```\npip install clicrud\n```\n\n## Usage\n\nThere are a number of ways to actually use this library. Check the samples directory for more examples.\n\nThere will be some YouTube videos to follow. Links will be posted here.\n\nThe test script below uses the 'library' aspect of CLICRUD. This means you can talk CLI easily to MLX, ICX and VDX devices without worrying about authentication steps or stages. Feed the information in and if the authentication sequence needs the information, it will be consumed. Therefore a device without any authentication can have empty fields. For automation consistency, please enter the fields.\n\n```Python\nfrom clicrud.device.generic import generic\n\nMLX = \"x.x.x.x\"\nICX = \"y.y.y.y\"\nVDX = \"z.z.z.z\"\n# VRouter support with version 0.3.00\nVRouter = \"r.r.r.r\"\n\n# With version 0.3.00, 'b64password' and 'b64enable' also exist as arguments for the below.\n# They are decoded and copied to 'password' and 'enable' automatically.\n\ntransport = generic(host=VDX, username=\"admin\", enable=\"password\",\n                    method=\"ssh\", password=\"password\")\n\nprint \"\\r\\n===Show VLAN brief:\"\n# Return_type can either be a string or list. One is better for scripts,\n# the other better for automation perhaps!\nif transport.connected:\n    print transport.read(\"show vlan brief\", return_type=\"string\")\n\n\nprint \"\\r\\n===Configuration data and feedback:\"\nif transport.connected:\n    print transport.configure([\"no protocol vrrp\"])\n\n\nprint \"\\r\\n===Show interface:\"\nif transport.connected:\n    print transport.read(\"show interface\", return_type=\"string\")\n\n\n\n# print transport.protocol\n# print transport.connected\nif transport.connected:\n    transport.close()\n```\n\n## License\nCLICRUD is released under the APACHE 2.0 license. See ./LICENSE for more\ninformation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidjohngee%2Fclicrud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidjohngee%2Fclicrud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidjohngee%2Fclicrud/lists"}