Estou tentando remover as entradas permanentes da minha tabela arp. mas o comando a seguir remove apenas aqueles que não são permanentes
ip -s -s neigh flush all
Com o utilitário arp consegui eliminar os permanentes. Exemplo:
arp -a
? (192.168.1.230) en d4:63:c6:11:22:33 [ether] PERM in enp2s0
arp -d 192.168.1.230
Como existem várias entradas permanentes, eu queria automatizar o comando para remover qualquer entrada que contenha "PERM":
arp -a | grep -i perm | grep -oP '(\d+\.){3}\d+' | xargs -I {} sudo arp -d {}
mas tem um erro:
xargs: sudo: ended with status 255; aborting
O que eu fiz errado? THK
Atualizar:
resolvido bash para excluir o endereço ip do computador onde o comando é executado
localip=192.168.1.11
arp -a | grep -i perm | grep -oP '(\d+\.){3}\d+' | grep -v $localip | xargs -I {} sudo arp -d {}
Obrigado a todos
Seu sistema parece ser um sistema Linux.
Junto com os comandos
ifconfig
,route
ebrctl
, oarp
está na categoria de "comandos obsoletos": está usando a API do kernel ioctl obsoleta (para rede) para interagir com a pilha de rede.Comandos e ferramentas mais recentes, respectivamente e
ip link
,ip address
e finalmente (para substituir ), são as versões mais recentes, usando a API do kernel rtnetlink . Novos recursos (por exemplo: roteamento de política com ) geralmente estão disponíveis apenas na API mais recente.ip route
bridge
ip neighbour
arp
ip rule
A entrada permanente no exemplo do OP poderia ter sido adicionada com este comando:
com
nud
significado:Essas famílias de comando geralmente têm uma sintaxe mais poderosa com algum filtro que pode ser aplicado para exibir ou... excluir entradas em massa. Normalmente, quando um filtro não vazio se aplica ao subcomando show (aqui: mostre as entradas ARP permanentes):
ele se aplicará ao subcomando flush :
Observação:
Enquanto no meu sistema
arp
está/usr/sbin/arp
e eu tive que reescrever o início com/usr/sbin/arp
, seu comando parecia bom quando executado por um usuário com direitos ilimitados de sudo. De qualquer forma, se entendi seu comentário corretamente, ele ressalta que tentar analisar a saída destinada principalmente à leitura humana não é confiável.UPDATE1: um exemplo de análise controlada com a saída JSON
Comandos iproute2 recentes o suficiente têm uma saída JSON, que quando combinada com o
jq
comando de análise JSON pode ajudar muito se um aplicativo ou script não tiver uma API mais direta disponível.Exemplo para recuperar todos os endereços IP na tabela ARP correspondentes a um endereço MAC administrado localmente ou um Xen ou VMware OUI:
UPDATE2: conforme comentado, como adicionar uma entrada já temporariamente, tão potencialmente aleatória, presente?
Uma entrada já presente não pode ser adicionada. Ele pode ser alterado (se a entrada for conhecida) ou substituído (altere-o se existir, adicione-o se não existir, então isso nunca responderá EEXIST). Isso funciona para muitos outros comandos da família iproute2 .
Exemplo: