一、基础功能介绍
# coding=utf-8
import paramiko
from time import sleep
# 建立通信
transport = paramiko.Transport(('192.168.0.7', 22))
print(transport) # <paramiko.Transport at 0x5745ed0 (unconnected)>
# 建立连接
transport.connect(username='root', password='123456')
print(transport) # <paramiko.Transport at 0x5745ed0 (cipher aes128-ctr, 128 bits) (active; 0 open channel(s))>
# 注意 active 此时为0
# 开启一个信道
channel = transport.open_session()
print(channel) # <paramiko.Channel 0 (open) window=0 -> <paramiko.Transport at 0x5745ed0 (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>
# 调用open_session后,active为1,表示已打开channel。此时只能下发命令,收不到回显
# 设置信道获取信息的超时时间。因为在调用 channel.recv(65535) 方法时 会阻塞执行,不设置就会卡死。
channel.timeout = 10
# 开启终端,进入交互模式
channel.get_pty()
channel.invoke_shell()
sleep(2) # 是为了一次能显示完所有回显,如果不等待2秒,获取的回显可能不完整。
# 检查通道是否有数据。若没有,则返回False,注意:不能用来判断已回显完。当下发命令后,执行出现卡顿,在卡顿期间信道是没有数据的。
channelStatus = cha