所以我必须创建一个python脚本,导入/etc/services
文件并将其写入字典。
我们的目标是端口/协议将成为密钥,服务将成为值。我希望能够打印输入密钥信息的dict,并看到服务返回如下:
print(yourdictionaryname["22/tcp"])
ssh
字符串
这个脚本是我能得到的最远的。我在网上找到了它,它工作得很好,但它的设计只是显示未使用的端口。Cant似乎修改它来做我需要的:
# set the file name depending on the operating system
if sys.platform == 'win32':
file = r'C:\WINDOWS\system32\drivers\etc\services'
else:
file = '/etc/services'
# Create an empty dictionary
ports = dict()
# Iterate through the file, one line at a time
for line in open(file):
# Ignore lines starting with '#' and those containing only whitespace
if line[0:1] != '#' and not line.isspace():
# Extract the second field (seperated by \s+)
pp = line.split(None, 1)[1]
# Extract the port number from port/protocol
port = pp.split ('/', 1)[0]
# Convert to int, then store as a dictionary key
port = int(port)
ports[port] = None
# Give up after port 200
if port > 200: break
# Print any port numbers not present as a dictionary key
for num in xrange(1,201):
if not num in ports:
print "Unused port", num
型
2条答案
按热度按时间pinkon5k1#
根据您尝试完成的任务,socket模块可能足以满足您的需求,其
getservbyname
和getservbyport
功能:字符串
如果你真的需要这个dict,你可以用
getservbyport
替换range(1, 65536)
。5ktev3wc2#
所以我不得不四处寻找这个工作.这是一个很酷的函数.首先,它检测操作系统,然后它创建一个基于/etc/services文件的字典.接下来,它将解析该文件的端口输入,然后返回相关的服务.
字符串