{ "info": { "author": "Florian Baumann", "author_email": "flo@noqqe.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Terminals", "Topic :: Utilities" ], "description": "sadcat\n======\n\nMy ssh config is hell. Even if its not much, its hell. I have ~190 host\nentries which results in 1094(!) lines of sshconfig. Which I maintain\nmanually. Man-u-a-ll-y!\n\nWhy is that?\n\nI use a lot of aliases to remember all my hosts. Which is probably my\nfault but im used to it. A typical entry looked like\n\n::\n\n Host nyc-cexapsdrap21.company.com drap21 pdrap21\n Hostname nyc-cexapsdrap21.company.com\n User myuser\n Port 22\n IdentiyFile ~/.ssh/project_id_rsa\n\nYou can do a lot of stuff with wildcards in sshconfig. What you cant do\nis having dynamic aliases (at least what I know). This would require a\ntemplating like option.\n\nAnd thats why i wrote this tiny script.\n\ninstall & usage\n~~~~~~~~~~~~~~~\n\nas usual.\n\n.. code:: bash\n\n pip install sadcat\n sadcat ~/.ssh/sadcat.toml\n\nPersonally i use two aliases\n\n.. code:: bash\n\n # set refresh alias\n alias sshre=\"$SADCAT $HOME/.ssh/sadcat.toml > $HOME/.ssh/config\"\n\n # set edit alias\n alias sshedit=\"$EDITOR $HOME/.ssh/sadcat.toml\"\n\nconfig\n~~~~~~\n\nranges\n^^^^^^\n\nA minimal config would look like this.\n\n.. code:: toml\n\n [hosts]\n\n [hosts.nyc-dpzzt]\n hostname = \"nyc-dpzzt[01-03]\"\n\nand ``sadcat`` generates 3 ssh entries for you called ``nyc-dpzzt01``,\n``nyc-dpzzt02`` and ``nyc-dpzzt03``. Simple.\n\ntemplates\n^^^^^^^^^\n\nTo save more lines you can apply a template to a hosts group\n\n.. code:: toml\n\n [hosts]\n\n [hosts.twoleadingzeros]\n hostname = \"fra1024mfoo[001-005]\"\n template = \"fra1024\"\n\n [templates]\n\n [templates.fra1024]\n user = \"otheruser\"\n port = \"2202\"\n\nOf course, setting a variable in ``hosts`` will always overwrite those\nbeing set in ``templates``.\n\nThere is a special template that is applied to every host if its\nconfigured called \"default\". (``[templates.default]``)\n\naliases\n~~~~~~~\n\nthose can be specified in ``hosts`` using a ``toml`` array if multiple\nor a string. Range numbers (if available) will be applied at the end.\nThats just how i like it. Theres no deeper meaning.\n\n.. code:: toml\n\n [hosts.hostsaliases]\n hostname = \"nyc-dpzzt[5-9]\"\n template = \"company\"\n alias = [ \"dypppt\", \"dzzzpt\" ]\n\nwould result in\n\n::\n\n Host nyc-dpzzt5 dypppt5 dzzzpt5\n hostname ...\n\n Host nyc-dpzzt6 dypppt6 dzzzpt6\n hostname ...\n\nbut as said, ``alias`` can also be just a string\n\n.. code:: toml\n\n [hosts.hostsaliases]\n hostname = \"nyc-dpzzt[5-9]\"\n alias = \"dypppt\"\n\nsingle hosts\n^^^^^^^^^^^^\n\nAs you might expected, if you dont have a ``Range`` defined in a\nhostname this entry will result in one single host.\n\n.. code:: toml\n\n [hosts.singlehost]\n hostname = \"fra1024mfoo23\"\n user = \"foo\"\n\ncustom\n~~~~~~\n\nIf all that is still not enough flexibility, you can add custom snippets\nto your ssh config by defining multiline strings in the ``[custom]``\nsection with full hosts.\n\n.. code:: toml\n\n [custom]\n\n hostsb = '''\n\n Host bar.foo\n hostname bla\n user foo\n\n Host foo.bar\n hostname foo\n user bar\n port par\n '''\n\n strangehost = '''\n\n Host baz\n hostname baz\n port 666\n user evil\n '''\n\nFor more detailed examples see ``conf.toml`` in this repo.\n\nsadcat?\n~~~~~~~\n\nI used a project name generator and liked it.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/noqqe/sadcat", "keywords": "ssh config templating generator ssh_config toml", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "sadcat", "package_url": "https://pypi.org/project/sadcat/", "platform": "", "project_url": "https://pypi.org/project/sadcat/", "project_urls": { "Homepage": "https://github.com/noqqe/sadcat" }, "release_url": "https://pypi.org/project/sadcat/3.0.0/", "requires_dist": null, "requires_python": "", "summary": "A ssh config generator I dont recommend to use", "version": "3.0.0" }, "last_serial": 5953466, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "d58c2de7da0162431b125227d311bc7b", "sha256": "96b3ff534e411dafc8f86dc180df8df1d231ab4cde0ba7c0745448d88ca76824" }, "downloads": -1, "filename": "sadcat-0.0.0.tar.gz", "has_sig": false, "md5_digest": "d58c2de7da0162431b125227d311bc7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5385, "upload_time": "2017-02-16T15:02:50", "url": "https://files.pythonhosted.org/packages/68/af/98ffaa0c3add3e1415b1beb2abea6ff5392066093185054c8b822461e8be/sadcat-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "82df62baea28eba69f47714f4853be5e", "sha256": "1c9aa9fffb7915b1e1d23815ee5544b7efb6535c874bc180fed0fa8488585dff" }, "downloads": -1, "filename": "sadcat-0.0.1.tar.gz", "has_sig": false, "md5_digest": "82df62baea28eba69f47714f4853be5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4858, "upload_time": "2017-02-09T14:36:56", "url": "https://files.pythonhosted.org/packages/ad/d0/13569ed86b33add4b9b99aadba17f396d42b6d2ab1303a3a40196a966af9/sadcat-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "e956cf2c3aea3e803f228cad44031698", "sha256": "810e469e1c497e816eada70abbd4ec70abbcb29ff91622a2c05ba078ac6cfa3c" }, "downloads": -1, "filename": "sadcat-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e956cf2c3aea3e803f228cad44031698", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4867, "upload_time": "2017-02-09T14:58:36", "url": "https://files.pythonhosted.org/packages/dc/ca/e6803b65c272102695d26714917a3bae7f537f08a60b5ec5157906e51cf8/sadcat-0.1.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "48aa88dd05aa35138e238ed871fc7e49", "sha256": "263718b184916ebd10e4d1d0b037388074c540361a68b2bdb2ba5cc99ce9a8de" }, "downloads": -1, "filename": "sadcat-0.2.1.tar.gz", "has_sig": false, "md5_digest": "48aa88dd05aa35138e238ed871fc7e49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4935, "upload_time": "2017-02-13T14:05:24", "url": "https://files.pythonhosted.org/packages/1b/9d/9f79c0e7ccd4ba29579f9327aff4ec55f4f42291bb0a757d5559fd21aee3/sadcat-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "4b9f963874ef05a45dd1fd318ab42dad", "sha256": "6d8e767e399861157afe0b42f82c003eda366ea8de725ee169f8b08eb989cd7f" }, "downloads": -1, "filename": "sadcat-0.2.2.tar.gz", "has_sig": false, "md5_digest": "4b9f963874ef05a45dd1fd318ab42dad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4873, "upload_time": "2017-02-13T14:07:23", "url": "https://files.pythonhosted.org/packages/91/3b/0861f1fb47629c192b8061d9cb3b982ce223417390ccbc09eef2fb4cbae6/sadcat-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "05a18baf7efa1454a577c62db3e56c00", "sha256": "48b8ac19bfb8bd6c90c05ba0dd96786a20aa3271b01685d4d6133832b08ca498" }, "downloads": -1, "filename": "sadcat-0.2.3.tar.gz", "has_sig": false, "md5_digest": "05a18baf7efa1454a577c62db3e56c00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4834, "upload_time": "2017-02-13T14:08:12", "url": "https://files.pythonhosted.org/packages/4f/f3/a656ed57951651828c33754a8d47407caadfcb0a60b4ab3e4c8b3cffbd9f/sadcat-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "0f4b5ef2bee0e61947cab32a5202b963", "sha256": "a29f9d2468a0f7d3afb0ecf4c9134b7ed9bab41423eb30f6e23c7f695d6e5fe7" }, "downloads": -1, "filename": "sadcat-0.2.4.tar.gz", "has_sig": false, "md5_digest": "0f4b5ef2bee0e61947cab32a5202b963", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5314, "upload_time": "2017-02-13T14:09:12", "url": "https://files.pythonhosted.org/packages/5a/e1/48ba890c4b53faf6c9c1b84db237eb06c09f9218390da2721a23d968ad49/sadcat-0.2.4.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b97f6f5dd78776a2408184e7f09d8146", "sha256": "a2481fb1212bc6c635be3281ca9a577be60126808d24adf65b1f7aaaa01a075d" }, "downloads": -1, "filename": "sadcat-0.4.0.tar.gz", "has_sig": false, "md5_digest": "b97f6f5dd78776a2408184e7f09d8146", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5358, "upload_time": "2017-10-10T11:27:14", "url": "https://files.pythonhosted.org/packages/44/17/a7163ff58cc17f5945111f02c937cffa66b5c4e918d0042e58e473e4794b/sadcat-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "a7ff333f7035f3ba4f8678dacfa7df1e", "sha256": "fcfcaf1cbab09d57168ae666f891ed63cc37a1406a611994154ab0a73e7322a6" }, "downloads": -1, "filename": "sadcat-0.4.1.tar.gz", "has_sig": false, "md5_digest": "a7ff333f7035f3ba4f8678dacfa7df1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5367, "upload_time": "2017-02-16T14:15:52", "url": "https://files.pythonhosted.org/packages/85/fb/543cc239d545d8f594da4a2563211dc8cc4332a84f28d8991a39fa5fdfad/sadcat-0.4.1.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "2f043a18682cd1d02fdd43658058271c", "sha256": "d2cde81b5ba85ed6aba8a507b572b4ab3cef4b770606c6db7cc545ea552054e9" }, "downloads": -1, "filename": "sadcat-0.4.7.tar.gz", "has_sig": false, "md5_digest": "2f043a18682cd1d02fdd43658058271c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5367, "upload_time": "2017-02-16T15:05:03", "url": "https://files.pythonhosted.org/packages/94/9b/cf18b3f89f9f1984f1f5c2c82e7158970525e2311b46e2dd97616d6434be/sadcat-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "e3b8eef636b25435bf9366c140bc5039", "sha256": "4a93694ed71177d82f545343169109f2ae71fa8b69504b6e8438c2cc868ea606" }, "downloads": -1, "filename": "sadcat-0.4.8.tar.gz", "has_sig": false, "md5_digest": "e3b8eef636b25435bf9366c140bc5039", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5397, "upload_time": "2017-02-20T06:35:22", "url": "https://files.pythonhosted.org/packages/c9/6b/5e66ef6709a2a7079ec0f86d80ca34d567cd4605b626f6c60d1ca42dc25f/sadcat-0.4.8.tar.gz" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "1606a011d44b2b9285b1e69182665329", "sha256": "fa106f61d83a223658be1ece70980375766a0c033071016d613815d4cc7a1b2d" }, "downloads": -1, "filename": "sadcat-0.4.9.tar.gz", "has_sig": false, "md5_digest": "1606a011d44b2b9285b1e69182665329", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5410, "upload_time": "2017-10-10T11:27:18", "url": "https://files.pythonhosted.org/packages/c0/59/4dc94389cf9c8c2c3320f678ffde61375755806addbe611db7c45aef817c/sadcat-0.4.9.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "9910f5e71aeb78222f36bfac25d214e0", "sha256": "b7d40c991cad25719d05eeaf3690bb9bbad8b22a9b9ced0916d72fdb8acf4527" }, "downloads": -1, "filename": "sadcat-2.0.0.tar.gz", "has_sig": false, "md5_digest": "9910f5e71aeb78222f36bfac25d214e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5418, "upload_time": "2019-10-10T07:32:39", "url": "https://files.pythonhosted.org/packages/25/2d/1201c95e7a75259cb920064298cb3ee3c24ae198652ec2b424ed13023bbf/sadcat-2.0.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "71d771b4c8b716c412eb8462b2c0eeaa", "sha256": "e24e5432921dd7d26c9835c3f7a48f5755e11a43d8202824987db679281c8ab6" }, "downloads": -1, "filename": "sadcat-3.0.0.tar.gz", "has_sig": false, "md5_digest": "71d771b4c8b716c412eb8462b2c0eeaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5426, "upload_time": "2019-10-10T07:32:41", "url": "https://files.pythonhosted.org/packages/4c/49/e489cc226934c006aa8467b2597d1c553f366176706d32917fd82c17d2a0/sadcat-3.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "71d771b4c8b716c412eb8462b2c0eeaa", "sha256": "e24e5432921dd7d26c9835c3f7a48f5755e11a43d8202824987db679281c8ab6" }, "downloads": -1, "filename": "sadcat-3.0.0.tar.gz", "has_sig": false, "md5_digest": "71d771b4c8b716c412eb8462b2c0eeaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5426, "upload_time": "2019-10-10T07:32:41", "url": "https://files.pythonhosted.org/packages/4c/49/e489cc226934c006aa8467b2597d1c553f366176706d32917fd82c17d2a0/sadcat-3.0.0.tar.gz" } ] }