kingcmy 发表于 2016-02-17 15:11

windows下使用paramiko进行SSH的连接和交互不成功

我想通过python脚本去自动抓取山石防火墙上的配置实现定期备份,但是用paramiko进行不成功,无论什么命令都没有回显
代码如下:
#-*- coding: utf-8 -*-
import paramiko,time
#paramiko.util.log_to_file('C:\Users\Administrator\Desktop\2.txt')
def ssh2(ip,username,passwd,cmd):
    try:
      ssh = paramiko.SSHClient()
      ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
      ssh.connect(ip,22,username,passwd,timeout=5)
      stdin,stdout,stderr = ssh.exec_command(cmd)
      print stdout.read()
      for x instdout.readlines():
          print x.strip("\n")
      print '%s\tOK\n'%(ip)
      ssh.close()
    except :
      print '%s\tError\n'%(ip)
ssh2("172.16.0.1","xxxx","xxxx","show config")
回显如下:

同样的代码 连接思科交换机是有正常回显的:

问题如下:
这个是什么问题?怎么解决?
怎么能看到连接的状态?(是否连接上?命令是否正常执行了?)

jixuuse 发表于 2016-02-17 16:41

我记得要用标准输入输出来抓取,如果有错误提示,你没用错误输出显示,就会hang在那里#!/usr/bin/python

import paramiko

paramiko.util.log_to_file('/root/pyscript/log.log')

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('1.1.1.1',port=22,username='123',password='1234567,.')

stdin,stdout,stderr=ssh.exec_command('ls')

ssh.close()

kingcmy 发表于 2016-02-17 17:00

不行 我用你的脚本试了还是这样。。。山石没有任何回显,思科回显正常
我觉得是不是里面少了什么参数。。。

jixuuse 发表于 2016-02-17 16:41 static/image/common/back.gif
我记得要用标准输入输出来抓取,如果有错误提示,你没用错误输出显示,就会hang在那里

jixuuse 发表于 2016-02-17 17:40

有可能是设备系统的问题,你试试用telnet链接显示是否正常。

有些嵌入式系统ssh连过去执行了enable之类的指令以后是自己起了一个应用cli,导致ssh抓不到数据:lol

kingcmy 发表于 2016-02-17 17:56

telnet我之前就试过山石可以成功
SSH这边我测试了思科 山石和华为
结果是思科能正常显示,山石无回显 华为直接卡住
如果是另起cli那山石的telnet应该也是无回显的对吧?并且我也没有enable
感谢你的指导!
回复 4# jixuuse


   

jixuuse 发表于 2016-02-17 18:16

我这么说是因为我这边公司自己做的AP就是这么操作的:lol,所以知道有这么个坑,SSH连过去实际是系统自己执行了一个telnet 127.0.0.1的操作;P,如果你用程序去抓,有可能抓不到数据,直接telnet连一切正常

kingcmy 发表于 2016-02-17 18:21

谢谢你的解答哈!{:qq23:}
回复 6# jixuuse


   
页: [1]
查看完整版本: windows下使用paramiko进行SSH的连接和交互不成功