我正在尝试通过python脚本启动solr。有三个条件:
当用户不提供端口号和zookeeper实例时,第1页。
命令:/home/user/solr-5.3.0/bin/solr start
这个有效。
当用户仅提供端口号时为第二个。
命令:/home/user/solr-5.3.0/bin/solr start -p 8898
这不会执行。
错误:使用-p选项时需要端口号!
当用户提供端口号和zookeeper实例时,第3步。
命令:/home/user/solr-5.3.0/bin/solr start -p 8898 -z localhost:2181
这也不会执行。
错误:使用-p选项时需要端口号!
我是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)
答案 0 :(得分:1)
更正后的代码:
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)])