2016-08-18 19 views
2

ファイナライズ時にクライアントのネットワーク上で実行されるPHPスクリプトを作成する必要があります。私のコンピュータ(A)はそのネットワークに接続することはできませんが、その上に1台のサーバ(B)へのSSHアクセスがあります。 私のスクリプトは、そのネットワーク上の特定のポート上のWebサーバー(C)に対してcURL要求(証明書と秘密鍵付き)を実行する必要があります。もう一つの難点は、私はCサーバのIPを持たず、ネットワーク内でしか解決できないURLだけであるということです。サーバへのcURLの要求を送信サーバBにコンピュータAからcURLをSSHトンネル経由でリモートサーバーに送信

  1. オープンSSH接続
  2. :がサーバB及びCは、基本的に、私は3つのステップ(より多くが存在してもよい)を参照

    互いの間を通信することができます。 C(https://my.remote.server.domain.com:8444)とストア応答
  3. 閉じるSSH接続
事がある

、私はどのようにそれを行うには(私はすべての物事のネットワークrelatで基本的に無知だ見当がつかないed)。誰でも手掛かりがありますか?バッシュを使用して

答えて

1

$ ssh [email protected]_server << EOM 
curl http://remote.server/ > /home/user/file 
EOM 
$ scp [email protected]_server:/home/user/file local_file 

この最初の部分は、あなたのSSHサーバー(ssh_server)に接続し、(SSHサーバ上で)ローカルにカールを実行し、ファイルを保存します。次に、ローカルマシン上のファイルをダウンロードするためにscpが使用されます。

一時ファイルを作成するのが最も簡単な方法でしょう。あなたは、/ tmpにそれを作成(と、あなたが本当にそこにそのファイルを持っ我慢できない場合は、ssh + RMを使用して、後でそれを削除します。)ができ

$ ssh [email protected]_server 'rm /tmp/file' 

最後に、汚れ(およびをお勧めしません)方法をファイルを作成しないために以下の通りです:私はおそらく、すべてのコストで、再びこの手法は避けるべきであることを言及する必要があります

$ ssh [email protected]_server << EOM 
curl http://remote/server | nc -l 1234 & 
exit 
$ nc ssh_server 1234 > file 

、それは暗号化されていないデータを転送し、一切の認証を必要としないからです。また、コマンドが実行される前に、他の誰かが同じポート(1234)を使用してサーバーに接続し、結果を取得して、スクリプトをハングアップさせておくこともできます。

最後に、これを使用しないでください。

+0

サーバーBにファイルを作成することはどうしてですか?私はちょうど応答を直接得ることができません(それは唯一のJSON文字列です) – 3rgo

+0

私は私の頭の上からいくつかのソリューションで私の答えを更新しました。 – fgiobergia