第1章 自动化管理基础 1
1.1是否需要自动化管理 1
1.1.1采用多种系统的大型公司 2
1.1.2成长中的中型公司 2
1.1.3Internet服务提供商 2
1.1.4应用服务提供商 2
1.1.5Web服务器群 2
1.1.6Beowulf簇 3
1.1.7网络设备 3
1.2阅读本书的收获 3
1.3系统管理员的任务 4
1.4提供用户界面 4
1.5选用正确的方法 5
1.5.2推和拉 6
1.5.1均衡系统 6
1.6处理用户和管理员的关系 7
第2章 使用SSH安全地进行自动化系统管理 10
2.1SSH基础 10
2.2使用SSH增强安全性 11
2.3使用RSA认证 12
2.3.1生成密钥对 12
2.3.2指定授权的密钥 13
2.4使用ssh-agent 14
2.4.1ssh-agent的基本用法 14
2.4.2ssh-agent的高级用法 15
2.4.3密钥转发 16
2.5限制RSA认证 17
2.5.1处理未获信任的主机 18
2.5.2允许执行权限受限的命令 18
2.5.3端口转发 18
2.6.1准备建立公共账户 19
2.6对公共账户使用SSH 19
2.6.2监控公共账户 23
第3章 创建登录脚本和shell脚本 25
3.1定制命令提示符 25
3.1.1让提示符提供更多信息 25
3.1.2使用有色的提示符 26
3.2使用Tab补齐功能 29
3.2.1配置Tab补齐功能 30
3.2.2可编程的Tab补齐功能 30
3.2.3使用定制的补齐函数 30
3.3创建命令别名 31
3.3.1使用别名提高效率 32
3.3.2提高别名的一致性 32
3.4创建影响多个系统的命令 35
3.4.1简单的Multi-SSH 35
3.4.2基于组的Multi-SSH 36
3.5分发登录脚本 38
3.5.1跟踪不同版本 39
3.5.2分发登录脚本 39
第4章 安装之前:网络准备和管理 42
4.1确定使用静态IP还是动态IP 42
4.2创建和使用模块化shell脚本 43
4.3使用锁定功能来防止冲突 43
4.4基本的预安装脚本 44
4.5预安装组件脚本 47
4.5.1请求MAC地址 48
4.5.2分配IP 49
4.5.3对系统分类 50
4.5.4收集联系人信息 52
4.5.5添加到/etc/hosts文件中 52
4.5.6配置DHCP服务器 53
4.5.7更新DNS配置 54
4.6如何处理错误 56
4.7移除机器 57
4.7.1移除MAC地址 58
4.7.2回收IP 59
4.7.3撤消系统 59
4.7.4删除联系人条目 60
4.7.5修改主机文件 60
4.7.6配置DHCP 61
4.7.7更新DNS配置 62
4.8生成报告 63
4.8.1有多少台机器 63
4.8.2可用的IP地址有多少 64
4.8.3正在使用哪些MAC地址 64
第5章 自动安装和定制安装 65
5.1自动化安装 65
5.2.1是否应该定制操作系统 66
5.2定制操作系统 66
5.2.2维护定制发行软件 67
5.3准备进行自动化管理 67
5.3.1远程配置新系统 68
5.3.2自我配置的新系统 73
第6章 自动化系统配置 76
6.1配置内容 76
6.1.1定制文件 76
6.1.2动态文件 77
6.1.3默认文件 77
6.1.4静态文件 77
6.1.5文件系统组件 77
6.2遵循的配置原则 78
6.3创建定制配置方法 78
6.3.1定义文件和目录结构 79
6.3.3提供配置脚本 82
6.3.2定义配置逻辑 82
6.3.4分析示例配置文件的创建 88
6.4使用GNUcfengine配置系统 90
6.4.1cfengine概述 90
6.4.2基本安装 94
6.4.3调试cfengine 99
6.4.4在cfagent.conf中创建代码段 100
6.4.5使用cfrun 105
第7章 在系统间共享数据 107
7.1数据类型 107
7.1.1共享应用程序 108
7.1.2用户数据 108
7.1.3应用程序数据 109
7.1.4系统信息 109
7.2使用网络文件系统 110
7.2.1使用NFS共享数据 110
7.1.5账号信息 110
7.2.2使用Samba共享文件 112
7.2.3使用Andrew文件系统(AFS) 113
7.2.4其他可用的网络文件系统 113
7.3自动挂载网络文件系统 114
7.3.1Solaris的自动挂载程序 115
7.3.2Linux上的自动挂载程序(autofs) 116
7.3.3am-utils的自动挂载程序 116
7.4使用NIS/NIS+共享系统数据 118
7.4.1创建NIS映射和NIS+表 119
7.4.2/etc/nsswitch.conf文件 120
7.4.3netgroup文件 121
7.4.4NIS细节 121
7.4.5使用NIS的安全性问题 122
7.4.6NIS+细述 122
7.5使用轻量级目录访问协议(LDAP) 123
7.6Kerberos的安全性 123
7.7.1分发文件 124
7.7使用cfengine共享数据 124
7.7.2管理NFS的挂载 125
7.8用rsync同步数据 129
7.8.1rsync的潜在用途 130
7.8.2决定使用哪一种rsync传输协议 131
7.8.3rsync基本应用 131
7.8.4rsync应用实例 133
7.9用CVS管理和分发数据 135
7.9.1CVS基础 135
7.9.2系统管理脚本的分发 141
7.9.3Web内容分发 144
7.10用HTTP/FTP传输数据 145
7.10.1实例:Web内容同步 146
7.10.2简单实例:传输系统配置文件 146
7.10.3进阶实例:传输系统配置文件 147
7.11RPM 154
第8章 程序包和补丁 155
8.1补丁和程序包 155
8.2如何选择 156
8.3如何开始 157
8.4利用补丁更新系统 158
8.4.1理解和应用Solaris补丁 158
8.4.2定制补丁 164
8.5理解和安装程序包 176
8.5.1RedHat程序包管理器(RPM) 177
8.5.2Debian程序包 187
8.5.3Slackware程序包 193
8.6利用AutoRPM实现程序包的自动安装 197
8.6.1基本的AutoRPM设置 198
8.6.2在交互模式中工作 199
8.6.4配置文件示例 200
8.6.3理解FTP池文件 200
8.6.5AutoRPM触发器 207
8.7利用OpenPKG执行跨平台打包操作 208
8.7.1安装OpenPKG 209
8.7.2利用OpenPKG安装程序包 210
8.7.3修改程序包 211
第9章 系统维护和更改 213
9.1同步时间 214
9.1.1设置时区 214
9.1.2同步时钟 214
9.1.3更新硬件时钟 215
9.2管理账户 215
9.2.1设计账户管理脚本 216
9.2.2安排账户管理配置文件 217
9.2.3账户管理辅助函数 218
9.2.4账户管理主脚本 220
9.2.5账户管理数据组件 222
9.2.6修改组件 227
9.2.7清除已删除用户 233
9.3维护日志文件 235
9.3.1RedHat的logrotate 235
9.3.2利用spinlogs轮循日志 237
9.3.3利用cfengine进行日志轮循 238
9.4删除文件 238
9.4.1定制驱动器清理 239
9.4.2RedHat的tmpwatch 240
9.4.3利用cfengine删除文件 241
第10章 系统监控 243
10.1常规系统监控 243
10.1.1创建常规报告工具 244
10.1.2监控系统负载 246
10.1.3监视可用的磁盘空间 247
10.1.4监控系统服务 248
10.1.5监视程序包的变化 250
10.1.6驱动器故障 251
10.2监控系统日志 253
10.2.1利用Logwatch进行日志监控 253
10.2.2利用swatch进行实时日志监控 259
10.3监控网络服务 260
10.3.1自定义监控和自动修复 261
10.3.2NetSaint(又名Nagios) 263
10.3.3Mon 272
第11章 提高系统的安全性 276
11.1利用GNUcfengine提高系统安全性 276
11.1.1执行基本的文件检查 277
11.1.2disable段 277
11.1.3files段 278
11.1.4控制网络服务 280
11.2配置系统级的防火墙 282
11.2.2防火墙配置脚本 283
11.2.1防火墙配置文件 283
11.2.3系统组 285
11.3利用Tripwire监视文件 286
11.3.1安装Tripwire 287
11.3.2生成Tripwire策略文件 287
11.3.3使用Tripwire 291
第12章 数据的备份与恢复 294
12.1确定备份策略 294
12.2使用cfengine备份数据 296
12.2.1使用cfengine执行本地备份 296
12.2.2在备份时排除文件 297
12.3使用rsync备份数据 297
12.3.1使用rsync进行基本的备份 298
12.3.2增量备份 298
12.3.3排除文件 299
12.4.1使用rdiff-backup进行增量备份 300
12.4使用rdiff-backup备份数据 300
12.4.2删除旧的备份数据 301
12.4.3恢复数据 303
12.4.4在使用rdiff-backup备份时排除文件 303
12.5使用tar进行磁带备份 304
12.5.1使用tar进行基本的备份 305
12.5.2使用tar创建增量备份 305
12.5.3磁带的备份 306
12.5.4使用tar进行备份时排除文件 307
12.5.5从tar包中恢复数据 307
12.6Amanda备份工具 308
第13章 用户界面 309
13.1使用Webmin实现基于Web的管理 309
13.2创建底层工作脚本 310
13.3以root用户身份执行命令 313
13.4.1保存设置的通用文件格式 316
13.4设计并使用通用的数据文件 316
13.4.2定义界面的规范 318
13.5基于文本的界面 320
13.5.1菜单界面 321
13.5.2配置基于文本的界面 322
13.6创建基于Web的界面 326
13.6.1组织Web界面 327
13.6.2Mason简介 327
13.6.3HTTP认证的安全性 332
13.6.4记录Web服务器的操作 334
13.6.5创建并使用定制的Perl库 335
13.6.6基于Web的系统总体状态信息 337
13.6.7系统配置的Web界面 340
13.6.8在Web上执行shell命令 342
附录A 基本工具介绍 351
附录B RedHatLinux的定制和自动安装 367
附录C 构建RedHat程序包管理器(RPM)的程序包 379