Python 脚本错误

Python scripting error

我正在尝试通过 python 脚本启动 solr。存在三个条件:

第一次当用户不提供端口号和zookeeper实例时。

命令:/home/user/solr-5.3.0/bin/solr start

这个有效。

第 2 次,当用户只提供端口号时。

命令:/home/user/solr-5.3.0/bin/solr start -p 8898

这不执行。

ERROR: Port number is required when using the -p option!

第 3 次,当用户同时提供端口号和 zookeeper 实例时。

命令:/home/user/solr-5.3.0/bin/solr start -p 8898 -z localhost:2181

这个也不执行

ERROR: Port number is required when using the -p option!

我是 python 脚本的新手。我只需要编写脚本来将其部署到服务器上。这是正确的做法吗?有没有更好的方法来做到这一点?

代码

#!/usr/bin/env python


import os
import optparse
import subprocess


parser = optparse.OptionParser()
parser.add_option('-p', dest='port', help='Port(By Default it will start at 8983)',type=int)
parser.add_option('-z', dest='zk', help='zookeeper Server(By default it will take embedded zookeeper)')



(options, args) = parser.parse_args()


if options.port is None and options.zk is None:
subprocess.call(["/home/user/solr-5.3.0/bin/solr start"], shell=True)
elif options.zk is None:
subprocess.call(["/home/user/solr-5.3.0/bin/solr start -p ", str(options.port)], shell=True)
else :
subprocess.call(["/home/user/solr-5.3.0/bin/solr start -p", str(options.port), "-z", str(options.zk)], shell=True)

更正后的代码:

if options.port is None and options.zk is None:
    subprocess.call(["/home/user/solr-5.3.0/bin/solr", "start"])
elif options.zk is None:
    subprocess.call(["/home/user/solr-5.3.0/bin/solr", "start", "-p", str(options.port)])
else:
    subprocess.call(["/home/user/solr-5.3.0/bin/solr", "start", "-p", str(options.port), "-z", str(options.zk)])