`lsof -i` 的逆操作

`lsof -i` 的逆操作

运行lsof -i(不带 -i 参数)“选择所有 Internet 和 x.25 (HP-UX) 网络文件的列表”。我正在寻找一种可靠的方法来执行相反的操作:显示除 Internet 文件之外的所有内容的列表。所谓可靠,我的意思是只需要运行 lsof 的方法一次。两次后续运行(即,先进行正常运行,lsof然后进行运行lsof -i以便进行比较)并不可靠,因为很有可能出现客户流失。

提前致谢!

答案1

怎么样:

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

答案2

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

这对你有用吗?这将仅排除 -i 列出的内容。

答案3

我很快就把它拼好了,所以质量可能达不到标准。

该 Python 脚本读取“lsof”命令返回的每一行,并检查以确保“TYPE”列不包含“IPv4”或“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()

你可以像这样执行它:

lsof | ./inverse_lsof.py

相关内容