跳过 iNode网络验证安全检查自动断连问题

iNode安全检查

公司内部的使用的inode进行的网络验证,但是mac经常安全检查不通过,然后过了几分钟就断连了。很头大。

发现

我偶然发现如果连接网络成功之后,直接杀掉Inode进程,不影响网络。
那么就很简单了,直接写一个脚本,来运行inode,并自动清理掉进程。然后定时运行脚本,检测网络是否联通,异常重新执行脚本即可。

实践

这里兼容了sonoma系统 14.4以上系统无法使用airport命令了

#!/bin/bash

RED='\033[0;31m'   # 红色
GREEN='\033[0;35m' # 绿色
NC='\033[0m'       # 无颜色,用于重置颜色设置

# 定义一些变量来使脚本更容易维护和修改
expected_ssid="wifi的ssid名称"
service_path="/Applications/iNodeClient"
authen_service_name="AuthenMngService"
inode_monitor_name="iNodeMon"
airport_cmd="/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport"

# 以root权限检查
if [ "$(id -u)" != "0" ]; then
  echo -e "${RED}This script must be run as root.${NC}"
  exit 1
fi

# 检查网络连通性函数
network_check() {
  local target="www.baidu.com"

  if /sbin/ping -c 4 -W 5 "${target}" | grep '100.0% packet loss' >/dev/null 2>&1; then
    echo -e "${RED}inode: Network is down or unstable.${NC}"
    return 1 # 返回非零值来表示失败
  else
    echo -e "${GREEN}inode: Network is all ready.${NC}"
    return 0 # 返回0来表示成功
  fi
}

# 重新连接网络服务函数
reconnect() {
  echo -e "${GREEN}inode: 1.关闭并删除相关进程${NC}"
  # 关闭并删除相关进程
  pkill -f "${authen_service_name}" && sleep 1
  pkill -f "${inode_monitor_name}" && sleep 1
  echo -e "${GREEN}inode: 2.启动服务${authen_service_name}${NC}"
  # 启动服务
  "${service_path}/${authen_service_name}" &>/dev/null &
  # 等待AuthenMngService启动
  until pgrep -f "${authen_service_name}" >/dev/null; do
    sleep 1
  done
  echo -e "${GREEN}inode: 3.启动服务${inode_monitor_name}${NC}"
  # 启动iNodeMon
  "${service_path}/${inode_monitor_name}" &>/dev/null &
  echo -e "${GREEN}inode: 程序启动已完成.${NC}"
}

get_ssid_by_airport() {
  local ssid=$(${airport_cmd} -I | awk '/ SSID: / {print substr($0, index($0, $2))}')
  echo -n "${ssid}"
}

get_ssid_by_wbutil() {
  local ssid=$(wdutil info | grep ' SSID' | awk '/SSID/{print $3}')
  echo -n "${ssid}"
}

get_ssid() {
  # 获取系统产品版本号
  product_version=$(sw_vers -productVersion)

  # 定义目标版本为14.4
  target_major_version=14
  target_minor_version=4

  # 拆分版本号为数组
  IFS='.' read -ra version_parts <<<"$product_version"
  major_version=${version_parts[0]}
  minor_version=${version_parts[1]}

  # 判断版本号是否大于等于14.4
  if [ "$major_version" -gt "$target_major_version" ] || { [ "$major_version" -eq "$target_major_version" ] && [ "$minor_version" -ge "$target_minor_version" ]; }; then
    echo $(get_ssid_by_wbutil)
  else
    echo $(get_ssid_by_airport)
  fi
}

# 获取当前SSID
current_ssid=$(get_ssid)
current_ssid=$(echo -n "${current_ssid}" | tr -d '[:space:]')

echo -e "${GREEN}inode: 开始检查网络.${NC}"
echo -e "${GREEN}inode: 当前连接的wifi: ${current_ssid}.${NC}"
 if [ "${current_ssid}" = "${expected_ssid}" ]; then
   if network_check; then
     echo -e "${GREEN}inode: 网络一切正常${NC}"
   else
     echo -e "${RED}inode: 网络重连.${NC}"
    reconnect
   fi
 else
   echo "没有连接到指定wifi: ${expected_ssid}. 当前为: ${current_ssid}"
 fi

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值