如何将argparser的输入传递给另一个函数的参数



我正在编写一个程序,它基本上登录到远程服务器(Linux)并执行一些命令。为此,我需要从命令行获得"服务器IP","用户名"one_answers"密码"等输入。我使用的是argparse模块。我的代码看起来像这样:

import sys
import argparse
import getpass
import re
from time import gmtime, strftime
import paramiko
try:
    import interactive
except ImportError:
    from . import interactive
def do_connect(esxi):
        """Connect to host in the esxi host"""
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect()
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='DEV Installer App')
    parser.add_argument("--esxiIP", help="Mention the Esxi Host IP", required=True)
    parser.add_argument("--userName", help="Enter the UserName of the Host", required=True)
    parser.add_argument("--password", help="Enter the Password", required=True)
    args = parser.parse_args()

我在这里要做的是,我有一个连接到远程服务器的功能,并且在main()函数中使用argparse获得输入。我需要将这些输入参数传递给do_connect函数。我怎样才能做到这一点呢?

argsNamespace实例对象,每个命令行参数都有属性。参数是基于选项开关的,除非你显式地给它一个不同的名字。

在本例中,您将拥有args.esxiIPargs.userNameargs.password属性,然后您可以将它们传递给另一个函数。如果函数只接受esxiIP参数,则传递该参数:

do_connect(args.esxiIP)

如果需要更多参数,也显式传递这些参数。

演示:

>>> args = parser.parse_args('--esxiIP 10.20.30.40 --userName foo --password bar'.split())
>>> args
Namespace(esxiIP='10.20.30.40', password='bar', userName='foo')
>>> args.esxiIP
'10.20.30.40'
>>> args.userName
'foo'
>>> args.password
'bar'

相关内容

  • 没有找到相关文章

最新更新