(一)基于用户名密码的远程登录加命令执行
import paramiko
#创建ssh链接实例
ssh = paramiko.SSHClient()
#创建白名单,默认不询问, 即允许连接不在known_hosts文件中的主机
known_hosts = paramiko.AutoAddPolicy()
ssh.set_missing_host_key_policy(known_hosts)
#链接服务器
ssh.connect(
hostname = "10.10.65.65", # inux主机
port = 22, #端口,默认22
username = "chen", #用户名 ,也可登录到root
password = "123" #密码
)
#执行命令
stdin,stdout,stderr = ssh.exec_command("ls /")
#ssh.exec_command() 返回三个类文件对象
#stdin是远程主机接收我们写入到数据,stdout是远程主机向我们输出信息
#stdin 是写权限的文件对象,标准输入
#stdout 是读权限的文件对象,标准输出
#stderr 是读权限的文件对象,标准错误,特殊的输出
#查看执行结果
result = stdout.read().decode() # 得到远程主机的输出
print(result)
#关闭链接,释放内存
ssh.close()
(二)基于多线程的远程登录
import threading
def Exec(command,ip,user,passwd,port = 22):
"""
编写执行命令的模块
"""
ssh = paramiko.SSHClient()
know_hosts = paramiko.AutoAddPolicy()
ssh.set_missing_host_key_policy(know_hosts)
ssh.connect(
hostname = ip,
port = port,
username = user,
password = passwd