xenial (1) erl_call.1.gz

Provided by: erlang-base-hipe_18.3-dfsg-1ubuntu3.1_amd64 bug

NAME

       erl_call - Call/Start a Distributed Erlang Node

DESCRIPTION

       erl_call  makes  it possible to start and/or communicate with a distributed Erlang node. It is built upon
       the erl_interface library as an example application. Its purpose is  to  use  an  Unix  shell  script  to
       interact  with a distributed Erlang node. It performs all communication with the Erlang rex server, using
       the standard Erlang RPC facility. It does not require any special software to be run at the Erlang target
       node.

       The  main use is to either start a distributed Erlang node or to make an ordinary function call. However,
       it is also possible to pipe an Erlang module to erl_call and have it compiled, or to pipe a  sequence  of
       Erlang expressions to be evaluated (similar to the Erlang shell).

       Options,  which  cause  stdin  to be read, can be used with advantage as scripts from within (Unix) shell
       scripts. Another nice use of erl_call could be from (http) CGI-bin scripts.

EXPORTS

       erl_call <options>

              Each option flag is described below with its name, type and meaning.

                -a [Mod [Fun [Args]]]]:
                  (optional): Applies the specified function and returns the  result.  Mod  must  be  specified,
                  however start and [] are assumed for unspecified Fun and Args, respectively. Args should be in
                  the same format as for erlang:apply/3. Note that this flag  takes  exactly  one  argument,  so
                  quoting  may  be  necessary  in order to group Mod, Fun and Args, in a manner dependent on the
                  behavior of your command shell.

                -c Cookie:
                  (optional): Use this option to specify a certain  cookie.  If  no  cookie  is  specified,  the
                  ~/.erlang.cookie  file  is read and its content are used as cookie. The Erlang node we want to
                  communicate with must have the same cookie.

                -d:
                  (optional): Debug mode. This causes all IO to be output to the file  ~/.erl_call.out.Nodename,
                  where Nodename is the node name of the Erlang node in question.

                -e:
                  (optional):  Reads  a  sequence  of Erlang expressions, separated by ',' and ended with a '.',
                  from stdin until EOF (Control-D). Evaluates the expressions and returns the  result  from  the
                  last expression. Returns {ok,Result} if successful.

                -h HiddenName:
                  (optional): Specifies the name of the hidden node that erl_call represents.

                -m:
                  (optional): Reads an Erlang module from stdin and compiles it.

                -n Node:
                  (one  of  -n,  -name, -sname is required): Has the same meaning as -name and can still be used
                  for backwards compatibility reasons.

                -name Node:
                  (one of -n, -name, -sname is required): Node is  the  name  of  the  node  to  be  started  or
                  communicated  with.  It is assumed that Node is started with erl -name, which means that fully
                  qualified long node names are used. If the -s  option  is  given,  an  Erlang  node  will  (if
                  necessary) be started with erl -name.

                -q:
                  (optional):  Halts  the Erlang node specified with the -n switch. This switch overrides the -s
                  switch.

                -r:
                  (optional): Generates a random name of the hidden node that erl_call represents.

                -s:
                  (optional): Starts a distributed Erlang node if necessary. This means that in  a  sequence  of
                  calls,  where  the  '-s' and '-n Node' are constant, only the first call will start the Erlang
                  node. This makes the rest of  the  communication  very  fast.  This  flag  is  currently  only
                  available on the Unix platform.

                -sname Node:
                  (one  of  -n,  -name,  -sname  is  required):  Node  is  the name of the node to be started or
                  communicated with. It is assumed that Node is started with erl -sname which means  that  short
                  node names are used. If -s option is given, an Erlang node will be started (if necessary) with
                  erl -sname.

                -v:
                  (optional): Prints a lot of verbose information. This is only useful  for  the  developer  and
                  maintainer of erl_call.

                -x ErlScript:
                  (optional): Specifies another name of the Erlang start-up script to be used. If not specified,
                  the standard erl start-up script is used.

EXAMPLES

       Starts an Erlang node and calls erlang:time/0.

       erl_call -s -a 'erlang time' -n madonna
       {18,27,34}

       Terminates an Erlang node by calling erlang:halt/0.

       erl_call -s -a 'erlang halt' -n madonna

       An apply with several arguments.

       erl_call -s -a 'lists map [{math,sqrt},[1,4,9,16,25]]' -n madonna

       Evaluates a couple of expressions. The input ends with EOF (Control-D).

       erl_call -s -e -n madonna
       statistics(runtime),
       X=1,
       Y=2,
       {_,T}=statistics(runtime),
       {X+Y,T}.
       ^D
       {ok,{3,0}}

       Compiles a module and runs it. Again, the input ends with EOF (Control-D). (In  the  example  shown,  the
       output has been formatted afterwards).

       erl_call -s -m -a lolita -n madonna
       -module(lolita).
       -compile(export_all).
       start() ->
               P = processes(),
               F = fun(X) -> {X,process_info(X,registered_name)} end,
               lists:map(F,[],P).
       ^D
       [{<madonna@chivas.du.etx.ericsson.se,0,0>,
                         {registered_name,init}},
        {<madonna@chivas.du.etx.ericsson.se,2,0>,
                         {registered_name,erl_prim_loader}},
        {<madonna@chivas.du.etx.ericsson.se,4,0>,
                         {registered_name,error_logger}},
        {<madonna@chivas.du.etx.ericsson.se,5,0>,
                         {registered_name,application_controller}},
        {<madonna@chivas.du.etx.ericsson.se,6,0>,
                         {registered_name,kernel}},
        {<madonna@chivas.du.etx.ericsson.se,7,0>,
                         []},
        {<madonna@chivas.du.etx.ericsson.se,8,0>,
                         {registered_name,kernel_sup}},
        {<madonna@chivas.du.etx.ericsson.se,9,0>,
                         {registered_name,net_sup}},
        {<madonna@chivas.du.etx.ericsson.se,10,0>,
                         {registered_name,net_kernel}},
        {<madonna@chivas.du.etx.ericsson.se,11,0>,
                         []},
        {<madonna@chivas.du.etx.ericsson.se,12,0>,
                         {registered_name,global_name_server}},
        {<madonna@chivas.du.etx.ericsson.se,13,0>,
                         {registered_name,auth}},
        {<madonna@chivas.du.etx.ericsson.se,14,0>,
                         {registered_name,rex}},
        {<madonna@chivas.du.etx.ericsson.se,15,0>,
                         []},
        {<madonna@chivas.du.etx.ericsson.se,16,0>,
                         {registered_name,file_server}},
        {<madonna@chivas.du.etx.ericsson.se,17,0>,
                         {registered_name,code_server}},
        {<madonna@chivas.du.etx.ericsson.se,20,0>,
                         {registered_name,user}},
        {<madonna@chivas.du.etx.ericsson.se,38,0>,
                         []}]