Skip to content

Commit a2d55a0

Browse files
committed
优化临时修改系统 MAC 地址的功能,增加了接口禁用和重新启用的步骤,以确保在修改过程中网络连接的稳定性。添加了详细的日志记录和错误处理,确保用户能够清晰了解 MAC 地址修改的状态和可能的失败原因。此更改旨在提升用户体验和功能的可靠性。
1 parent d48d9fa commit a2d55a0

File tree

1 file changed

+54
-13
lines changed

1 file changed

+54
-13
lines changed

scripts/run/cursor_mac_id_modifier.sh

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -183,21 +183,63 @@ change_system_mac_address() {
183183
local random_mac=$(printf '02:%02x:%02x:%02x:%02x:%02x' $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)))
184184
log_info "生成新的随机 MAC 地址: $random_mac"
185185

186-
log_info "执行命令: sudo ifconfig $primary_interface ether $random_mac"
187-
if sudo ifconfig "$primary_interface" ether "$random_mac"; then
188-
log_info "成功将接口 '$primary_interface' 的 MAC 地址临时修改为: $random_mac"
189-
local new_mac_check=$(ifconfig "$primary_interface" | awk '/ether/{print $2}')
190-
log_info "验证新 MAC 地址: $new_mac_check"
191-
if [ "$new_mac_check" != "$random_mac" ]; then
192-
log_warn "验证失败,MAC 地址似乎未成功设置。"
186+
local mac_change_success=false
187+
188+
# 临时禁用接口
189+
log_info "临时禁用接口 '$primary_interface' 以修改 MAC 地址 (网络会短暂中断)..."
190+
if ! sudo ifconfig "$primary_interface" down; then
191+
log_error "禁用接口 '$primary_interface' 失败,跳过 MAC 地址修改。"
192+
echo -e "${RED}禁用网络接口失败。请检查日志: $LOG_FILE ${NC}"
193+
# 即使禁用失败,仍然尝试启用接口
194+
else
195+
log_info "接口 '$primary_interface' 已禁用,等待1秒..."
196+
sleep 1 # 添加短暂延迟确保接口状态改变
197+
198+
# 尝试修改 MAC 地址
199+
log_info "尝试执行命令: sudo ifconfig $primary_interface ether $random_mac"
200+
if sudo ifconfig "$primary_interface" ether "$random_mac"; then
201+
log_info "尝试修改接口 '$primary_interface' 的 MAC 地址为: $random_mac [成功]"
202+
local new_mac_check=$(ifconfig "$primary_interface" | awk '/ether/{print $2}')
203+
log_info "验证新 MAC 地址 (接口禁用状态下): $new_mac_check"
204+
if [ "$new_mac_check" != "$random_mac" ]; then
205+
log_warn "验证失败,MAC 地址似乎未成功设置 (接口禁用状态下)。"
206+
else
207+
mac_change_success=true
208+
fi
209+
else
210+
log_error "尝试修改接口 '$primary_interface' 的 MAC 地址失败。"
211+
log_error "请检查接口名称是否正确,或尝试手动执行: sudo ifconfig $primary_interface down && sudo ifconfig $primary_interface ether <新MAC地址> && sudo ifconfig $primary_interface up"
212+
echo -e "${RED}修改 MAC 地址失败。请检查日志: $LOG_FILE ${NC}"
213+
fi
214+
fi
215+
216+
# 重新启用接口
217+
log_info "重新启用接口 '$primary_interface'..."
218+
if ! sudo ifconfig "$primary_interface" up; then
219+
log_error "重新启用接口 '$primary_interface' 失败。"
220+
echo -e "${RED}重新启用网络接口失败。请检查日志: $LOG_FILE ${NC}"
221+
# 即使启用失败,也报告 MAC 修改尝试的结果
222+
if $mac_change_success; then
223+
echo -e "${YELLOW}MAC 地址已修改,但重新启用接口失败。请手动检查网络连接。${NC}"
193224
fi
194-
echo -e "${GREEN}已临时修改接口 '$primary_interface' 的 MAC 地址。重启后恢复。${NC}"
195225
else
196-
log_error "修改接口 '$primary_interface' 的 MAC 地址失败。"
197-
log_error "请检查接口名称是否正确,或尝试手动执行: sudo ifconfig $primary_interface ether <新MAC地址>"
198-
echo -e "${RED}修改 MAC 地址失败。请检查日志: $LOG_FILE ${NC}"
199-
# 即使失败也继续执行脚本的其他部分
226+
log_info "接口 '$primary_interface' 已重新启用。等待网络恢复..."
227+
sleep 2 # 等待网络恢复
228+
# Optional: Add a network connectivity check here
229+
if $mac_change_success; then
230+
local final_mac_check=$(ifconfig "$primary_interface" | awk '/ether/{print $2}')
231+
log_info "最终验证新 MAC 地址 (接口启用状态下): $final_mac_check"
232+
if [ "$final_mac_check" == "$random_mac" ]; then
233+
echo -e "${GREEN}已成功临时修改接口 '$primary_interface' 的 MAC 地址。重启后恢复。${NC}"
234+
else
235+
log_warn "最终验证失败,MAC 地址可能未生效或已被重置。"
236+
echo -e "${YELLOW}MAC 地址修改尝试完成,但最终验证失败。请检查接口状态和日志。${NC}"
237+
fi
238+
else
239+
echo -e "${RED}MAC 地址修改尝试失败。请检查日志: $LOG_FILE ${NC}"
240+
fi
200241
fi
242+
201243
echo
202244
}
203245

@@ -494,7 +536,6 @@ modify_cursor_app_files() {
494536
log_info "成功修改文件: ${file/$temp_dir\//}"
495537
else
496538
log_error "修改 x-cursor-checksum 设置代码失败"
497-
echo "[ERROR] 替换 x-cursor-checksum 设置代码失败" >> "$LOG_FILE"
498539
cp "${file}.bak" "$file"
499540
fi
500541
else

0 commit comments

Comments
 (0)