从MongoDB获取和拆分地址以仅返回主机ID



我正在尝试将shell脚本转换为python以访问MongoDB。我有代码:

primport = [] 
primport = call('/opt/mongodb/bin/mongo localhost27017 --eval "printjson(rs.isMaster())" | grep "primary"', shell = True) 

当我尝试打印 primport 时,整个值都会被打印出来:

 `"primary" : "1404Base:27017"`,

这不是我想要的。我只想要主机 ID 27017。我尝试使用 python 拆分函数,但它说 int 对象没有属性拆分。我只需要 ID,因为我必须在即将到来的代码中将其作为参数传递。

假设call来自subprocess模块,call返回命令的shell返回代码,而不是STDOUT。您想获得命令的STDOUT,为此您应该使用 subprocess.check_output .

尝试使用:

primport = subprocess.check_output('/opt/mongodb/bin/mongo localhost27017 --eval "printjson(rs.isMaster())" | grep "primary" | cut -d ":" -f 2,3', shell = True)

编辑:此外,在系统调用中添加了一个cut,因此您不必在 Python 中进行任何清理。

最新更新