优化#!/bin/bash interface=$1 mac_address=$2 # 验证输入参数 if [ -z "$interface" ] || [ -z "$mac_address" ]; then echo "请输入要修改的网络接口名称和要设置的MAC地址作为参数。" echo "示例: ./change_mac.sh eth0 00:11:22:33:44:55" exit 1 fi # 验证MAC地址格式 if [[ ! $mac_address =~ ^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$ ]]; then echo "无效的MAC地址格式。请使用正确的MAC地址格式,如:00:11:22:33:44:55" exit 1 fi # 设置新的MAC地址 ip link set dev $interface down ip link set dev $interface address $mac_address ip link set dev $interface up echo "MAC地址已成功修改为: $mac_address"
时间: 2023-11-22 08:54:02 浏览: 29
这段脚本看起来已经很不错了,不过还有一些可以改进的地方:
1. 建议在脚本开头加上 shebang,即 `#!/bin/bash`,这可以确保脚本在 Bash 环境下执行。
2. 在验证输入参数时,可以使用更简洁的语法,如:
```bash
[[ $# -ne 2 ]] && { echo "请输入要修改的网络接口名称和要设置的MAC地址作为参数。"; exit 1; }
```
这行代码可以判断脚本是否接收到了2个参数,如果参数个数不对,就输出错误提示并退出脚本。
3. 可以使用函数来封装 MAC 地址格式的验证,这可以让脚本更易读、易维护。如:
```bash
function is_valid_mac_address {
local mac_address=$1
[[ $mac_address =~ ^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$ ]]
}
if ! is_valid_mac_address "$mac_address"; then
echo "无效的MAC地址格式。请使用正确的MAC地址格式,如:00:11:22:33:44:55"
exit 1
fi
```
4. 在设置新的 MAC 地址时,建议先检查网络接口是否存在,避免脚本在不存在的网络接口上操作。如:
```bash
if ! ip link show "$interface" >/dev/null 2>&1; then
echo "网络接口 $interface 不存在。"
exit 1
fi
ip link set dev $interface down
ip link set dev $interface address $mac_address
ip link set dev $interface up
```
这段代码使用 `ip link show` 命令来检查网络接口是否存在,如果不存在就输出错误提示并退出脚本。