Использование pexpect для управления kpcli
Я пытаюсь автоматизировать ssh-соединение, используя keepassdb, и я только запускаю скрипт для опроса оболочки ключа kpcli. Я хочу распечатать результат в конце.
# -*- coding: utf -*-
import os,sys
import pexpect
global str
db_kp='/media/sf_VM_shared/passwords.kdb'
pass_kp='KDBPASSWORD'
kp = pexpect.spawn('/usr/bin/kpcli')
kp.expect('>')
kp.sendline=('open /media/sf_VM_shared/passwords.kdb')
kp.expect=('Please provide the master password:')
kp.sendline=(pass_kp)
kp.expect('>')
kp.sendline=('cd General/Network/Firewalls/SSH/')
kp.expect=('kpcli:/General/Network/Firewalls/SSH>')
kp.sendline=("show -f 0")
print(kp.before)
Я получаю следующее при попытке запустить файл:
python3 ssh_firewall.py
Traceback (most recent call last):
File "ssh_firewall.py", line 12, in <module>
kp.expect('>')
TypeError: 'str' object is not callable
1 ответ
На этой линии:
kp.expect=('Please provide the master password:')
Вы заменяете expect
функция, а не вызывая ее. Возьмите =
из:
kp.expect('Please provide the master password:')
Вы делаете то же самое с kp.sendline
так что вам нужно будет это исправить.