Python脚本错误

时间:2015-09-22 12:37:31

标签: python scripting

我正在尝试通过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)

1 个答案:

答案 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)])