我有一个使用pexpect
模块ssh到设备的python脚本。它基本上运行以下
$ ssh hostname -l username
做:
>>> import pexpect.pxssh as pxssh
>>> conn = pxssh.pxssh()
>>> conn.login(hostname, username, password, terminal_type='vt100')
>>> ...
现在,我正在尝试使用StrictHostKeyChecking=no
选项实现相同的脚本。为此,我按照pexpect
的{{3}}添加options={}
,如下所示。但是,它会引发以下TypeError
。
>>> import pexpect.pxssh as pxssh
>>> conn = pxssh.pxssh(options={'StrictHostKeyChecking':'no',})
Exception AttributeError: "'pxssh' object has no attribute 'closed'" in <bound method pxssh.__del__ of <pexpect.pxssh.pxssh object at 0x7f96294aded0>> ignored
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument 'options'
我环顾四周,找不到解决这个问题的方法。这是一个已知的问题,如果是,是否有任何黑客攻击?
我的设置如下:
>>> print pexpect.__version__
3.1
似乎是最后一个版本
$ apt-cache policy python-pexpect
python-pexpect:
Installed: 3.1-1ubuntu0.1
Candidate: 3.1-1ubuntu0.1
答案 0 :(得分:0)
在当前的pexpect版本中,传递ssh config选项的操作如文档所述。
例如,以下代码可与pexpect-4.3(使用Python 3.6 / Linux)配合使用:
s = pxssh.pxssh(options={
'StrictHostKeyChecking': 'yes',
'HostKeyAlgorithms': 'ssh-ed25519',
'UserKnownHostsFile': 'known-horsts',
},
timeout=3)
s.login('example.org', 'juser')