本文目录导读:

Bash脚本 - Linux系统
简单挂载检测
#!/bin/bash
# 检测CIFS共享是否可挂载
CIFS_SERVER="//192.168.1.100"
CIFS_SHARE="/share_name"
MOUNT_POINT="/mnt/cifs_test"
# 创建临时挂载点
mkdir -p $MOUNT_POINT
# 尝试挂载
mount -t cifs $CIFS_SERVER$CIFS_SHARE $MOUNT_POINT -o username=user,password=pass 2>/dev/null
if [ $? -eq 0 ]; then
echo "CIFS共享正常:可以挂载"
umount $MOUNT_POINT
exit 0
else
echo "CIFS共享异常:无法挂载"
rmdir $MOUNT_POINT
exit 1
fi
使用smbclient检测
#!/bin/bash
# 使用smbclient检测共享可用性
SERVER="192.168.1.100"
SHARE="share_name"
USER="domain\\user"
PASS="password"
# 测试连接
smbclient "//$SERVER/$SHARE" -U "$USER%$PASS" -c "ls" 2>/dev/null | head -n 5
if [ $? -eq 0 ]; then
echo "✓ CIFS共享 $SERVER/$SHARE 正常"
else
echo "✗ CIFS共享 $SERVER/$SHARE 异常"
fi
Python脚本
#!/usr/bin/env python3
import subprocess
import sys
import os
def check_cifs_share(server, share, mount_point="/tmp/cifs_check"):
"""检测CIFS共享可用性"""
# 尝试挂载
if not os.path.exists(mount_point):
os.makedirs(mount_point)
cmd = f"mount -t cifs //{server}/{share} {mount_point} -o username=guest"
try:
result = subprocess.run(cmd.split(), capture_output=True, timeout=10)
if result.returncode == 0:
# 测试读写权限
test_file = f"{mount_point}/test_write_{os.getpid()}.tmp"
try:
with open(test_file, 'w') as f:
f.write("test")
os.remove(test_file)
print(f"✓ CIFS共享 {server}/{share} 正常 (可读写)")
except:
print(f"✓ CIFS共享 {server}/{share} 正常 (只读)")
# 卸载
subprocess.run(f"umount {mount_point}".split())
return True
else:
print(f"✗ CIFS共享 {server}/{share} 异常: {result.stderr.decode()}")
return False
except subprocess.TimeoutExpired:
print(f"✗ CIFS共享 {server}/{share} 连接超时")
return False
except Exception as e:
print(f"✗ 检测失败: {e}")
return False
finally:
if os.path.exists(mount_point):
os.rmdir(mount_point)
# 使用示例
if __name__ == "__main__":
check_cifs_share("192.168.1.100", "share_name")
Windows PowerShell脚本
# 检测Windows下的SMB共享
$Server = "192.168.1.100"
$Share = "share_name"
# 方法1: 测试网络路径
$path = "\\$Server\$Share"
if (Test-Path $path) {
Write-Host "✓ CIFS共享 $path 正常访问" -ForegroundColor Green
# 测试读写
$testFile = "$path\test_$(Get-Random).tmp"
try {
"test" | Out-File -FilePath $testFile -ErrorAction Stop
Remove-Item $testFile -Force
Write-Host "✓ 共享可读写" -ForegroundColor Green
}
catch {
Write-Host "✓ 共享只读" -ForegroundColor Yellow
}
}
else {
Write-Host "✗ CIFS共享 $path 无法访问" -ForegroundColor Red
}
# 方法2: 使用net use命令
$result = net use "Z:" "\\$Server\$Share" /user:domain\user password 2>&1
if ($LASTEXITCODE -eq 0) {
Write-Host "✓ 挂载成功" -ForegroundColor Green
net use Z: /delete
}
综合监测脚本(带邮件告警)
#!/usr/bin/env python3
"""
完整的CIFS共享监控脚本
依赖: python3, smbclient, mount.cifs
"""
import subprocess
import smtplib
from email.mime.text import MIMEText
import datetime
import socket
def check_cifs(server, share, username="guest", password=""):
"""完整检测CIFS共享状态"""
results = {
'server': server,
'share': share,
'timestamp': datetime.datetime.now(),
'ping_ok': False,
'smb_connect': False,
'mount_ok': False,
'readwrite': False
}
# 1. Ping测试
ping_result = subprocess.run(
['ping', '-c', '1', '-W', '3', server],
capture_output=True
)
results['ping_ok'] = ping_result.returncode == 0
if not results['ping_ok']:
return results
# 2. SMB端口测试
try:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(3)
result = sock.connect_ex((server, 445))
results['smb_connect'] = result == 0
sock.close()
except:
pass
# 3. smbclient测试
cmd = f"smbclient //{server}/{share} -N -c 'ls'"
smb_result = subprocess.run(cmd.split(), capture_output=True, timeout=10)
results['smb_connect'] = smb_result.returncode == 0
# 4. 挂载测试
mount_point = "/tmp/cifs_monitor"
subprocess.run(['mkdir', '-p', mount_point])
mount_cmd = f"mount -t cifs //{server}/{share} {mount_point}"
if username != "guest":
mount_cmd += f" -o username={username}"
if password:
mount_cmd += f",password={password}"
mount_result = subprocess.run(mount_cmd.split(), capture_output=True, timeout=15)
results['mount_ok'] = mount_result.returncode == 0
# 5. 读写测试
if results['mount_ok']:
test_file = f"{mount_point}/test_{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}.tmp"
try:
with open(test_file, 'w') as f:
f.write("test")
os.remove(test_file)
results['readwrite'] = True
except:
pass
# 清理
if results['mount_ok']:
subprocess.run(['umount', mount_point])
subprocess.run(['rmdir', mount_point])
return results
def send_alert(results):
"""发送告警邮件"""
msg = f"""
CIFS共享异常告警
服务器: {results['server']}
共享: {results['share']}
时间: {results['timestamp']}
检测结果:
- Ping: {'正常' if results['ping_ok'] else '失败'}
- SMB连接: {'正常' if results['smb_connect'] else '失败'}
- 挂载: {'正常' if results['mount_ok'] else '失败'}
- 读写: {'正常' if results['readwrite'] else '失败'}
"""
# 配置邮件发送
# ... 邮件配置代码
# 主程序
if __name__ == "__main__":
import os
config = {
'server': '192.168.1.100',
'share': 'share_name',
'username': 'user',
'password': 'pass'
}
result = check_cifs(**config)
# 检查是否正常
if not all([result['ping_ok'], result['smb_connect'], result['mount_ok']]):
print(f"[ALERT] CIFS共享异常: {result['server']}/{result['share']}")
# send_alert(result)
else:
print(f"[OK] CIFS共享正常: {result['server']}/{result['share']}")
使用Docker进行检测
#!/bin/bash
# Docker容器化检测
docker run --rm \
-v /mnt/cifs_check:/mnt/cifs:shared \
alpine:latest \
sh -c "
apk add cifs-utils
mount -t cifs //192.168.1.100/share /mnt/cifs -o username=guest
if [ \$? -eq 0 ]; then
echo 'CIFS共享正常'
umount /mnt/cifs
else
echo 'CIFS共享异常'
fi
"
推荐使用
- 日常监控:使用Bash + smbclient组合
- 企业环境:使用Python综合检测脚本,配合Zabbix/Nagios
- Windows环境:使用PowerShell脚本
注意事项:
- 需要安装cifs-utils(smbclient)包
- 敏感信息(密码)建议使用配置文件或环境变量
- 生产环境建议使用非root用户执行
- 考虑网络延迟,设置适当的超时时间
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播