我是Python
新手,如果我给出端口名称,我试图弄清楚如何从/etc/services
获取端口号。
/etc/services
包含以下值
DB2_test 60000/tcp
DB2_test_1 60001/tcp
DB2_test_2 60002/tcp
DB2_test_3 60003/tcp
DB2_test_4 60004/tcp
DB2_test_END 60005/tcp
命令
db2port=os.popen("db2 get dbm cfg | grep -i Service | awk '{{print $6}}'").read()
print(db2port)
返回DB2_test
以下命令不起作用。我只想看到 DB2_test 的值,即 60000:
getnum = "cat /etc/services | sed -n '/{db2port}s/p' | awk '{print $2}' | sed 's//tcp$//'"
print(getnum}
无需调用awk,sed等。一个纯粹的Python解决方案是:
for line in open("/etc/services").readlines():
parts = line.split()
if parts and parts[0] == 'DB2_test':
port, protocol = parts[1].split('/')
print(port)
假设变量services
包含/etc/services
中的文本。
port_map = {
name: int(value.split('/')[0])
for name, value in (
line.split() for line in services.splitlines()
)
}
现在,您有一个从服务名称到其端口的映射,例如,port_map["DB2_test"] == 60000
。