os.system("python脚本命令"),命令中带有分号“;”,数据被截断,导致出错

问题描述:

用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

猜你喜欢

转载自blog.csdn.net/BBOYWISH/article/details/104803781