我是robotframework和netmiko的初学者。我试着用python中的netmiko来打印whoami。
import netmiko
mydevice = {
'device_type': 'linux',
'ip': '127.0.0.1',
'username': 'gns3',
'password': 'gns3',
'verbose':True
}
conn = netmiko.ConnectHandler(**mydevice)
cmd = 'whoami\n'
output = conn.send_command(cmd)
def display_cmd():
print(conn.find_prompt() + cmd + output + '\n')
if __name__ == '__main__':
print (display_cmd())看起来很管用。
gns3@gns3vm:~/project$ python netmiko_test.py
SSH connection established to 127.0.0.1:22
Interactive SSH session established
gns3@gns3vm:~$whoami
gns3
None然后我试着在这里创建快速简单的机器人文件。
*** Settings ***
Library netmiko_test.py
*** Test Case ***
whoami display whoami
*** Keywords ***
display whoami
${result} display cmd
Log To Console ${result}我原以为所有PASS都在log.html中会有相同的python输出,但出现了以下错误。
gns3@gns3vm:~/project$ robot rf_test.robot
[ ERROR ] Error in file '/home/gns3/project/rf_test.robot': Importing test library '/home/gns3/project/netmiko_test.py' failed: SSHException: No existing session
Traceback (most recent call last):
File "/home/gns3/project/netmiko_test.py", line 11, in <module>
conn = netmiko.ConnectHandler(**mydevice)
File "/usr/local/lib/python2.7/dist-packages/netmiko/ssh_dispatcher.py", line 131, in ConnectHandler
return ConnectionClass(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/netmiko/base_connection.py", line 151, in __init__
self.establish_connection()
File "/usr/local/lib/python2.7/dist-packages/netmiko/base_connection.py", line 532, in establish_connection
self.remote_conn_pre.connect(**ssh_connect_params)
File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 391, in connect
server_key = t.get_remote_server_key()
File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 718, in get_remote_server_key
raise SSHException('No existing session')
PYTHONPATH:
/usr/local/bin
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
==============================================================================
Rf Test
==============================================================================
whoami | FAIL |
No keyword with name 'display cmd' found.
------------------------------------------------------------------------------
Rf Test | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
Output: /home/gns3/project/output.xml
Log: /home/gns3/project/log.html
Report: /home/gns3/project/report.html你能告诉我哪里错了吗?
谢谢。
发布于 2017-10-23 13:35:13
如果您发布的文件与您运行的文件相同,那么我猜您没有使用正确的函数来打印到控制台。也就是说,这是一个相当小的示例,我将其格式化为一个库。因为我没有运行Netmiko的选项,所以我无法正确地测试。
import netmiko
class NetmikoLibrary(object):
ROBOT_LIBRARY_VERSION = 1.0
def __init__(self):
pass
def display_cmd(self, cmd = 'whoami\n'):
'''
This is my Netmiko keyword to execute a command.
'''
mydevice = {
'device_type': 'linux',
'ip': '127.0.0.1',
'username': 'gns3',
'password': 'gns3',
'verbose':True
}
conn = netmiko.ConnectHandler(**mydevice)
output = conn.send_command(cmd)
return output这确实意味着你可以加载你的库稍有不同:Library NetmikoLibrary。
发布于 2017-10-24 01:47:30
谢谢你,库特拉。我不知道所有变量必须在执行命令( display_cmd )中,但我认为即使位于display_cmd之外,也可以对所有内容进行寻址。
在display_cmd内部重新定位变量后,它现在可以工作了。
import netmiko
def display_cmd():
mydevice = {
'device_type': 'linux',
'ip': '127.0.0.1',
'username': 'gns3',
'password': 'gns3',
'verbose':True
}
conn = netmiko.ConnectHandler(**mydevice)
cmd = 'whoami\n'
output = conn.send_command(cmd)
return (conn.find_prompt() + cmd + output + '\n')
if __name__ == '__main__':
print (display_cmd())像这样的结果,都通过了。
gns3@gns3vm:~/project$ robot rf_test.robot
==============================================================================
Rf Test
==============================================================================
whoami gns3@gns3vm:~$whoami
gns3
whoami | PASS |
------------------------------------------------------------------------------
Rf Test | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output: /home/gns3/project/output.xml
Log: /home/gns3/project/log.html
Report: /home/gns3/project/report.html谢谢。
https://stackoverflow.com/questions/46878558
复制相似问题