LoginSignup
2
2

More than 5 years have passed since last update.

サーバーにファイルが送りづらいときの対処法

Posted at

はじめに

環境
クライアント
Windows 10

サーバー
ESXi-> PhotonOS -> Dockerコンテナ

ESXiのブラウザコンソールでDockerコンテナ内にログインできるが、ssh/ftpも立ち上がってないのでファイルを転送するのが一苦労でした。
また、大人の事情でポートが塞がれてファイルが送れない場合もあるかと思います。

このように、サーバーにはログインできるけどファイルを送るのが大変なときがあったので解決してみました。

設計

クライアントからサーバーに繋ぐのが難しいのであれば、サーバーからクライアントに繋いでもらう設計にしました。
具体的に言うと、クライアントでファイルサーバー/アップローダーを立ち上げ、サーバー側のwget/curlでファイルを送受信します。
さらに、クライアントがポート開放できない環境だったため、ngrokを利用してアクセスしています。

実装

プロジェクト一式
github

一部抜粋

func main() {
    http.Handle("/files/", http.StripPrefix("/files/", http.FileServer(http.Dir("files/"))))
    panic(http.ListenAndServe(":8080", nil))
}

ファイルダウンロード

wget http://localhost:8080/files/fileName

ファイルアップロード

curl -X POST http://localhost:8080/upload -F "file=@filePah"

ブラウザが利用できる環境であればTopページでファイルアップロード
http://localhost:8080/files/ でファイル一覧の表示が可能です

まとめ

環境構築がめんどくさかったり、ファイル転送のためだけにssh等のセキュリティリスクを増やすのであれば
このような実装もありだと思います!

もっといい方法ありましたら教えていただけると幸いです!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2