
IT产业链中的开源概念已成为大多数公司的共识. 随着开源技术的不断进步和创新,云计算已逐渐渗透到每个互联网企业中. 但是,随之而来的是管理成本的增加. 需要管理和维护大量的物理或虚拟主机. 如何更好地实现自动化运维已经成为企业亟待解决的问题. 行业中有许多自动化操作和维护软件. Puppet,Saltstack,Ansible等使我们能够在云时代轻松管理和维护设备和业务. 但是,尽管像Ansible这样的自动化工具已经构建了很多模块,但是它们可以解决所有问题. 当满足企业的个人需求时,还需要自动化脚本. 本书将重点介绍Linux系统中最常用的Shell脚本语言,并说明如何通过Shell编写自动化和智能脚本. 本书贯穿案例,可以为每个知识点找到相应的案例. 完成本书中的每个案例对于企业将来的实际应用都具有重要意义. 此外,本书中有很多游戏案例,通过编写游戏脚本可以极大地提高学习乐趣.
可以下载本书中的代码. 当前的商业环境是竞争环境. 许多企业的业务量在不断增长,对服务质量的要求也越来越高. 特别是,为了满足客户的更高要求并改善用户体验,IT部门需要维护的设备数量已从早期的几台增加到目前的几万台. 如此大量的服务器维护通常会使IT管理人员感到头疼. 本书介绍的自动化操作和维护内容使我们能够快速掌握进行批处理的简单方法.
本书涵盖了高级应用程序,例如从基础知识进行数据分析和数据过滤. 它适合Linux操作和维护人员以及Shell编程爱好者阅读. 对于Linux操作和维护人员,它可以作为一本很好的参考书.
高级Linux专家努力工作,拒绝定义,精心设计,专注于实践,摆脱固化的命令和语法积累,通过生动有趣的案例研究Shell编程shell脚本编程指南,可以快速应用大量案例脚本进行生产实践
★本书的作者是具有十多年行业经验的一线Linux专家讲师. 丁先生总结了多年的教学和实践经验,这是关键.
★作者的畅销书《 Linux的操作和维护》在业界得到了广泛的好评. 它的内容易于理解和实用,并且使人们受益匪浅. 这本书遵循同一行.
★本书重点介绍Linux系统中最常用的Shell脚本语言,并说明如何通过Shell编写自动化和智能脚本. 每个知识点都有对应的情况,脚本可以快速应用于生产.
★本书涵盖了高级应用程序,例如根据基本知识进行数据分析和数据过滤. 本书介绍的自动运维的内容可以使读者快速掌握批处理服务器运维的简单方法.
丁明义
Dane Group云计算教学研发总监和开源技术推动者;
红帽认证架构师(RHCA),红帽认证高级讲师(RHCI);
曾在中国电信和彭博士等多家IT公司工作,并创立了许多在IT行业拥有超过十年经验的公司;
精通Linux系统,Shell脚本编程,主要的云计算产品,Docker容器技术,分布式存储技术,在虚拟化技术的使用方有丰富的经验,对企业集群存储环境和高性能,高可用性体系结构研究,畅销书《 Linux的操作和维护》的作者.
写这本书的原因
云计算时代的到来给企业带来了新的机遇和挑战. 利用云计算,可以按需购买所有资源,并解决了预订火车票之类的问题. 但是,云计算也给我们带来了一个新的问题,那就是如何更好地实现自动化运维,智能运维!我们可以通过Shell,Python和Perl等脚本语言编写自动化脚本来实现此目标. 尽管Python在某些大型自动化项目中已经具有丰富的经验,但作为Linux自动化操作和维护的主流编程语言,Shell脚本仍然是不可替代的. 仍然需要用Shell编写大量自动化操作和维护脚本. 目前,市场上大多数常见的Shell脚本书仍停留在解释语法格式和知识点的水平上. 许多读者阅读类似于Shell脚本的书,发现语法格式已经学习,但是在实际编写脚本时不可用. 开始吧编写本书的出发点是以简单直观的方式显示语法格式,并通过大量深入的应用案例,帮助读者和朋友练习书写脚本的能力,并培养思考的能力. 并解决问题.
Shell是一种非常易于使用且功能强大的编程语言. 许多Linux系统维护人员在工作中经常使用Shell脚本,但是并不是每个人都擅长编写Shell脚本. 一旦掌握了编写具有技能的Shell脚本的规则,以后的工作将变得更加轻松和高效!自1991年以来,Linux已迅速成长为企业服务器产品的首选操作系统. 越来越多的IT公司采用Linux作为其服务器端平台操作系统,以向客户提供高性能和高可用性的业务服务. 在选择操作系统发行版时,本书综合了每个发行版的特性,最后选择了CentOS作为本书的基本系统平台. CentOS是许多Linux发行版之一,但是由于它是从RedHat框架派生的,并且该版本是完全开源的,包括开放软件YUM源码,它可以为用户带来更方便的升级方法. 此外,许多国内公司对CentOS发行版也非常热心,这也增加了本书的实用性.
书本结构
这本书分为7章.
第1章主要介绍编写Shell脚本的基本格式以及执行脚本的各种方式. 如何通过脚本处理变量shell脚本编程指南,使用常规过滤数据以及在脚本中执行算术运算
主要内容包括:
脚本的编写格式以及执行脚本的各种方式.
数据输入和输出,如何正确使用变量.
数据过滤和正则表达式.
算术运算.
第二章主要讨论如何使脚本更加智能,通过判断语句分析和判断各种业务的可能情况,以及根据判断结果进行相应的处理. 本章将展示如何在大量案例中编写更强大,更智能的自动化脚本.
主要内容包括:
如何在脚本中执行各种测试和判断.
if和case语句的基本语法格式.
模式匹配,通配符和扩展通配符.
撰写行业项目案例.
第3章主要说明如何使用循环来避免人为地执行大量重复性任务. 大型且重复性的机械任务更适合机器完成. 当人们找到解决问题的想法和方法时,机器可以根据人类的想法和方法更有效地处理数据,并最终获得我们需要的结果.
主要内容包括:
for和while循环的基本语法格式.
解决猴子吃香蕉的问题.
不错的循环嵌套.

