iptables arp выдерживают сравнение и выполняются

Когда Ваши процессы требуют большей памяти, чем у Вас есть RAM на Вашем сервере, они "подкачивают" часть своего пространства памяти на диск в Вашем разделе подкачки. Доступ к этой виртуальной памяти намного медленнее, чем доступ к реальной RAM, поэтому если это перейдет к сути дела, где часто используемые данные должны быть загружены и, это нанесет вред производительности Вашей системы.

1
задан 17 December 2013 в 11:11
1 ответ

На каком языке вы хотите, чтобы этот сценарий был? Любой? Потому что с помощью сценария оболочки, который, мягко говоря, утомителен ...

В противном случае вы могли бы сохранить результат ваших arp + grep и iptables -L в 2 разных файлах, а затем загрузить эти два файла в массив. Тогда это становится довольно просто: вы просматриваете один из массивов и, если он существует / не существует в другом, затем удаляете.

arp |grep br0 | perl -nle '/her   ([^ ]+)/ && print $1' >file1.txt
iptables -t mangle -L -v -n |grep MAC | perl -nle '/MAC ([^ ]+)/ && print $1' >file2.txt
php do-delete.php

И do-delete.php может загружать файлы и запускать вызов system () для удаления записей:

<?php
$f1 = file("file1.txt");
$f2 = file("file2.txt");
$to_delete = array_diff($f2, $f1);
foreach($to_delete as $mac)
{
  system('iptables -t mangle -D internet -m mac --mac-source ' . $mac . ' -j RETURN');
}

Что-то вроде этого ... (ПРИМЕЧАНИЕ ПРОТЕСТИРОВАНО!) Обратите внимание, как легко вызвать array_diff () ! Ничего подобного, что я знаю в сценарии оболочки.

Вы также можете распечатать результирующую таблицу обратно в файл.

file_put_contents('file3.txt', join($to_delete, "\n") . "\n");

Затем используйте это для удаления из оболочки ...

1
ответ дан 4 December 2019 в 00:31

Теги

Похожие вопросы