Argparse 将命令行字符串传递给变量 python3

新手上路,请多包涵

我已经阅读了 argparse 文档,我正在尝试制作一个程序,该程序采用命令行参数并将这些值传递给变量,如下所示:

 ssh.py -username admin -password password -hostlist 192.168.1.1, 192.168.1.2 -commands uname -a, whoami

当我在我的程序中静态分配这些值时,它可以工作,但是我无法让 argpase 将字符串传递给变量,无论目标是列表还是单个字符串。

这有效:

 hostlist = ['192.168.1.1','192.168.1.2']
username = 'admin'
password = 'password'
commands = ['uname -a','whoami']

这会静默运行并且不起作用或产生错误或写入日志文件:

     parser = argparse.ArgumentParser()
    parser.add_argument('-u', '-username', help='The Username for authentication.')
    parser.add_argument('-p', '-password', help='The password for authentication.')
    parser.add_argument('-l', '-hostlist', nargs='+', help='List of devices to interact with.')
    parser.add_argument('-c', '-commands', nargs='+', help='An exact list of commands to run')

    args = parser.parse_args()
    u,username = args.username
    p,password = args.password
    l,hostlist = args.hostlist
    c,commands = args.commands

原文由 user6460923 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 374
1 个回答

感谢大家!现在它似乎工作正常:

     parser = argparse.ArgumentParser()
    parser.add_argument('-u', '--username', action='store', dest='username', help='The ssh username.')
    parser.add_argument('-p', '--password', action='store', dest='password', help='The ssh password.')
    parser.add_argument('-l', '--hostlist', nargs='+',action='store', dest='hostlist', help='List of devices to interact with.')
    parser.add_argument('-c', '--commands', nargs='+',action='store', dest='commands', help='An exact list of commands to run')

    args = parser.parse_args()
    username = args.username
    password = args.password
    hostlist = args.hostlist
    commands = args.commands

原文由 user6460923 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题