自动化Bash脚本:doUpdates.sh的开发与优化
立即解锁
发布时间: 2025-09-13 00:43:13 阅读量: 10 订阅数: 21 AIGC 

### 自动化Bash脚本:doUpdates.sh的开发与优化
#### 1. 程序放置与脚本转换
- **程序放置**:只有root用户需要访问此程序,因此将其放置在`/root/bin`目录中。这样即使其他文件系统未挂载,该程序也始终可用,并且非root用户无法访问。`/root/bin`默认不存在,但它是root用户路径的一部分。
- **转换为脚本**:当需要更新大量计算机时,手动输入命令会很繁琐。因此,我们创建一个简单的脚本`doUpdates.sh`来完成这些步骤。
- **操作步骤**:
1. 以root用户身份确保当前工作目录是root用户的主目录。
2. 创建`/root/bin`目录:`mkdir /root/bin`
3. 在`/root/bin`目录中创建`doUpdates.sh`文件并使其可执行:
```bash
[root@studentvm1 ~]# cd ~/bin ; touch doUpdates.sh ; chmod 770 doUpdates.sh ; ll
total 8
-rwxrwx--- 1 root root 0 Apr 10 16:15 doUpdates.sh
```
4. 使用Vim编辑`doUpdates.sh`文件并添加相应代码。
#### 2. 脚本初步优化
- **注释重启命令**:为避免每次运行程序都重启,我们注释了重启命令,这既节省时间,又提醒我们后续需要处理确定是否需要重启的代码。
- **添加Shebang**:在脚本的第一行添加`#!/bin/bash`,确保程序始终在Bash shell中运行。
#### 3. 添加逻辑
- **定义变量与逻辑**:定义`$Check`和`$doReboot`变量,并在`dnf`和重启命令周围添加逻辑。初始设置为只进行检查而不执行实际更新,且不进行重启。同时添加注释和提示信息,方便测试和验证逻辑。
- **测试与错误修复**:添加新代码后,测试程序并修复可能遇到的错误。
#### 4. 限制为root用户
- **添加检查代码**:在变量初始化之后、程序主体之前添加代码,检查尝试运行程序的用户的UID。只有root用户(UID为0)可以继续执行,其他用户将收到错误信息并退出。
- **测试验证**:
- 以root用户身份测试程序,确保其正常工作。
- 将程序复制到`/tmp`目录,尝试以普通用户身份运行,首先会得到权限错误。
- 以root用户身份将`/tmp`目录中的程序权限设置为777,再次以普通用户身份运行,会收到“必须以root用户身份运行此程序”的错误信息。
#### 5. 添加命令行选项
- **新增变量**:添加`$NeedsReboot`和`$UpdatesAvailable`变量,用于更好地控制程序。`$doReboot`变量在用户输入`-r`选项时设置为true,`$NeedsReboot`变量在内核或glibc需要更新时设置为true,只有当这两个变量都为true时,系统才会重启。
- **处理命令行选项**:使用`getops`命令获取命令行选项,并结合`while`和`case`结构根据选项设置变量或执行其他任务。当前添加的`-c`和`-r`选项用于设置变量,输入无效选项时程序将退出。
- **测试选项**:
- 测试无效选项`-x`,程序应输出错误信息并退出。
- 测试`-r`选项,当前使用该选项会在检查更新和更新手册页后重启虚拟机。
###
0
0
复制全文
相关推荐





