#独家
防火墙问题Another app is currently holding the xtables lock. Perhaps you want to use the -w opt?

2023-07-28 0 2,505

目前有两台服务器操作必现,其他服务器没发现问题,这可能是什么原因
命令类似:
iptables -A INPUT -s xx.xx.xx.xx/32 -p tcp -m multiport -j ACCEPT –dports 10101,10102,10103
简化后的代码如下

package main

import (
    "bufio"
    "bytes"
    "log"
    "os"
    "os/exec"
)

const (
    FILENAME = "info.txt"
)

func main() {
    iptableList, err := getInfo()
    if err != nil {
        log.Println(err)
        return
    }
    for _, cmd := range *iptableList {
        var stdout, stderr bytes.Buffer
        command := exec.Command("bash", "-c", "iptables"+cmd)
        command.Stderr = &stderr
        command.Stdout = &stdout
        err := command.Run()
        if err != nil {
            log.Println(err, cmd)
            return
        }
    }

}

// 读取文件的内容,一共100多条
func getInfo() (*[]string, error) {

    file, err := os.Open(FILENAME)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    var lines []string

    for scanner.Scan() {
        lines = append(lines, scanner.Text())
    }

    if err := scanner.Err(); err != nil {
        return &lines, err
    }
    return &lines, nil
}

Another app is currently holding the xtables lock。 应该是有其他程序占用,可以通过ps -fp $(pidof iptables)或者lsof -p $(pidof iptables)或者 lsof -n 2>/dev/null | grep xtables.lock 找到指定的进程,并处理掉,再重新执行命令

另外代码优化了一下,仅供参考。原代码”iptables” + cmd可能会有空格问题

package main

import (
    "bufio"
    "log"
    "os"
    "os/exec"
    "strings"
)

const (
    FILENAME = "info.txt"
)

func main() {
    iptableList, err := getInfo()

    if err != nil {
        log.Println(err)
        return
    }
    for _, cmd := range iptableList {
        output, err := exec.Command("iptables", strings.Split(cmd, " ")...).Output()
        if err != nil {
            log.Printf("cmd: %s, err: %s, output: %s\n", cmd, err, output)
            return
        }
    }
}

func getInfo() ([]string, error) {

    file, err := os.Open(FILENAME)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    var lines []string

    for scanner.Scan() {
        lines = append(lines, scanner.Text())
    }

    if err := scanner.Err(); err != nil {
        return lines, err
    }
    return lines, nil
}
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 防火墙问题Another app is currently holding the xtables lock. Perhaps you want to use the -w opt? https://www.jkxiazai.com/2282.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务