【问题标题】:Create a output to a command Python创建命令 Python 的输出
【发布时间】:2018-10-15 16:26:07
【问题描述】:

我一直在编写将在 python 中执行特定命令的代码

try:
    portNumber = ('\nPlease pick a Port#: ')
    description = str('Please add  port description: ')
    config_commands = ('port set port' +portNumber
    'description' +description)
    #Should become ['port set port' +# description +description]

    print ('Accessing port')  # should be accessing th eport
    output = net_connect.send_command('port set port' [portNumber] [description]) # i 
    returns the output of the config_commands
    print (output) #should show config commands

    print ('Showing New Configuration')
    output = net_connect.send_command_expect('port show status')
    print (output) # print new config

    print ('Saving Configuration...')
    output = net_connect.send_command('configuration save') # returns output of 
    specified command
    print (output)

但它总是失败
任何想法? 这似乎是一个组合的问题

   [root@localhost ansible]# python show.py
File "show.py", line 37
'description' +description)

output = net_connect.send_command('port set port' [portNumber] description [description]) # returns the output of the config_commands TypeError: string indices must be integers, not str

【问题讨论】:

  • 请澄清。如果错误发生在'description' +description) 行,或者output = net_connect.send_command('port set port' [portNumber] description 行?虽然这两行都有问题,但它们不能都引发错误。
  • 为什么不直接将config_commands 传递给send_command?看起来这就是你想要做的事情
  • 您可能也想使用input 函数。也许通过一个教程来更好地了解python的基础知识……
  • 感谢您的建议。我将研究输入函数以获得更好的主意。 @SamMason
  • @Kevin 无论我怎么写,似乎都给了我一个错误。

标签: python linux ssh


【解决方案1】:
config_commands = ('port set port' +portNumber
'description' +description)

这不是合法的语法。您不能在变量 portNumber 和字符串文字 'description' 之间没有运算符的情况下组合它们。它们在不同的行上并不重要。也许您打算将它们与“+”结合起来?

config_commands = ('port set port' +portNumber + 'description' +description)

这并不重要。您从不使用 config_commands 变量,因此您不妨完全删除该行。

接下来,

output = net_connect.send_command('port set port' [portNumber] [description])

如果您尝试将 'port set port' 和 portNumber 和 description 组合成一个字符串,这不是您的做法。 'port set port' [portNumber] 实际上等同于“返回字符串'port set port' 中位于索引portNumber 的字符”。但是如果portNumber 是一个整数,这只是一个合法的操作。你的portNumber 不是一个整数,它是一个字符串:'\nPlease pick a Port#: '。如果你想简单地组合这些值,你可以这样做:

output = net_connect.send_command("port set port {} {}".format(portNumber, description))

我不知道port 命令的作用,但我猜你实际上并不打算将'\nPlease pick a Port#: ' 作为它的第一个参数传递。如果您想提示用户输入一个数字并传递它,您可能应该使用input 函数。

portNumber = input('\nPlease pick a Port#: ')

description 也是如此。

【讨论】:

  • 感谢@kevin 的帮助,我可以给你点赞吗?该功能正在运行,但正在打印(“显示新配置”)^ SyntaxError:无效语法
  • 荣誉通常以赞成或接受的形式出现。但是,只有当您觉得您的问题已经解决时,您才应该接受答案。由于您仍然遇到错误,我认为您还没有完成:-)
  • 你给了我我需要的东西。它的工作原理只是一个白痴,错过了一些东西。写出来并分享结果。
  • 这就是让我摇摆不定的原因 portNumber = raw_input('请选择一个端口#:') description = raw_input('请添加端口描述:') config_commands = ('port set port' + portNumber + 'description' +description) #应该变成['port set port' +# description +description] print("Accessing" +portNumber) #应该是访问端口 output = net_connect.send_command('port set port {} description "{}"'.format(portNumber, description))
猜你喜欢
  • 2020-09-08
  • 2015-10-27
  • 2019-11-26
  • 1970-01-01
  • 2013-02-19
  • 2013-08-17
  • 1970-01-01
  • 2014-05-11
  • 2018-01-01
相关资源
最近更新 更多