python实现批量远程电脑传输文件
通过Visual Studio Code软件,python实现远程电脑批量传输文件。可以实现远程电脑上传文件,远程电脑删除文件,远程电脑解压文件,远程电脑退出程序。(可以扩展的功能:只要是在远程电脑的终端的命令能实现的功能都可以扩展。)
python通过scp实现批量远程电脑传输文件
from array import array
from sys import stderr
from time import time
import paramiko # 用于调用scp命令
from scp import SCPClient
import openpyxl
# 将指定目录的图片文件上传到服务器指定目录
# remote_path远程服务器目录
# file_path本地文件夹路径
# img_name是file_path本地文件夹路径下面的文件名称
def upload_img(FileName, remote_path="/Users/gdlocal/Desktop/", file_path="/Users/holmes/Desktop/"):
# img_name示例:07670ff76fc14ab496b0dd411a33ac95-6.webp
port = 22 # 端口号
username = "gdlocal" # ssh 用户名
password = "gdlocal" # 密码
i = 0
while i < len(arr):
host = arr[i] # 服务器ip地址
i = i + 1
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(
paramiko.AutoAddPolicy) # 加载创建的ssh白名单
ssh_client.connect(host, port, username, password)
scpclient = SCPClient(ssh_client.get_transport(), socket_timeout=15.0)
local_path = file_path + FileName
try:
scpclient.put(local_path, remote_path)
except FileNotFoundError as e:
print(e)
print(host + "文件上传失败...........................................")
else:
print(host + "文件上传成功")
ssh_client.close()
def unzip():
port = 22 # 端口号
username = "gdlocal" # ssh 用户名
password = "gdlocal" # 密码
i = 0
while i < len(arr):
host = arr[i] # 服务器ip地址
i = i + 1
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(
paramiko.AutoAddPolicy) # 加载创建的ssh白名单
ssh_client.connect(host, port, username, password)
scpclient = SCPClient(ssh_client.get_transport(), socket_timeout=15.0)
try:
stdin, stdout, stderr = ssh_client.exec_command(
"[ -f /Users/gdlocal/Desktop/WiPASXNextCR.zip ] && echo OK") # 判断远程电脑解压的文件存不存在
# print(stdout.read())
if stdout.read() == b'OK\n':
stdin, stdout, stderr = ssh_client.exec_command(
"open /Users/gdlocal/Desktop/WiPASXNextCR.zip") # 解压文件名
print(host + "解压的文件存在,解压成功")
else:
print(host + "解压的文件不存在......................................")
except FileNotFoundError as e:
print(e)
print(host + "文件解压失败.....................................")
else:
print("\n")
ssh_client.close()
def delete():
port = 22 # 端口号
username = "gdlocal" # ssh 用户名
password = "gdlocal" # 密码
i = 0
while i < len(arr):
host = arr[i] # 服务器ip地址
i = i + 1
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(
paramiko.AutoAddPolicy) # 加载创建的ssh白名单
print("1")
ssh_client.connect(host, port, username, password)
print("2")
scpclient = SCPClient(ssh_client.get_transport(), socket_timeout=15.0)
try:
stdin, stdout, stderr = ssh_client.exec_command(
"[ -a /Users/gdlocal/Desktop/WiPASXNextCR.app ] && echo OK") # 判断远程电脑指定文件存不存在
# print(stdout.read())
if stdout.read() == b'OK\n':
stdin, stdout, stderr = ssh_client.exec_command(
"rm -rf /Users/gdlocal/Desktop/WiPASXNextCR.app") # 删除远程电脑上的指定文件
print(host + "删除的文件存在,删除成功")
else:
print(host + "删除的文件不存在............................................")
except FileNotFoundError as e:
print(e)
print(host + "-1.............................")
else:
print("\n")
ssh_client.close()
def killApp():
port = 22 # 端口号
username = "gdlocal" # ssh 用户名
password = "gdlocal" # 密码
i = 0
while i < len(arr):
host = arr[i] # 服务器ip地址
i = i + 1
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(
paramiko.AutoAddPolicy) # 加载创建的ssh白名单
ssh_client.connect(host, port, username, password, compress=True)
scpclient = SCPClient(ssh_client.get_transport(), socket_timeout=15.0)
try:
stdin, stdout, stderr = ssh_client.exec_command(
"killall WiPASXNext") # 退出远程电脑的指定程序
except FileNotFoundError as e:
print(e)
print(host + "-1.............................")
else:
print("远程电脑退出程序成功")
ssh_client.close()
def ip():
wb = openpyxl.load_workbook(
'/Users/holmes/Visual_Studio_Code/data/ip.xlsx')
# 显示有多少张工作表
# print(wb.get_sheet_names())
# 取第一张工作表
#ws = wb.sheetnames[0]
ws = wb.get_sheet_by_name(wb.sheetnames[0])
print("\n")
# 显示表名,表行数,表列数
# print(ws)
#print("行数:", ws.max_row)
#print("列数:", ws.max_column)
# 建立存储数据的字典
#data_dic = {}
for rx in range(1, ws.max_row+1):
arr.append(ws.cell(row=rx, column=1).value)
if __name__ == '__main__':
file = "WiPASXNextCR.zip"
arr = []
ip()
upload_img(file) #上传文件
# unzip() #解压文件
# delete() #删除文件
# killApp() #退出程序