2016-08-16 54 views
0

我想连接到网络设备。但是在政策方面,我必须首先成功地将ssh发送到终端服务器,然后从该终端服务器ssh到网络设备。在Python中,我使用Paramiko:通过终端服务器创建SSH会话连接到设备

import paramiko 
ssh = paramiko.SSHClient() 
print("OTP : ") 
otp = raw_input() 
ssh.port=9922 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.load_system_host_keys() 
ssh.connect('10.0.0.1',9922,username='khangtt',password=str('12345')+str(otp)) 

stdin, stdout, stderr = ssh.exec_command('whoami') 
stdin.close() 
for line in stdout.read().splitlines(): 
    print(line) 

连接到服务器成功,我可以在输出中看到我的用户名。但我不知道如何SSH到设备。我用这一点,但没有发生设置输入用户名/密码:

stdin, stdout, stderr = ssh.exec_command('telnet 10.80.1.120') 
stdin.close() 
for line in stdout.read().splitlines(): 
    print(line) 

回答

0

由于您使用的paramiko,这里使用的文档:https://pynet.twb-tech.com/blog/python/paramiko-ssh-part1.html。它非常明确。

或者你也可以试试这里的代码进行连接:

ssh.connect('10.0.0.1', 'khangtt', str('12345')+str(otp), look_for_keys=False, allow_agent=False) 

或者

ssh.connect('10.0.0.1', 'khangtt', str('12345')+str(otp)) 

的情况下,你不需要寻找钥匙,并允许代理。

+0

尝试主机密钥策略设置为:ssh.set_missing_host_key_policy( paramiko.AutoAddPolicy()) – d3r1ck

+0

你也可以在这里找到更多的单证:http://jessenoller.com/blog/2009/02/05/ssh-programming -with-的paramiko-完全-不同 – d3r1ck