在robotframework中导入python netmiko库
我开始学习机器人框架和netmiko。 我试图用python中的netmiko打印whoami在robotframework中导入python netmiko库,robotframework,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
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}
我原以为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
gns3@gns3vm:~/project$robot rf\u test.robot
[ERROR]文件“/home/gns3/project/rf_test.robot”中的错误:导入测试库“/home/gns3/project/netmiko_test.py”失败:SSHException:没有现有会话
回溯(最近一次呼叫最后一次):
文件“/home/gns3/project/netmiko_test.py”,第11行,在
conn=netmiko.ConnectHandler(**mydevice)
ConnectHandler中的文件“/usr/local/lib/python2.7/dist packages/netmiko/ssh_dispatcher.py”,第131行
返回ConnectionClass(*args,**kwargs)
文件“/usr/local/lib/python2.7/dist-packages/netmiko/base\u connection.py”,第151行,in\uu init__
self.building_connection()
文件“/usr/local/lib/python2.7/dist packages/netmiko/base\u connection.py”,第532行,位于建立连接中
self.remote\u conn\u pre.connect(**ssh\u connect\u参数)
文件“/usr/local/lib/python2.7/dist-packages/paramiko/client.py”,第391行,在connect中
服务器密钥=t.获取远程服务器密钥()
文件“/usr/local/lib/python2.7/dist packages/paramiko/transport.py”,第718行,在get_remote_server_key中
引发SShexException('没有现有会话')
蟒蛇:
/usr/本地/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
==============================================================================
射频测试
==============================================================================
哇!失败|
找不到名为“display cmd”的关键字。
------------------------------------------------------------------------------
射频测试|失败|
1个关键测试,0个通过,1个失败
共1个测试,0个通过,1个失败
==============================================================================
输出:/home/gns3/project/Output.xml
Log:/home/gns3/project/Log.html
报告:/home/gns3/project/Report.html
你能告诉我哪里不对吗
谢谢。如果您发布的文件与您运行的文件相同,那么我猜您没有使用正确的功能打印到控制台。这就是说,因为这是一个相当小的示例,我为您格式化了一个库。由于我没有运行
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
如果您发布的文件与您运行的文件相同,那么我猜您没有使用正确的函数打印到控制台。这就是说,因为这是一个相当小的示例,我为您格式化了一个库。由于我没有运行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
谢谢库特拉。我不知道所有变量都必须在执行命令(display\u cmd)中,但我认为所有内容都可以寻址,即使它们位于display\u 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())
在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
谢谢。谢谢库特拉。我不知道所有变量都必须在执行命令(display\u cmd)中,但我认为所有内容都可以寻址,即使它们位于display\u 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())
在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
谢谢。Python文件的名称是什么?代码“netmiko_test.py”中的名称相同?代码“netmiko_test.py”中的名称相同