猜随机数的游戏.
直到和选择的基本语法格式.
循环的中断和退出.
机器选择的两色球.
第4章重点介绍数组,子外壳程序和函数. 解释数组在实际业务中的应用案例,分析子Shell对脚本的影响,解释功能性编程思想,并使用Shell脚本分析当前的主流排序算法.
主要内容包括:
斐波纳契数列.
网站日志分析脚本.
几种启动过程的方法.
函数和变量的范围.
多进程脚本.
文件描述符和命名管道.
排序算法.
第5章主要说明一些在日常工作中编写脚本的技巧和方法. 使用Shell的许,我们可以使编写功能良好的脚本变得更加容易. 本章还通过案例介绍了Shell脚本故障排除的方法和技术.
主要内容包括:
Shell的扩展功能.
Shell解释器属性和初始化命令行终端.
捕获信号.
脚本调试技巧.
xargs和shift.
撰写行业项目案例.
第6章主要说明sed文本编辑器. 在sed的帮助下,脚本可以实现文件的非交互式编辑. 在云计算的运维中,我们经常需要修改或查看配置文件. 本章演示如何通过脚本非交互地修改各种服务的配置文件. 通过sed,我们还可以在海量数据中过滤所需的数据,并且可以编写Web搜寻器脚本.
主要内容包括:
使用的语法格式.
自动配置FTP,DHCP,SSH和其他网络服务.
自动克隆和修改KVM虚拟机.
Web爬网程序.
抽屉.
第7章主要说明awk编程语言. 我们可以使用awk在脚本中实现更灵活的数据过滤功能. 我们可以使用awk进行数据统计,也可以使用awk编写网络搜寻器脚本.
主要内容包括:
awk基本语法格式.
监控主机的网络连接状态.
性能监控脚本.
监视脚本.
Web爬网程序.

排版说明
关于本书的排版,对于读者需要输入的命令,本书将以粗体等比例显示. 对于计算机命令的返回结果,该书将以比例和斜体显示. 当需要在文件中编写脚本以打开和修改文本文件中的内容时,书会将文件的内容放在框中以进行排版和书写;对于需要读者注意的地方,本书将给出清晰的提示提示.
图书阅读器
这本书可以用作学习Shell编程的指南,主要面向具有Linux相关经验的从业人员. 这本书可以指导我们编写工作中所需的自动化操作和维护脚本. 此外,本书还可以作为计算机培训的参考资料.
关于配置文件和代码
本书的主要配置文件和代码可以从GitHub上下载: jacobproject / shell_scripts.
更正
在编写本书的过程中,作者花费了大量时间来审查和验证内容. 但是,由于时间紧迫,精力有限,书中不可避免地存在一些错误和遗漏. 欢迎专家和读者批评和纠正.
关于本书,如果您有任何意见或建议,可以发送电子邮件至ydh0011@163.com或使用博客平台与我交流.
谢谢
因为这本书是我业余时间写的,所以要花很多与我家人在一起的快乐时光. 我要感谢家人的支持和鼓励,我的儿子(zimo)和女儿(紫色)给家庭带来了无限的快乐. 感谢所有同事对这项任务的全力合作和支持. 感谢我的学生对这本书的期望,他们的无形支持促使我写了这本书. 感谢我生命中所有帮助我的朋友. 正是他们的支持使我得以不断改进和创新. 无论在工作还是生活中,好朋友都是我成功的坚实后盾. 感谢电子工业出版社的编辑Dongying对本书的大力支持. 感谢赵瑞杰对本书的修订建议.
丁明义•北京
第1章从这里开始,然后起飞1
1.1脚本文件1的写入格式
1.2执行脚本文件的各种方式3
1.3如何在脚本文件6中实现数据输入和输出
1.4输入和输出17的重定向
1.5正确使用各种引号24
1.6万花筒变量28
1.7数据过滤和正则表达式33
1.8各种算术运算40
第2章人工智能,一个非常人为和智能的脚本46
2.1智能脚本46的基本测试
2.2字符串的判断和比较47
2.3整数49的判断和比较
2.4文件属性的判断和比较51
2.5探索[[]]和[] 55之间的区别
2.6实战案例: 系统性能监视脚本60
2.7实际战斗案例: 如果陈述62,则为单个分支
2.8实际战斗情况: 如果语句68为双分支
2.9实际战斗情况: 如何监视HTTP服务状态72
2.10实际战斗情况: if语句81多分支
2.11实战案例: 简单高效的案例陈述87
2.12实战案例: 编写Nginx启动脚本92
2.13秘密模式匹配和通配符,扩展通配符94

