将字符串的数值增加1 - Python

时间:2018-02-13 11:55:05

标签: python python-3.x snort

我正在为python编写一个脚本,使用户可以轻松配置snort,我有一条规则来保护TCP端口23免受IoTProtect访问,具有以下语法:

reject tcp any any -> 169.254.183.24 23 (msg:Unauthorized access to IoT device!; sid:00000000;rev:003; )

问题在于我添加了功能,以便用户可以添加IP地址,并且此规则也将应用于该IP,但是,要使规则工作,SID必须加1或者是唯一的。

目前我创建的python脚本是:

import fileinput

def incrementsid():

    incremented = 0
    added = incremented + 2
    text = "sid:00000000"
    new_text = "sid:0000000{}".format(added)

    for line in fileinput.input("C:\\Users\\Admin\\Desktop\\Test\\IoTProtection.rules", inplace = 1):
        if text in line:
            print(line.replace(line,new_text))
            print("Sid replaced!")
        else:
            print(line.strip())

incrementsid()

然而,实际发生的是我收到此输出:

reject tcp any any -> 169.254.183.24 23 (msg:Unauthorized access to IoT device!; sid:00000000;rev:003; )

在我的Test文件夹中,IoTProtect.rules文件现在只说:

sid:00000002
Sid replaced!

我实际上需要IoTProtect.rules说:

reject tcp any any -> 169.254.183.24 23 (msg:Unauthorized access to IoT device!; sid:00000002;rev:003; )

如果我的代码是垃圾,请道歉,但我真的很感激有关如何使这项功能正常工作的任何建议或反馈。

谢谢!

1 个答案:

答案 0 :(得分:0)

代码中存在两个问题:

1)使用fileinput.input输入的fileinput.Fileinput 2)替换:

print(line.replace(line,new_text))

由:

print(line.replace(text,new_text))

<强>更新
您的问题已经回答Here

有关string.replace()

的更多信息