如何将函数中使用的IP地址作为命令行参数传递给argparse参数解析器
代码修改步骤
第一步:改造get_sipresponse函数
移除内部的用户输入逻辑,改为接收IP地址作为入参:
def get_sipresponse(opensips_ip): p = sys.path.append("/home/asad.javed/") response = sip.ping(opensips_ip) response.get('Status') print(response) return p, response
第二步:添加IP地址命令行参数
在参数解析器中新增--opensips-ip参数,同时修复原主函数的语法缺失问题:
def main(): # 缺的依赖提前导入,已导入可忽略 import argparse as ap import time, subprocess, sys parser = ap.ArgumentParser() parser.add_argument('-s', '--start', help='start script', action='store_true') parser.add_argument('--getOSresponse', help='Opensips response', action='store_true') # 新增IP参数,required=True表示使用脚本必须传该参数,不需要强制传可以删掉required,加default="默认IP" parser.add_argument('--opensips-ip', required=True, help='OpenSIPS server IP address') args = parser.parse_args() # 修复原代码缺失的if判断和冒号语法错误 if args.start: for k,v in reversed_dictionary.items(): print(v, "=", k) time.sleep(5) proc = subprocess.call([k], shell=True) time.sleep(5) if proc != 0: if proc < 0: print("Killed by signal!", -proc) else: print("\nReturn code: \n", proc) else: print("\nSuccess\n") # 传入解析到的IP参数 get_sipresponse(args.opensips_ip) elif args.getOSresponse: # 传入解析到的IP参数 get_sipresponse(args.opensips_ip)
调用示例
启动脚本时直接传入IP参数即可:
# 配合start参数使用 python your_script_name.py --start --opensips-ip 192.168.1.20 # 配合getOSresponse参数使用 python your_script_name.py --getOSresponse --opensips-ip 192.168.1.20
内容的提问来源于stack exchange,提问作者Asad Javed
相关产品推荐
相关产品推荐

