Soru lsof -i'nin tersi


Koşu lsof -i (-i'ye hiçbir argüman olmadan) "tüm İnternet ve x.25 (HP-UX) ağ dosyalarının listesini seçer." Tersini yapmak için güvenilir bir yol arıyorum: İnternet dosyalarının HARİÇ olduğu her şeyin bir listesini gösterin. Güvenilir olarak, sadece lsof'un çalıştırılmasını gerektiren bir yolu kastediyorum bir Zamanlar. Sonraki iki çalışma (yani normal) lsof takip eden lsof -i karşılaştırmak için) güçlü bir döküntü olasılığı nedeniyle güvenilir değildir.

Şimdiden teşekkürler!


5
2018-04-24 19:29


Menşei




Cevaplar:


nasıl hakkında:

lsof | awk '$5 !~ /IPv[46]/{print}'

2
2018-04-24 21:37



COMMAND, PID, USER, FD ve TYPE’nin her zaman her biri 1 jetondan oluşur? Yani, asla iki boşluk içermeyecekler ve asla kaybolmayacaklar mı? - Christopher Neylan
@ user112358132134: her zaman 1 jeton olacak. "Wget" öğesini "wg et" olarak yeniden adlandırırsanız, lsof sütununda COMMAND sadece ilk simge "wg" olarak görüntülenir. - Michał Šrajer


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

Bu senin için çalışır mı? Bu sadece -i listeleri hariç tutulur.


0
2018-04-24 19:34



ama birisi IPv4.txt dosyasını açsaydı ne olurdu? Bunu genellemek için tahmin ediyorum, TİP sütununun IPv4 veya IPv6 içerdiği kayıtları filtrelemeyi mi öneriyorsunuz? - Christopher Neylan
grep sadece -w ile kelimeyi sınırlayabilir. Peki dosya adı IPv4 ise ne olacak? Bu filtreyi filtrelemek ve yalnızca o alan (tip) değerinin IPv4 olduğundan emin olmak için awk kullanabilirsiniz. - johnshen64


Bu arada bir araya geldim, bu yüzden kalite eşit olmayabilir.

Bu Python betiği, "lsof" komutundan döndürülen her satırı okur ve "TYPE" sütununun özellikle "IPv4" veya "IPv6" içermediğinden emin olmak için denetler.

#!/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()

Bunu şöyle yürütebilirsiniz:

lsof | ./inverse_lsof.py

0
2018-04-24 21:08