【求解】网络自动化之python(3):“超快”的ssh2-python是不是有点邪?

点击查看代码
from __future__ import print_function
import os
import socket
from time import time
import xlwt

from ssh2.session import Session
from ssh2.session import LIBSSH2_HOSTKEY_HASH_SHA1, LIBSSH2_HOSTKEY_TYPE_RSA
from ssh2.knownhost import LIBSSH2_KNOWNHOST_TYPE_PLAIN, \
    LIBSSH2_KNOWNHOST_KEYENC_RAW, LIBSSH2_KNOWNHOST_KEY_SSHRSA, LIBSSH2_KNOWNHOST_KEY_SSHDSS

star = time()

host = b'192.168.10.10'
user = 'admin'
# user = os.getlogin()
known_hosts = os.sep.join([os.path.expanduser('~'), '.ssh', 'known_hosts'])

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, 22))

session = Session()
session.handshake(sock)

host_key, key_type = session.hostkey()

server_key_type = LIBSSH2_KNOWNHOST_KEY_SSHRSA \
                  if key_type == LIBSSH2_HOSTKEY_TYPE_RSA \
                     else LIBSSH2_KNOWNHOST_KEY_SSHDSS

kh = session.knownhost_init()
_read_hosts = kh.readfile(known_hosts)
print("Read %s hosts from known hosts file at %s" % (_read_hosts, known_hosts))

type_mask = LIBSSH2_KNOWNHOST_TYPE_PLAIN | \
            LIBSSH2_KNOWNHOST_KEYENC_RAW | \
            server_key_type
kh.checkp(host, 22, host_key, type_mask)
print("Host verification passed.")

session.userauth_password('admin','h3c_test')
channel = session.open_session()
channel.execute('dis transceiver manuinfo interface | include Serial')
channel.wait_eof()
channel.close()
channel.wait_closed()

print("Exit status: %s" % channel.get_exit_status())

size, data = channel.read()
while size > 0:
    size, data = channel.read()
    config = str(data,encoding='utf-8').split('\n')
    print('*' * 8)
    for line in config:
        print(line.strip())
    print('*' * 8)
    break
end = time()
print(end-star)
posted @ 2022-02-26 00:31  段愿仁长九  阅读(124)  评论(0)    收藏  举报