运行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