问题描述:
用os.system() 执行命令为"python -m ism.agent.client 192.168.20.118;17104"来启动一个python进程
现象如下:
python进程是一个tcp-client端,去连接tcp-server, server默认端口为17006.
linux设备的CLI可以修改需要连接的tcp-server的ip和port
在默认情况下:
show ias-opm-config
ias-opm-config 192.168.20.118
os.system("python -m ism.agent.client 192.168.20.118") 是没有任何问题
在配置了端口的情况下:
show ias-opm-config
ias-opm-config 192.168.20.118 17104
>>> os.system("python -m ism.agent.client 192.168.20.118;17104")
('host:', '192.168.20.118')
('host1: ', '192.168.20.118')
('port: ', '17006')——端口还是默认端口,明明端口已经改为了17104
<socket._socketobject object at 0x15b8de0>
V1hE0Jv3ZYfV6w5MHCAg4gBGoYHfnIfCFk2+UAw/akrIAsDF9UI7atFMBGKMY4ow
76
peer closed
经过测试如下:
因为python下的system()是调用的C标准的system(),一个疑点就是在C语言中str中要带字符需要“转义”,测试如下
>>> os.system("python -m ism.agent.client 192.168.20.118\;17104")
('host:', '192.168.20.118;17104')
('host1: ', '192.168.20.118')
('port: ', '17104')——可见端口正确的改变为——17104
<socket._socketobject object at 0x15b8de0>
V1hE0Jv3ZYfV6w5MHCAg4gBGoYHfnIfCFk2+UAw/akrIAsDF9UI7atFMBGKMY4ow
76
peer closed
>>>
最后修改如下:将分号改为了冒号
os.system("python -m ism.agent.client 192.168.20.118:17104")
('host:', '192.168.20.118:17104')
('host1: ', '192.168.20.118')
('port: ', '17104')
<socket._socketobject object at 0x15b9de0>
V1hE0Jv3ZYfV6w5MHCAg4gBGoYHfnIfCFk2+UAw/akrIAsDF9UI7atFMBGKMY4ow
76
peer closed