分类 运维 下的文章

ffmpeg批量转换脚本

批量转换video/*.mp4中的所有视频到对应视频目录中,脚本与video目录同级。

linux脚本

#!/bin/bash

# 设置视频目录(默认为当前目录下的 video 文件夹)
VIDEO_DIR="./video"

# 检查 video 目录是否存在
if [ ! -d "$VIDEO_DIR" ]; then
    echo "错误:目录 '$VIDEO_DIR' 不存在!"
    exit 1
fi

# 检查 ffmpeg 是否可用
if ! command -v ffmpeg &> /dev/null; then
    echo "错误:未找到 ffmpeg,请确保已安装并加入 PATH。"
    exit 1
fi

echo "使用命令:ffmpeg"

# 遍历 video 目录下所有 .mp4 文件
for file in "$VIDEO_DIR"/*.mp4; do
    # 如果没有匹配到任何文件,则退出(避免处理字面量 "*.mp4")
    if [ ! -f "$file" ]; then
        echo "没有找到任何 .mp4 文件。"
        break
    fi

    # 提取文件名(不含扩展名)
    filename=$(basename "$file" .mp4)

    # 目标输出目录:video/文件名/
    output_dir="$VIDEO_DIR/$filename"

    # 如果目标目录已存在,则跳过该文件(避免重复转换)
    if [ -d "$output_dir" ]; then
        echo "跳过:$filename(目标目录已存在)"
        echo "------------------------"
        continue
    fi

    # 创建目标目录
    mkdir -p "$output_dir"

    echo "正在处理:$file -> $output_dir/index.m3u8"

    # 执行 ffmpeg 转换
    ffmpeg -i "$file" \
           -c:v libx264 \
           -c:a copy \
           -hls_time 2 \
           -hls_list_size 0 \
           "$output_dir/index.m3u8"

    # 检查转换是否成功
    if [ $? -eq 0 ]; then
        echo "转换成功:$filename"
    else
        echo "转换失败:$filename"
        # 可选:若转换失败,可删除空目录或保留以便排查
    fi
    echo "------------------------"
done

echo "批量转换完成。"

windows脚本

@echo off
setlocal enabledelayedexpansion

set "VIDEO_DIR=video"

if not exist "%VIDEO_DIR%" (
    echo ERROR: Directory '%VIDEO_DIR%' does not exist!
    pause
    exit /b 1
)

where ffmpeg >nul 2>nul
if errorlevel 1 (
    echo ERROR: ffmpeg not found in PATH.
    pause
    exit /b 1
)

echo Using ffmpeg...
echo.

:: Count how many .mp4 files exist
set "count=0"
for %%f in ("%VIDEO_DIR%\*.mp4") do set /a count+=1
if %count% equ 0 (
    echo No .mp4 files found in '%VIDEO_DIR%'.
    pause
    exit /b 0
)

echo Found %count% .mp4 file(s). Starting conversion...
echo.

for %%f in ("%VIDEO_DIR%\*.mp4") do (
    set "outdir=%VIDEO_DIR%\%%~nf"
    echo Processing: %%~nf

    :: Check if output directory already exists
    if exist "!outdir!" (
        echo   Output directory already exists. Skipping.
    )

    :: Convert only if output directory does NOT exist
    if not exist "!outdir!" (
        echo   Creating directory "!outdir!" ...
        mkdir "!outdir!"

        echo   Running ffmpeg ...
        ffmpeg -i "%%f" -c:v libx264 -c:a copy -hls_time 2 -hls_list_size 0 "!outdir!\index.m3u8"

        if errorlevel 1 (
            echo   Conversion FAILED.
        )
        if not errorlevel 1 (
            echo   Conversion SUCCESS.
        )
    )

    echo ------------------------
)

echo Batch conversion completed.
pause

nginx中的server_names_hash_max_size和server_names_hash_bucket_size

使用宝塔批量创建完几百个网站后,使用 nginx -t 检查配置时,提示 nginx: [warn] could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size: 64; ignoring server_names_hash_bucket_size

通过优化服务器名称哈希大小,可以提高Nginx在处理大量域名时的性能。根据实际情况,适当增大哈希大小可以减少冲突,提高查找速度。记住在修改哈希大小之前进行性能测试,并确保服务器有足够的内存支持。

server_names_hash_bucket_size
默认:server_names_hash_bucket_size 32|64|128;
配置块: http、server、location
为了提高快速寻找到相应server name的能力,Nginx使用散列表来存储server name。server_names_hash_bucket_size设置了每个散列桶占用的内存大小

server_names_hash_max_size
默认: server_names_hash_max_size 512;
配置块: http、server、location
server_names_hash_max_size越大,消耗的内存就越多,但散列key的冲突率则会降低,检索速度也更快。

解决方案:
修改nginx配置如下:

http {
    ....
    server_names_hash_max_size 2048;
    server_names_hash_bucket_size 512;
    ....
}

- 阅读剩余部分 -

NFS简介

NFS基本简介

NFS(Network File System),它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS服务的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了RPC服务(portmap 或rpcbind服务)。

- 阅读剩余部分 -

CentOS 防火墙FirewallD

firewalld是centOS7默认的防火墙,也是工作在网络层,属于包过滤防火墙。firewalld与iptables都是用来管理防火墙的工具,定义防火墙的各种规则,内部结构都指向netfilter内核态实现包过滤防火墙功能。firewalld提供了支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具。

- 阅读剩余部分 -

网站开启IPv6

前置条件:已通过阿里云控制台开启IPv6及公网带宽,并对安全组放行。
本地访问:需确保本地网络开通IPv6(手机默认开启IPv6)

域名解析:
记录类型:AAAA
记录值:IPv6对应的公网IP
权重:建议权重值低于IPv4解析权重值(阿里云IPv6带宽需单独付费)

配置Nginx:
listen [::]:80; ## 监听 IPv6 的 80 端口

查看:netstat -ntlp | grep nginx

验证:curl -g -I http://[xxxx:xxxx:xxxx...]

网站查询:https://ipw.cn/

IDS、IPS、上网行为管理、网闸、漏扫、日志审计、数据库审计、堡垒机

当前,企业网络架构日益复杂,安全威胁呈现隐蔽化、智能化趋势。为应对APT攻击、勒索病毒、数据泄露等风险,网络安全设备构成了企业防御体系的核心骨架。本文将系统梳理15+核心安全设备,详解其技术原理、核心功能及典型应用场景,为构建纵深防御体系提供专业指南。

- 阅读剩余部分 -

OnlyOffice社区版部署及前端嵌入使用

使用OnlyOffice社区版docker镜像搭建服务,用于在线编辑word文档等。

官网地址:https://www.onlyoffice.com/zh/download-community.aspx#docs-community

创建相关目录
mkdir -p /app/onlyoffice/DocumentServer/{logs,data,lib,db}

docker执行命令
sudo docker run -i -t -d -p 8090:80 --restart=always -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql -e JWT_ENABLED=false onlyoffice/documentserver

注:使用JWT_ENABLED=false关闭token验证。

- 阅读剩余部分 -