臨時命令行傳輸數據

起因

服務器爲內部服務器,從本機沒有直連渠道,只能基於novnc web管理,與本地之間無法互傳文件。

思路

從本地啓動臨時http服務,可以通過命令行上傳,下載文件,可以限制非服務器IP無法連接。

本地臨時http代碼

1、share.py (將服務器公網出口IP填入ALLOWED_IPS )

import http.server
import socketserver
import os
from http import HTTPStatus
import cgi

# 指定允許的IP地址
ALLOWED_IPS = ['192.168.1.2', '192.168.2.66']  # 請替換爲實際的IP地址

class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        # 檢查客戶端IP是否在允許列表中
        if self.client_address[0] in ALLOWED_IPS:
            super().do_GET()
        else:
            self.send_error(HTTPStatus.FORBIDDEN, "Access denied")

    def do_POST(self):
        # 檢查客戶端IP
        if self.client_address[0] in ALLOWED_IPS:
            form = cgi.FieldStorage(
                fp=self.rfile, 
                headers=self.headers,
                environ={'REQUEST_METHOD': 'POST'}
            )
            filename = form['file'].filename
            file_data = form['file'].file.read()
            with open(filename, 'wb') as f:
                f.write(file_data)
            self.send_response(HTTPStatus.OK)
            self.end_headers()
            self.wfile.write(b"File uploaded successfully")
        else:
            self.send_error(HTTPStatus.FORBIDDEN, "Access denied")

def run(server_class=http.server.HTTPServer, handler_class=CustomHTTPRequestHandler):
    server_address = ('', 1234)
    httpd = server_class(server_address, handler_class)
    print("Starting httpd server on port 1234")
    httpd.serve_forever()

if __name__ == "__main__":
    run()

2、share.bat

@echo off
setlocal

cd %USERPROFILE%\Desktop

if not exist share (
    mkdir share
)

cd %USERPROFILE%\Desktop\share

cmd /k "python share.py"

endlocal

服務器臨時下載上傳文件

1、下載文件命令

wget http://xxxx.com:1234/a.zip

2、上傳文件命令,其中/path/to/file爲要上傳的文件路徑,可以是相對路徑,注意:服務器上已存在同名文件會覆蓋。

curl -X POST -F "file=@/path/to/file" http://xxxx.com:1234
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章