Я использую Python Fabric, пытаясь прокомментировать все строки в файле, которые начинаются с «@», если только за этим «@» не следуют два конкретных IP-адреса. Итак, если файл содержит (без маркеров)
- @hi
- @IP1
- кое-что здесь
- @IP2
то результирующий файл должен быть (тоже без пуль)
- #@hi
- @IP1
- кое-что здесь
- @IP2
Это то, что у меня есть до сих пор:
def verify():
output = sudo("/sbin/service syslog status")
#if syslog is running
if 'is running...' in output:
#then set output to the value of the conf file
output = sudo("cat /etc/syslog.conf")
#If pattern is matched
if "@" in output and not "@IP1" and not "@IP2":
#read all the lines in the conf file
sys.stdout = open('/etc/syslog.conf', 'r+').readlines()
#and for every line, comment if it matches pattern
for line in sys.stdout:
if "@" in line and not "@1P1" and not "@IP2":
line = "#" + line
else:
print GOOD
else:
print RSYSLOG
Я понимаю это, когда говорю
if "@" in output and not "@IP1" and not "@IP2"
Python думает, что я говорю «сделайте что-нибудь, если в файле есть @, но ТОЛЬКО если у вас также нет @IP1 и @IP2». Я пытаюсь сказать: «сделайте что-нибудь с любой строкой, начинающейся с @, кроме строк @IP1 и @IP2». Также я знаю, что в моем коде есть и другие ошибки, но сейчас я работаю именно над этим.
Спасибо.