当前位置: 首页 > news >正文

uos中创建自定义Ip (192.168.137.1)的热点的方法

默认系统自带的方法中没有定义192.168.137.1的方法,得自己写个脚本

start_wifi.sh

#!/bin/bash
set -euo pipefail# ==== 可改参数 ====
HOTSPOT_NAME="MyHotspot"       # 连接配置名(任意,用来管理)
HOTSPOT_SSID="UOS_Hotspot"     # Wi-Fi 名称
HOTSPOT_PASS="88888888"        # 至少8位
IP_ADDR_CIDR="192.168.137.1/24"
# 若你确定网卡名,直接写:WIFI_IFACE="wlp2s0"
WIFI_IFACE="${WIFI_IFACE:-}"# ==== 要 root 权限 ====
#if [[ $EUID -ne 0 ]]; then
#  echo "[*] 需要 root 权限,正在使用 sudo..."
#  exec sudo WIFI_IFACE="${WIFI_IFACE}" IP_ADDR_CIDR="${IP_ADDR_CIDR}" \
#       HOTSPOT_NAME="${HOTSPOT_NAME}" HOTSPOT_SSID="${HOTSPOT_SSID}" HOTSPOT_PASS="${HOTSPOT_PASS}" \
#       bash "$0" "$@"
#fi# ==== 要 root 权限(非交互)=====
if [[ $EUID -ne 0 ]]; thenSELF="$(readlink -f "$0")"# -n 禁止交互(如果 sudoers 配置正确,会立即成功;否则会直接返回错误)exec sudo -n HOTSPOT_NAME="$HOTSPOT_NAME" HOTSPOT_SSID="$HOTSPOT_SSID" \HOTSPOT_PASS="$HOTSPOT_PASS" IP_ADDR_CIDR="$IP_ADDR_CIDR" \WIFI_IFACE="$WIFI_IFACE" bash "$SELF" "$@"
fiecho "[*] 检查 NetworkManager..."
command -v nmcli >/dev/null || { echo "未找到 nmcli(NetworkManager),请先安装/启用"; exit 1; }
systemctl is-active --quiet NetworkManager || { echo "NetworkManager 未运行:sudo systemctl start NetworkManager"; exit 1; }# ==== 识别无线网卡 ====
if [[ -z "${WIFI_IFACE}" ]]; thenWIFI_IFACE="$(nmcli -t -f DEVICE,TYPE,STATE device status | awk -F: '$2=="wifi" && $3!="unavailable"{print $1; exit}')"
fi
if [[ -z "${WIFI_IFACE}" ]]; thenecho "未检测到可用的 Wi-Fi 网卡。用: nmcli device status  查看;或者重新运行时指定 WIFI_IFACE,例如:"echo "sudo WIFI_IFACE=wlp2s0 $0"exit 1
fi
echo "[*] 使用无线网卡:${WIFI_IFACE}"# ==== 删除同名旧连接(忽略错误)====
nmcli -t -f NAME connection show | grep -Fx "${HOTSPOT_NAME}" >/dev/null 2>&1 && \nmcli connection delete "${HOTSPOT_NAME}" || true# ==== 创建热点 ====
echo "[*] 创建热点连接…"
nmcli connection add type wifi ifname "${WIFI_IFACE}" con-name "${HOTSPOT_NAME}" autoconnect yes ssid "${HOTSPOT_SSID}"echo "[*] 配置为 AP + WPA2…"
nmcli connection modify "${HOTSPOT_NAME}" \802-11-wireless.mode ap \802-11-wireless.band bg \wifi-sec.key-mgmt wpa-psk \wifi-sec.psk "${HOTSPOT_PASS}" \ipv4.method sharedecho "[*] 固定网关 IP 为 ${IP_ADDR_CIDR}…"
nmcli connection modify "${HOTSPOT_NAME}" ipv4.addresses "${IP_ADDR_CIDR}" ipv4.method shared# 有的驱动需要先把接口置 up
ip link set "${WIFI_IFACE}" up || trueecho "[*] 启动热点…"
nmcli connection up "${HOTSPOT_NAME}"GW_IP="${IP_ADDR_CIDR%/*}"
echo "[+] 热点已启动:"
echo "    SSID: ${HOTSPOT_SSID}"
echo "    密码: ${HOTSPOT_PASS}"
echo "    网关: ${GW_IP}"
echo "    网卡: ${WIFI_IFACE}"

stop_wifi.sh

#!/bin/bash
set -euo pipefailHOTSPOT_NAME="MyHotspot"   # 要和 start_hotspot.sh 里保持一致# ==== 要 root 权限(非交互)=====
if [[ $EUID -ne 0 ]]; thenSELF="$(readlink -f "$0")"exec sudo -n HOTSPOT_NAME="$HOTSPOT_NAME" bash "$SELF" "$@"
fiecho "[*] 正在关闭热点:${HOTSPOT_NAME}..."# 先尝试关闭连接(忽略报错)
nmcli connection down "${HOTSPOT_NAME}" 2>/dev/null || true# 删除连接配置(忽略报错)
nmcli connection delete "${HOTSPOT_NAME}" 2>/dev/null || trueecho "[+] 热点已停止并删除配置"

但是每次要输入管理员密码,不爽,

 sudo visudo -f /etc/sudoers.d/wifi-scripts

加入如下内容

User ALL=(root) NOPASSWD: /home/User/LINUX/start_wifi.sh, /home/User/LINUX/stop_wifi.sh, /home/User/LINUX/start_hotspot.sh

之后调用时用 

sudo ./start_wifi.sh

就不用输入密码了

http://www.dtcms.com/a/390108.html

相关文章:

  • 【每日算法】搜索插入位置 LeetCode
  • vue+springboot+ngnix前后端分离项目部署
  • sward入门到实战(1) - 安装教程
  • 独立站的优势有哪些
  • Java学习历程18——哈希表的使用
  • 机械传动里的名词——传动比
  • qiankun 主子应用部署教程(Nginx 小白版)
  • 开启视觉奇旅:走进《计算机图形学》的世界
  • 光伏组件IV曲线测试仪的功能
  • MySQL MHA
  • 【试题】信息安全管理员考试题库
  • 硬件(十四)SPI通信协议
  • 大模型学习:使用FastText工具进行文本分类
  • pip 指令大全
  • 计算机基础·MySQL
  • 22-29、深度学习知识手册:从全连接到生成模型的融会贯通指南
  • 【FastCAEFlow案例分享】软件在汽车场景中的应用
  • Python二进制数据读取与可变缓冲区操作详解:从基础到高阶应用
  • 面向对象编程(OOP):Java 的核心思想(详细笔记)
  • I2C 通信、AT24C02 EEPROM及LM75温度传感器的配置
  • Halcon中的并行编程(二)
  • Gin框架参数绑定完全指南:从基础到实战最佳实践
  • TF 坐标旋转的方向如何确定
  • C++基础(16)——用红黑树封装出map和set
  • 前端编程工具有哪些?常用前端编程工具推荐、前端编程工具对比与最佳实践分享
  • 换网络这事, Comcast 销户了
  • Day26_【深度学习(6)—神经网络NN(1.2)前向传播的搭建案例】
  • 河南省 ERA5 气象数据处理教程(2020–2025 每月均值)
  • IIS短文件漏洞修复全攻略
  • jdk-7u25-linux-x64.tar.gz 安装教程(Linux下JDK 7 64位解压配置详细步骤附安装包)