如何将函数中使用的 IP 地址作为命令行参数传递给参数解析器?

How can I pass an IP address used in a function as command line argument to argument parser?

我有这个功能,它正在 ping 服务器以获取其响应。我希望能够将函数中使用的 IP 地址作为命令行参数提供给参数解析器,而不是对其进行硬编码或将其作为用户输入。 目前函数看起来像:

def get_sipresponse():
        var = input("Enter Opensips IP: ")
        p = sys.path.append("/home/asad.javed/")
        response = sip.ping(var)
        response.get('Status')
        print(response)
        return p, response

我使用参数解析器的主要函数如下所示:

def main():
        parser = ap.ArgumentParser()
        parser.add_argument('-s', '--start', help='start script', action='store_true')
        parser.add_argument('--getOSresponse', help='Opensips response', action='store_true')

        args = parser.parse_args()

        elif 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");get_sipresponse()

        elif args.getOSresponse:
                get_sipresponse()

如果您 return 来自 get_sipresponse() 的“口述”:

def get_sipresponse():
        var = input("Enter Opensips IP: ")
        p = sys.path.append("/home/asad.javed/")
        response = sip.ping(var)
        response.get('Status')
        print(response)
        return {'ip': var , 
                'path': p, 
                'resp': response}

然后你就可以在你的main()函数中使用它了。

def main():
  target_ip = get_sipresponse()['ip']
  ......
  .....
  ...

在您的 main 中,在 arg 解析器中其他参数的设置下,添加此行:

parser.add_argument('--ip')

然后把get_sipresponse()改成这样:

def get_sipresponse(ip):
        p = sys.path.append("/home/asad.javed/")
        response = sip.ping(ip)
        response.get('Status')
        print(response)
        return p, response

最后来自 main,您可以这样调用 get_sipresponse

get_sipresponse(args.ip)