You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本调用UFW时无法识别IP地址字符串的问题排查

解决ufw添加规则时"ERROR: Bad source address"的问题

问题出在你的IP列表文件使用了Windows风格的CRLF(\r\n)换行,bash读取每行内容时会把末尾的\r字符(也就是你看到的 )当成IP地址的一部分,导致ufw无法识别这个无效的地址格式。

方法1:先将文件转换为Unix格式(推荐)

直接把文件的换行符改成Unix的LF格式,后续读取就不会有问题:

  • 安装并使用dos2unix工具:
    sudo apt install dos2unix
    dos2unix your_ip_list.txt
    
  • 如果没有dos2unix,用sed命令直接删除每行末尾的\r:
    sed -i 's/\r$//' your_ip_list.txt
    

方法2:在脚本读取时实时过滤换行符

不用修改原文件,在读取每行IP的时候直接去掉末尾的\r:

  • 用tr命令过滤:
    while IFS= read -r ip; do
        # 移除IP中的\r字符
        clean_ip=$(echo "$ip" | tr -d '\r')
        sudo ufw insert 1 deny from "$clean_ip" to any
    done < your_ip_list.txt
    
  • 用sed预处理文件再读取:
    # 先处理文件去掉\r,再逐行读取执行命令
    sed 's/\r$//' your_ip_list.txt | while IFS= read -r ip; do
        sudo ufw insert 1 deny from "$ip" to any
    done
    

额外提示

后续通过API生成IP列表文件时,尽量配置输出为Unix格式的换行(LF),避免再次出现类似问题。

内容的提问来源于stack exchange,提问作者Zak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:22:10