实现向 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值