2.14Shell石头剪刀布小游戏100
第3章循环和中断控制104根本不能停止
3.1 for循环语句104的乐趣
3.2实际战斗情况: 猴子吃香蕉的问题114
3.3实际战斗情况: 进化HTTP状态监视脚本116
3.4神奇的循环嵌套117
3.5非常重要的IFS124
3.6实际战斗情况: while循环130
3.7Shell游戏猜测随机数134
3.8实际战斗情况: 如何通过读取命令136读取文件中的数据
3.9直到并选择循环140
3.10中断和退出控制143
3.11Shell迷你游戏机选择两色球149
第4章,请开始执行性能,数组,Subshell和功能152
4.1强大的阵列152
4.2实际战斗案例: 斐波那契序列157
4.3实际案例: 网站日志分析脚本159
4.4经常出错的SubShell164
4.5启动过程172的几种方法
4.6非常实用的功能176
4.7变量的范围和返回值179
4.8实际战斗情况: 多进程ping脚本185
4.9控制进程数的核心技术-文件描述符和命名管道187
4.10实战案例: 一键式源代码部署LNMP脚本197
4.11递归函数204
4.12排序算法中的气泡排序206
4.13快速排序算法209
4.14排序算法插入排序213
4.15排序算法计数排序215
4.16壳牌游戏单词马赛克拼图218
第5章221出现了一大批脚本编写技能
5.1 221支架,用于Shell的八个扩展功能
5.2Shell的八个扩展功能代字号223
5.3Shell的八个扩展的变量替换功能224
5.4 Shell的八个主要扩展功能的命令替换234

5.5 Shelll的八种扩展功能234的算术替换
5.6Shell用八个扩展功能替换了236个进程
5.7Shell的八种切字扩展功能238
5.8Shell替换了八个主要扩展功能239的路径
5.9实际战斗情况: 生成随机密码240的几种方法
5.10 Shell解释器属性和初始化命令行终端247
5.11捕获陷阱信号257
5.12实战案例: 电子时钟259
5.13Shell游戏抓住小老鼠,并算作您的胜利263
5.14实战案例: 脚本故障排除技能267
5.15实战案例: 进度条功能270的Shell版本
5.16让我们谈谈用于参数传递的xargs276
5.17使用shift键移动位置参数280
5.18实际战斗案例: Nginx日志切割脚本281
第6章古代魔法武器sed285
6.1sed基本说明285
6.2sed高级指令305
6.3实际战斗情况: 自动配置vsftpd脚本318
6.4实际战斗情况: DHCP脚本325的自动配置
6.5实际战斗情况: KVM虚拟机脚本329的自动克隆
6.6实际战斗情况: 通过libguestfs管理KVM虚拟机脚本337
6.7实际案例: SSH安全策略脚本343的自动配置
6.8实际案例: 基于GRUB配置文件345修改内核启动参数脚本
6.9实际战斗情况: 网络搜寻器脚本348
6.10Shell迷你游戏滚动抽奖354
第7章令人难以置信的编程语言awk356
7.1awk基本语法356
7.2awk条件判断374
7.3awk数组和循环379
7.4awk函数388
7.5实战案例: awk版本的网站日志分析398
7.6实际战斗情况: 监视网络连接状态403
7.7实际战斗案例: 获取SSH暴力攻击黑名单412
7.8实际战斗案例: 性能监视脚本418
7.9实际战斗情况: 监视脚本420
7.10实际战斗案例: Web搜寻器429的awk版本
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-193064-1.html
支持你