脚本能自动断开网络共享吗?

wen 实用脚本 3

本文目录导读:

脚本能自动断开网络共享吗?

  1. Windows 系统:断开“Internet 连接共享”(ICS)
  2. Windows 系统:断开“文件或打印机共享”
  3. macOS 系统:断开文件共享或屏幕共享
  4. Linux 系统:断开 Samba 共享或 NFS
  5. 高级用法:定时自动断开
  6. 重要提示

是的,脚本完全可以自动断开网络共享。

具体实现方式取决于你使用的操作系统(Windows、macOS 或 Linux)以及你所说的“网络共享”是指什么(Windows 的“Internet 连接共享”、文件共享、打印机共享,还是网络驱动器映射)。

以下是不同场景下脚本断开连接的方案:

Windows 系统:断开“Internet 连接共享”(ICS)

如果你在 Windows 上开启了“移动热点”或“网络共享”,可以通过 PowerShell 脚本关闭。

脚本示例(禁用热点/ICS):

# 方法1:禁用移动热点(Windows 10/11)
Set-VMNetworkAdapter -ManagementOS -Name "Wi-Fi" -ComputerName . -Verbose
# 方法2:通过注册表或 netsh 禁用 ICS
# 停止共享服务(需要管理员权限)
Stop-Service -Name "SharedAccess" -Force
Set-Service -Name "SharedAccess" -StartupType Disabled
# 或通过 netsh 命令(推荐)
netsh wlan set hostednetwork mode=disallow

注意: 需要以管理员身份运行该脚本。

Windows 系统:断开“文件或打印机共享”

你可以通过 net share 命令或 PowerShell 删除所有共享文件夹。

批处理脚本示例:

@echo off
REM 删除所有匿名共享(需要管理员权限)
net share C$ /delete /y
net share ADMIN$ /delete /y
REM 删除你手动创建的共享文件夹(SharedFolder)
net share MySharedFolder /delete /y
REM 或者直接禁用“Microsoft 网络的文件和打印机共享”
netsh advfirewall firewall set rule group="文件和打印机共享" new enable=No

PowerShell 脚本示例:

# 删除所有非默认共享
Get-SmbShare | Where-Object { $_.Special -eq $false } | Remove-SmbShare -Force
# 禁用 SMB 服务(彻底断开)
Stop-Service -Name "Server" -Force
Set-Service -Name "Server" -StartupType Disabled

macOS 系统:断开文件共享或屏幕共享

使用 launchctl 或系统偏好设置的命令行工具。

脚本示例:

#!/bin/bash
# 停止 Apple 文件共享
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
# 停止屏幕共享
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
# 停止互联网共享(NAT)
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plist

Linux 系统:断开 Samba 共享或 NFS

Samba(文件和打印机共享)脚本:

#!/bin/bash
# 停止并禁用 Samba 服务
sudo systemctl stop smbd
sudo systemctl disable smbd
# 或直接关闭所有共享目录
sudo smbcontrol all close-share

NFS 共享脚本:

#!/bin/bash
# 停止 NFS 服务
sudo systemctl stop nfs-kernel-server
sudo systemctl disable nfs-kernel-server
# 卸载所有导出
sudo exportfs -ua

高级用法:定时自动断开

你可以通过操作系统自带的计划任务(如 Windows 任务计划程序、Linux crontab 或 macOS launchd)来触发脚本。

Windows 示例(每小时执行一次):

schtasks /create /tn "DisableNetworkShare" /tr "powershell.exe -File C:\scripts\disable_share.ps1" /sc hourly /ru SYSTEM

Linux 示例(每天凌晨 2 点断开):

0 2 * * * /usr/local/bin/disable_shares.sh

重要提示

  1. 权限问题: 修改网络共享设置(特别是系统级共享、防火墙规则)通常需要 管理员(root)权限
  2. 持久性: 如果只想临时断开(下次重启自动恢复),建议仅停止服务而不是禁用服务;如果需要长期关闭,建议使用 disable 命令。
  3. 安全考虑: 脚本执行后,请确保脚本文件本身被妥善保护(如设置只读权限),防止被恶意修改。

如果你能告诉我具体是哪种共享(Windows 的移动热点、文件共享,还是 Linux 的 Samba),以及你希望脚本在什么条件下执行(手动触发、定时、或检测到某种事件后自动触发),我可以提供更精准的代码示例。

抱歉,评论功能暂时关闭!