{"id":15042396,"url":"https://github.com/dingguodong/linuxbashshellscriptforops","last_synced_at":"2025-04-04T14:09:10.859Z","repository":{"id":7974392,"uuid":"57015255","full_name":"DingGuodong/LinuxBashShellScriptForOps","owner":"DingGuodong","description":"Linux Bash Shell Script and Python Script For Ops and Devops","archived":false,"fork":false,"pushed_at":"2023-07-17T01:43:10.000Z","size":2355,"stargazers_count":454,"open_issues_count":32,"forks_count":315,"subscribers_count":43,"default_branch":"master","last_synced_at":"2025-04-04T14:09:04.122Z","etag":null,"topics":["automation","bash-script","devops","linux","ops","python-script","repository-python","repository-shell","sre"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DingGuodong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-04-25T05:55:28.000Z","updated_at":"2025-03-15T04:50:18.000Z","dependencies_parsed_at":"2023-01-11T20:10:39.818Z","dependency_job_id":"908d0474-a5c2-48b0-a166-b0ea777afe6b","html_url":"https://github.com/DingGuodong/LinuxBashShellScriptForOps","commit_stats":{"total_commits":921,"total_committers":3,"mean_commits":307.0,"dds":"0.016286644951140072","last_synced_commit":"277a79fa641f5b427d0a990b89559e339c648c46"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DingGuodong%2FLinuxBashShellScriptForOps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DingGuodong%2FLinuxBashShellScriptForOps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DingGuodong%2FLinuxBashShellScriptForOps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DingGuodong%2FLinuxBashShellScriptForOps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DingGuodong","download_url":"https://codeload.github.com/DingGuodong/LinuxBashShellScriptForOps/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247190254,"owners_count":20898702,"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","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","bash-script","devops","linux","ops","python-script","repository-python","repository-shell","sre"],"created_at":"2024-09-24T20:47:13.988Z","updated_at":"2025-04-04T14:09:10.831Z","avatar_url":"https://github.com/DingGuodong.png","language":"Python","readme":"LinuxBashShellScriptForOps\n================\nLinux Bash Shell Scripts For Ops, some python scripts here also.\n\n## 这是一个怎样的项目\n此项目是对在Linux运维工作所能用到的Shell脚本和Python脚本的归纳和总结。\n大部分源码均出自生产系统并经过比较严谨的测试，少部分脚本是用于学习或者测试目的。\n\n遵循**实用**并尽可能的pythonic的原则。\n\n## 为什么有Python的加入\n不得不说Python是优秀的编程、脚本语言，用在运维上确实很方便，因为丰富的模块和生态的强大，只需少量时间就可以编写出有用的脚本。\n\nPython不仅是一门高级的跨平台编程语言，而且能轻松实现很多Bash无法实现的功能。\n\n作为运维人员不必排斥编程，编程是为了更好的运维。\n\n## 这个项目里有什么\n此项目包含了常用的Shell脚本和Python脚本，主要拆分成两部分：functions和projects。\n\nfunctions目录存放常用的、基本的脚本语句，用于编写一个完成某项具体事务的脚本。\n\nprojects目录存放比较完整的脚本文件，用于做成某件完整的事情。\n\n一些有用的笔记会存放在note.md文件中，也会穿插在代码注释中。\n\n## 关于本项目使用的开发环境和运维环境\n本项目通常使用Microsoft Windows 10 中文简体系统进行代码编写，\n因此经常会在Python2.x的脚本中发现部分用gbk编解码，特别是用于Windows系统的Python脚本\n\n主要运维环境是CentOS6.x、7.x，Ubuntu16、18 LTS，以及少量的Debian（多用于Docker容器场景）\n\n\u003e因此requirements.txt文件的内容仅用于参考，不作为环境要求\n\n推荐使用JetBrains的PyCharm作为Bash Script和Python的开发工具，并安装配套的Git等工具。\n\n## 如何使用该项目\n使用Git工具克隆到本地。\n\n```shell script\ngit clone https://github.com/DingGuodong/LinuxBashShellScriptForOps.git\n```\n\n此项目目前有2个分支用于区分Python2.x和Python3.x，master分支为Python2.x的代码，python3分支为Python3.x的代码。\n\n- [Python2.x 版本](https://github.com/DingGuodong/LinuxBashShellScriptForOps/tree/master)\n\n- [Python3.x 版本](https://github.com/DingGuodong/LinuxBashShellScriptForOps/tree/python3)\n\n在日后的使用过程中不断更新完善和优化。\n\n如果是要使用functions，则需要自己翻阅functions下的所有目录以及各个文件，\n或者使用“Find in Path”或者“search in this repository”功能按照关键字搜索。\n\n如果是要使用projects，则可以根据项目的名字查看自己感兴趣或者需要的部分，\n或者使用“Find in Path”或者“search in this repository”功能按照关键字搜索。\n\n## 此项目是如何进行和维护的\n此项目的所有内容均来自日常的运维工作，因此全部与运维相关，遇到用脚本解决的问题就会写进此项目。\n\n这个项目会持续完善，积累更多有用的Shell、Python编程和运维的相关知识和文件。\n\n此项目完全开源，允许自由复制和使用代码。\n\n欢迎fork和递交pull request。\n\n## 提交bugs和feature requests以及联系信息\n可以使用 https://github.com/DingGuodong/LinuxBashShellScriptForOps/issues 页面进行issue提交。\n\n也可以通过issue列出你想通过脚本实现的功能（help wanted，question，feature）、改进建议（enhancement，idea）等。（**推荐）\n\n早些时间，我在51CTO博客中写了大量的关于运维类的原创文章和总结，部分有用的经验也会持续收入本项目。\n\nblog: http://dgd2010.blog.51cto.com\n\nEmail: uberurey_ups#163.com\n\n也可加入QQ群与其他人一起交流：\n\n1. QQ群名称：[Bash/Awk/Sed CU论坛]() / 群号码：370897942\n\n2. QQ群名称：[运维架构技术交流](https://jq.qq.com/?_wv=1027\u0026k=52fjL0z) / 群号码：991904631\n\n\u003e加入群时请填写有效申请信息，并遵守合理的规则\n\n*欢迎提供其他QQ群，供交流参考，经营性或商业目的除外*\n\n## 编程风格与编程规范 - Programing Style Guides\n\n每个人都可以有自己的编程风格，但使用良好的编程规范可以帮助我们规范代码，也符合大多数人的阅读和使用习惯。\n\n通常一些知名的大厂和团队都会有自己的编程规范，感谢分享！\n\nNO1.从现有的产品或线上中学习，如参考系统中的脚本是如何写的，其他著名项目中的代码是怎样的。\n\n1.[Shell风格指南](https://zh-google-styleguide.readthedocs.io/en/latest/google-shell-styleguide/contents/) - 中文\n\n2.[Python 风格指南](https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/contents/) - 中文\n\n3.[Style guides for Google-originated open-source projects](https://github.com/google/styleguide)\n\n4.[PEP 8](https://www.python.org/dev/peps/pep-0008/)\n\n5.[Python best practices guidebook, written for humans.](https://docs.python-guide.org)\n\n6.[Code Review Guidelines](https://docs.gitlab.com/ee/development/code_review.html#everyone)\n\n7.[Unix philosophy](https://en.wikipedia.org/wiki/Unix_philosophy)\n\n当然还有更多优秀的指南或参考，不一一例举。\n\n**最后，记住，规则有时就是用来打破的，做自己当然也是被允许的。**\n\n## 我应该学习其他语言吗？\n\n是的，你应该这样做。每一门语言都有自己所擅长的地方和值得称赞的地方。很多人喜欢比较不同的语言，并宣称他所使用的语言多么多么的牛逼，我认为不应该进入这样的误区。比较是允许的，但多分的挑毛病或者贬低不是一个好的行为。能在一定的应用领域找到用武之地已经足够了，不应该要求一门语言能做所有的事情。也因为如此，你应该学习和了解其他的语言，看到别人的长处。\n\n\u003e **如果我们认识的人刚开始学习编程，并且他们选了一种我们不喜欢的语言，我们应该支持他们的选择。** 他们比我们更知道什么适合自己，适合我们的语言不一定适合他们。如果他们对自己最初的选择感到了沮丧，甚至已经对学习编程变得没有动力，此时再给他们推荐别的编程语言。 -- 《[27 languages to improve your Python](https://www.curiousefficiency.org/posts/2015/10/languages-to-improve-your-python.html)》\n\n需要注意的是，如果一门语言你不去经常使用它，那你可能很快就会忘记它了。如果你能在工作和学习中能自由的切换多种不同的语言，知道在什么样的场景下该使用哪一门语言，那么祝贺你，你是了不起的也是幸运的。\n\n你在其他语言中学到的知识，会在另一门语言中得到良好的应用。很多语言具有相似的特性和相通的思想，当然也包括那些日积月累的良好的编程习惯、风格以及工具。\n\n另外，一门语言只要有人在使用 ，它就会发展越来越好用越来越强大，所以热爱你该热爱的，用它的长处做好想要做的事情。\n## 什么语言适合运维人员学习？\n\nshell脚本是务必要掌握的，其次我推荐学习的是Python，因为shell脚本+Python能胜任绝大部分场景，几乎 100% 覆盖。因为简单、通用而且十分流行，所以用它。\n\n\u003e PHP（非常）适合做Web，尽管它也能做脚本，但它并非适合所有的情况，比如多线程、执行交互式命令等。所以不是不可以，建议根据应用场景做合理的选择。\n\n## TODO List\n\n1. 应该把文档的编写和完善作为一项长期任务，维护好，并保持可用\n\n2. 整理和归纳代码体现的思想和方法，甚至可以让它们脱离代码，独立存在\n\n3. ...\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdingguodong%2Flinuxbashshellscriptforops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdingguodong%2Flinuxbashshellscriptforops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdingguodong%2Flinuxbashshellscriptforops/lists"}