我一直在研究将在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
答案 0 :(得分:0)
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
也是如此。