inverso de 'lsof -i'

5

A execução de lsof -i (sem argumentos para -i) "seleciona a listagem de todos os arquivos de rede da Internet e x.25 (HP-UX)." Eu estou procurando uma maneira confiável de fazer o inverso: mostrar uma lista de tudo, exceto arquivos da Internet. Por confiável, quero dizer uma maneira que exigiria que o lsof seja executado uma vez . Duas execuções subseqüentes (ou seja, um% normallsof seguido por um lsof -i para comparar) não são confiáveis devido à strong possibilidade de rotatividade.

Obrigado antecipadamente!

    
por Christopher Neylan 24.04.2012 / 21:29

3 respostas

2

que tal:

lsof | awk '$5 !~ /IPv[46]/{print}'
    
por 24.04.2012 / 23:37
0

sudo lsof | grep -v IPv4 | grep -v IPv6

isso funcionaria para você? isso excluiria apenas o que -i listas.

    
por 24.04.2012 / 21:34
0

Eu rapidamente passei por isso juntos, então a qualidade pode não ser igual.

Este script Python lê cada linha retornada do comando "lsof" e verifica se a coluna "TYPE" não inclui especificamente "IPv4" ou "IPv6".

#!/usr/bin/env python

from sys import stdin
from re  import search

def main():
    lsof = stdin.read().strip()

    final_files = [lsof.split('\n')[0]]

    for line in lsof.split('\n')[1:]:
        if not search(r'.*(IPv4|IPv6).*', line.split()[4]):
            final_files.append(line)

    print '\n'.join(final_files)

if __name__ == '__main__':
    main()

Você pode executá-lo da seguinte forma:

lsof | ./inverse_lsof.py
    
por 24.04.2012 / 23:08

Tags