Em que idioma você gostaria que o script fosse? Qualquer? Porque com um script de shell que é tedioso para dizer o mínimo ...
Você poderia salvar o resultado de seu arp + grep e iptables -L em 2 arquivos diferentes e, em seguida, carregar esses dois arquivos em uma matriz. Então fica bem fácil, você passa por um dos array e se existe / não existe no outro, então delete.
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
E o do-delete.php poderia estar carregando os arquivos e executar uma chamada do sistema () para excluir as entradas:
<?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');
}
Algo parecido ... (NOTE TESTED!) Observe como o array_diff ()
Você também pode imprimir a tabela resultante em um arquivo.
file_put_contents('file3.txt', join($to_delete, "\n") . "\n");
Em seguida, use isso para fazer a exclusão do shell ...
Você também pode usar o PHP para gerar os dois primeiros arquivos usando popen () .