Удалите записи IP-адресов CSF «не удалять» с помощью bash

#bash #csf

Вопрос:

Есть ли способ удалить IP-адреса CSF (автоматически с помощью bash), к которым # do not delete добавлен комментарий? Например, этот список ниже:

 1.1.1.1 # do not delete
1.2.3.4 # This is another IP # do not delete
1.2.3.5 # This IP is bad # do not delete
 

Если я удалю IP 1.1.1.1 -адрес с помощью CSF, как это:

 csf -dr 1.1.1.1
 

Я получу эту ошибку:

 csf: 1.1.1.1 set as "do not delete" - not removed
 

Конечно , я могу идеально удалить этот IP-адрес, отредактировав csf.deny и вручную удалив эту строку комментария # do not delete , а затем, когда я запущу csf -d 1.1.1.1 ее, она будет удалена.

Есть ли у CSF возможность принудительно удалить эту запись или есть альтернативный способ сделать это автоматически с помощью скрипта bash? Есть более нескольких сотен записей, в которых есть это # do not delete . Таким образом, это нелегко сделать вручную.

Комментарии:

1. Этого -dr не должно быть -d . Смотрите мой ответ.

Ответ №1:

Вы можете использовать команду grep без использования csf -dr :

 #!/bin/bash

# Find IP:

ip="1.1.1.1"

search_csf_ip_without_comment=$(grep -w "^${ip}" "/etc/csf/csf.deny")

# If IP found:

if [[ -n "${search_csf_ip_without_comment}" ]]; then
  echo "IP found, remove and restarting csf ..." 
    grep -wv "^${ip}" "/etc/csf/csf.deny" >write.tmp amp;amp; mv write.tmp "/etc/csf/csf.deny"

   csf -r > /dev/null
else

  echo "IP not found"
fi