單位內外網是隔離的,USB對拷線被禁用,安全優盤使用太費事,就想到了通過串口傳輸文件.
import serial
from xmodem import XMODEM
import osdef Send_File(filepath, port='COM8', baudrate=115200):bn = os.path.basename(filepath)filesize = os.stat(filepath).st_sizestrSendFileCMD = "AFF_" + str(filesize) + "_" + bn + "\n"# 打開串口ser = serial.Serial(port, baudrate)# 定義YMODEM發送函數def send_ymodem(filename):def getc(size, timeout=1):return ser.read(size)def putc(data, timeout=1):return ser.write(data)modem = XMODEM(getc, putc)with open(filename, "rb") as f:status = modem.send(f)return status# 發送指令ser.write(strSendFileCMD.encode())# 發送文件status = send_ymodem(filepath)if status:print(f"文件發送成功:{filepath}")else:print(f"文件發送失敗:{filepath}")# 關閉串口ser.close()def Recv_File(port='COM2', baudrate=115200):# 打開串口ser = serial.Serial(port, baudrate)# 定義YMODEM接收函數def recv_ymodem(filename):def getc(size, timeout=1):return ser.read(size) or Nonedef putc(data, timeout=1):return ser.write(data)modem = XMODEM(getc, putc)with open(filename, "wb") as f:status = modem.recv(f)return status# 循環監聽指令while True:# 接收指令print("等待接收指令")strCMD = ser.read_until().strip().decode()print(strCMD)cmdlist = strCMD.split("_")cmd = cmdlist[0]filesize = cmdlist[1]filename = cmdlist[2]if cmd == "AFF":# 收到指令后開始接收文件print("開始接收文件")# 接收文件并保存status = recv_ymodem(filename)if status:print(f"文件接收成功:{filename}")else:print(f"文件接收失敗:{filename}")# 繼續監聽指令continue# 其他指令print(f"收到指令:{cmd}")# 關閉串口ser.close()if __name__=="__main__":Send_File("D:/users.7z") #發送文件#Recv_File() #接收文件
上面是簡單的文件傳輸代碼.
我目前內外網傳輸最多的就是截圖,內網通過串口給外網發送指令,外網根據指令截圖,然后自動傳回內網,不用切換電腦,不用插拔優盤,確實方便.