Возникли проблемы при передаче 2 переменных в pexpect;строковые индексы должны быть целыми числами, а не str - PullRequest
0 голосов
/ 19 сентября 2018

пытается получить данные с беспроводного контроллера.команда show ap auto-rf band может быть либо 802.11a 802.11b, либо 802.11-abgn ap-name произвольно

пример вывода:

(контроллер Cisco)> show ap auto-rf802.11-abgn Hallway38

Number Of Slots.................................. 2 
AP Name.......................................... Hallway38
MAC Address...................................... a0:e0:af:33:d0:bc
  Slot ID........................................ 0
  Radio Type..................................... RADIO_TYPE_80211abgn
  Current TX/RX Band............................. 80211 2.4G band
  Sub-band Type.................................. All
  Noise Information
    Noise Profile................................ PASSED
    Channel 1....................................  -90 dBm
    Channel 2....................................  -77 dBm
    Channel 3....................................  -88 dBm
    Channel 4....................................  -93 dBm
    Channel 5....................................  -91 dBm
    Channel 6....................................  -88 dBm
    Channel 7....................................  -93 dBm

Вывод ошибки: файл "./wlc-auto-rf.py", строка 34, в child.sendline ('show ap auto-rf' ['radio'] ['apname']) TypeError: строковые индексы должны быть целыми числами, а не str

Любая помощь приветствуется.

here is the script:
              !/usr/bin/python 
              #
              #       requires python pexpect module
              #
              import pexpect
              import sys
             firstarg=sys.argv[0]
             address=sys.argv[1]
             username=sys.argv[2]
             password=sys.argv[3]
             radio=sys.argv[4]
             apname=sys.argv[5]
             output=sys.argv[6]

      child = pexpect.spawn ('ssh' , [address])
      child.expect ('User:')
      child.sendline (username)
      child.expect ('Password:')
      child.sendline (password)
      child.expect ("Controller")
      child.sendline ('config paging disable')
      #
      child.expect ("Controller")
      child.sendline ('show ap auto-rf' ['radio']['apname'])
      child.logfile = open(output , "w")
      child.expect ("Controller")
      child.sendline ('logout')
      child.expect('(y/N)')
      child.sendline ('N')
      child.expect(pexpect.EOF)

1 Ответ

0 голосов
/ 19 сентября 2018

Мне удалось исправить это с помощью конкатенации строк, чтобы объединить переменные в одну строку child.sendline ('show ap auto-rf' + radio + '' + apname)

...