使用pexpect来控制kpcli

时间:2015-11-24 17:27:28

标签: python pexpect keepass

我正在尝试使用keepassdb自动化ssh连接,我只是开始查询keypass kpcli shell的脚本。我希望它能在最后打印出结果。

# -*- 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 个答案:

答案 0 :(得分:0)

在这一行:

kp.expect=('Please provide the master password:')

您正在替换expect功能,而不是调用它。取出=

kp.expect('Please provide the master password:')

您使用kp.sendline做同样的事情,所以您也需要解决这个问题。