第三方包 基于ssh服务 可以使用python实现ssh功能
pip install paramiko
1.导包import paramiko
2.创建一个客户端
3.创建一个白名单(本地创建一个白名单)
4.设置不提醒(把白名单加到客户端)
5.连接服务器
6.执行linux命令
7.查看输出结果
8.关闭连接
import paramiko
# 创建一个客户端
ssh = paramiko.SSHClient()
# 创建一个白名单
know_host = paramiko.AutoAddPolicy()
# 设置不提醒
ssh.set_missing_host_key_policy(know_host)
# 连接服务器
ssh.connect(hostname = '10.10.107.84',port=22,username='root',password='123456')
# 执行linux命令
stdin, stdout, stderr = ssh.exec_command('mkdir /home/zhy/Desktop/g')
# stdin 标准输入 文件对象 写权限
# stout 标准的输出 文件对象 读权限
# stderr 特殊的输出 文件独享 读权限
# 查看输出结果,输出结果是一个对象,文件对象可以用read()读出来,传出来是二进制对象,用decode解码
print(stdout.read().decode())
# 关闭连接
ssh.close()
import threading
import paramiko
class MyThread(threading.Thread):
def __init__(self,host,user,pwd,port=22):
self.host=host
self.user=user
self.pwd=pwd
self.port=port
super(MyThread, self).__init__()
def run(self):
# 创建客户端
ssh = paramiko.SSHClient()
# 设置白名单不提醒
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
# 连接
ssh.connect(hostname=self.host,port=self.port,username=self.user,password=self.pwd)
# 执行命令
stdin,stdout,stderr=ssh.exec_command('mkdir /opt/love')
print(stdout.read().decode())
# 关闭连接
ssh.close()
if __name__ == '__main__':
data = [
{'host':'ip1','user':'root','password':'root123'},
{'host': 'ip2', 'user': 'root', 'password': '123456'},
{'host': 'ip3', 'user': 'root', 'password': '123456'},
{'host': 'ip4', 'user': 'root', 'password': '123456'},
]
tlist = []
for i in data:
t = MyThread(host=i['host'],user=i['user'],pwd=i['password'])
tlist.append(t) #实例化对象并传参
for i in tlist:
i.start()
import paramiko
# 创建客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接
ssh.connect(hostname='10.10.107.84',port=22,username='root',password='123456')
# 创建一个shell
shell = ssh.invoke_shell()
shell.settimeout(1)
# 获取命令
command = input('>>') + '\n'
# 发送命令
shell.send(command)
while True:
if command == 'q' + '\n':
break
try:
# 获取返回的结果
recv = shell.recv(512).decode()
if recv:
print(recv)
else:
continue
except:
command = input('>>') + '\n'
# 发送命令
shell.send(command)
ssh.close()
import paramiko
trans = paramiko.Transport(sock=('10.10.107.84'))
trans.connect(username='root',password='123456')
sftp = paramiko.SFTPClient.from_transport(trans)
# put('你要上传的文件','上传的位置')
# sftp.put('jiandandian','/opt/newjdd')
# get('你要下载的文件','下载的位置')
sftp.get('/opt/newjdd','love')
sftp.close()