實現向 python 腳本中傳遞列表,字典參數

script.py

import json

from optparse import OptionParser
def main():
    log.init("/var/log/ansible_engine/ansible_engine.log")
    parser = OptionParser()
    parser.add_option("-t","--type",dest="fun",help="task type:playbook or module",metavar="playbook/module")
    parser.add_option("-i","--ip",dest="ip",help="ip list where tasks are excuted.", metavar="LIST")
    parser.add_option("-u","--user",dest="user",help="host user name to login.")
    parser.add_option("-p","--password",dest="pwd",help="host password to login",default="")
    parser.add_option("-n","--name",dest="name",help="palybook path or module name")
    parser.add_option("-r","--result",dest="result_file",help="write result to FILE",metavar="FILE")
    parser.add_option("-a","--args",dest="args",help="args which pass to playbook or module",metavar="DICT",
                      default=None)
    parser.add_option("-k","--private_file",dest="private_file",help="private file used to login host",
                      metavar="FILE",default=None)
    parser.add_option("-o","--port",dest="port",help="ssh service port",metavar="LIST",default=[22])


    (options, args) = parser.parse_args()
    fun = options.fun
    ip = json.loads(options.ip)
    user = options.user
    pwd = options.pwd
    playbook = options.name
    result_file = options.result_file
    args = json.loads(options.args)
    private_file = options.private_file
    port = options.port
if __name__ == "__main__":
    main()
調用腳本 init.py:
import json
host_name_list = ["172.28.0.2"]
args = {"a":1}
...
cmd = "python /usr/local/bin/ansible_engine/src/ansible_utils.py -t playbook -i '%s' -u '%s' -p '%s' " \
      "-n '%s' -r '%s' -a '%s' -k '%s' -o '%s'" \
      % (json.dumps(host_name_list),host_user,host_passwd,playbook,result_file,json.dumps(args),private_file,json.dumps(port))
status,output = commands.getstatusoutput(cmd)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章