if [ -f /etc/resolv.conf ];then sudo chattr -i /etc/resolv.conf sudo sed -i '/domain huawei.com/d' /etc/resolv.conf sudo sed -i '/search huawei.com/d' /etc/resolv.conf sudo sed -i '/10.129.0.84/d' /etc/resolv.conf sudo sed -i '/10.129.0.148/d' /etc/resolv.conf sudo sed -i '/10.144.90.20/d' /etc/resolv.conf sudo sed -i '/10.98.48.39/d' /etc/resolv.conf else sudo touch /etc/resolv.conf sudo chattr -i /etc/resolv.conf fi
时间: 2025-05-16 22:49:36 浏览: 22
这是一个用于管理 Linux 系统 `/etc/resolv.conf` 文件的脚本片段,主要用于检查、修改或创建该文件。以下是详细解析:
---
### 脚本功能分析
1. **判断文件是否存在**
```bash
if [ -f /etc/resolv.conf ]; then
```
这行代码会检测系统中是否已经存在 `/etc/resolv.conf` 文件。如果存在,则进入 `then` 分支;若不存在,则跳转至 `else` 分支。
2. **移除文件的只读属性**
```bash
sudo chattr -i /etc/resolv.conf
```
如果文件存在,首先需要解除其不可变属性 (`immutable`),以便对其进行编辑操作。`chattr -i` 表示关闭文件的不可变标志位。
3. **删除指定内容**
下面几行使用了 `sed` 工具逐条匹配并删除特定配置项:
```bash
sudo sed -i '/domain huawei.com/d' /etc/resolv.conf
sudo sed -i '/search huawei.com/d' /etc/resolv.conf
sudo sed -i '/10.129.0.84/d' /etc/resolv.conf
sudo sed -i '/10.129.0.148/d' /etc/resolv.conf
sudo sed -i '/10.144.90.20/d' /etc/resolv.conf
sudo sed -i '/10.98.48.39/d' /etc/resolv.conf
```
具体作用是通过正则表达式找到包含某些关键字(如 `domain huawei.com`, `search huawei.com` 或者特定 DNS 地址)的行,并将其从文件中删除。
4. **当文件不存在时的操作**
若未发现 `/etc/resolv.conf` 文件,则执行以下动作:
```bash
sudo touch /etc/resolv.conf
sudo chattr -i /etc/resolv.conf
```
首先用 `touch` 创建一个新文件,然后再次设置文件为不可变状态。
---
### 总结
此脚本的核心任务是对 `/etc/resolv.conf` 文件进行维护,包括清理旧有的 DNS 设置以及确保文件的存在性和安全性(防止未经授权的更改)。通常这种场景出现在需要标准化网络配置的企业环境内。
---
阅读全文
相关推荐


















