2

ノードに接続してrpc呼び出しなどを行う小さなescriptファイルがあります...

短い名前でも長い名前でも問題なく動作しますが、分散 Erlang では標準の http 通信に依存しています。

使用したいのですが、配布用に https/SSL を使用しています。

SSL を使用して「通常の」Erlang システムを起動するには、さまざまなフラグを渡して、Erlang にそのように実行するように指示する必要があります

$ ERL_FLAGS="-boot \"/home/me/ssl/start_ssl\" -proto_dist inet_ssl 
  -ssl_dist_opt client_certfile \"/home/me/ssl/erlclient.pem\" 
  -ssl_dist_opt server_certfile \"/home/me/ssl/erlserver.pem\" 
  -ssl_dist_opt verify 1 -ssl_dist_opt depth 1"
$ export ERL_FLAGS
$ erl -sname ssl_test

inet_tcp_distこれにより、デフォルトの配布メカニズム ( ) が ssl の配布メカニズム ( ) に置き換えられますinet_ssl_dist

escriptは、erlang ファイルをシェル スクリプト ファイルとして実行します。

私の質問は次のとおりです。

  • デフォルトの代わりに安全な配布メカニズムを使用するために escript が実行される Erlang の「環境」を取得することは可能ですか?
  • もしそうなら、どうすればいいですか?
4

1 に答える 1

3

環境を介してこれらのフラグを設定する必要はありません。直接 に渡すこともできerlます。ch. 1.4はこちらerlフラグは、引数行を介してescriptに渡すことができます。%%!


z.escript

#!/usr/bin/env escript
%%! -boot start_ssl -proto_dist inet_ssl -ssl_dist_opt client_certfile /home/me/ssl/erlclient.pem -ssl_dist_opt server_certfile /home/me/ssl/erlserver.pem -ssl_dist_opt verify 1 -ssl_dist_opt depth 1
main(_) ->
    io:format("~p~n", [init:get_arguments()]).

zed@zed:~$ ./z.escript 
[{root,["/opt/erlang-R13B03/lib/erlang"]},
 {progname,["erl"]},
 {home,["/home/zed"]},
 {boot,["start_clean"]},
 {noshell,[]},
 {boot,["start_ssl"]},
 {proto_dist,["inet_ssl"]},
 {ssl_dist_opt,["client_certfile","/home/me/ssl/erlclient.pem"]},
 {ssl_dist_opt,["server_certfile","/home/me/ssl/erlserver.pem"]},
 {ssl_dist_opt,["verify","1"]},
 {ssl_dist_opt,["depth","1"]}]
于 2010-01-08T22:17:48.197 に答える