SSH客户端实现方案一,执行远程命令
这个方案直接使用SSHClient对象的exec_command()在服务端执行命令,下面是具体代码:
# 实例化SSHClient
client = paramiko.SSHClient()
# 自动添加策略,保存服务器的主机名和密钥信息
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接SSH服务端,以用户名和密码进行认证
client.connect(ip,username=user,password=passwd)
# 打开一个Channel并执行命令
stdin,stdout,stderr = client.exec_command(command)
# 打印执行结果
print(stdout.readlines())
# 关闭SSHClient
client.close()
SSH客户端实现方案二,执行远程命令
这个方案是将SSHClient建立连接的对象得到一个Transport对象,以Transport对象的exec_command()在服务端执行命令,下面是具体代码:
# 实例化SSHClient
client = paramiko.SSHClient()
# 自动添加策略,保存服务器的主机名和密钥信息
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接SSH服务端,以用户名和密码进行认证
client.connect(ip,username=user,password=passwd)
# 实例化Transport,并建立会话Session
ssh_session = client.get_transport().open_session()
output = ''
if ssh_session.active:
ssh_session.exec_command(command)
while True:
if ssh_session.in_buffer.read_ready() is True:
output += ssh_session.recv(1024).decode(errors='ignore')
time.sleep(0.5)
print(output)
client.close()