1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/python/psutil/examples/netstat.py Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,52 @@ 1.4 +#!/usr/bin/env python 1.5 + 1.6 +# Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. 1.7 +# Use of this source code is governed by a BSD-style license that can be 1.8 +# found in the LICENSE file. 1.9 + 1.10 +""" 1.11 +A clone of 'netstat'. 1.12 +""" 1.13 + 1.14 +import socket 1.15 +from socket import AF_INET, SOCK_STREAM, SOCK_DGRAM 1.16 + 1.17 +import psutil 1.18 +from psutil._compat import print_ 1.19 + 1.20 + 1.21 +AD = "-" 1.22 +AF_INET6 = getattr(socket, 'AF_INET6', object()) 1.23 +proto_map = {(AF_INET, SOCK_STREAM) : 'tcp', 1.24 + (AF_INET6, SOCK_STREAM) : 'tcp6', 1.25 + (AF_INET, SOCK_DGRAM) : 'udp', 1.26 + (AF_INET6, SOCK_DGRAM) : 'udp6'} 1.27 + 1.28 +def main(): 1.29 + templ = "%-5s %-22s %-22s %-13s %-6s %s" 1.30 + print_(templ % ("Proto", "Local addr", "Remote addr", "Status", "PID", 1.31 + "Program name")) 1.32 + for p in psutil.process_iter(): 1.33 + name = '?' 1.34 + try: 1.35 + name = p.name 1.36 + cons = p.get_connections(kind='inet') 1.37 + except psutil.AccessDenied: 1.38 + print_(templ % (AD, AD, AD, AD, p.pid, name)) 1.39 + except psutil.NoSuchProcess: 1.40 + continue 1.41 + else: 1.42 + for c in cons: 1.43 + raddr = "" 1.44 + laddr = "%s:%s" % (c.laddr) 1.45 + if c.raddr: 1.46 + raddr = "%s:%s" % (c.raddr) 1.47 + print_(templ % (proto_map[(c.family, c.type)], 1.48 + laddr, 1.49 + raddr, 1.50 + str(c.status), 1.51 + p.pid, 1.52 + name[:15])) 1.53 + 1.54 +if __name__ == '__main__': 1.55 + main()