Man Linux: Main Page and Category List

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 []  is  assumed
                    for  unspecified  Fun and Args. 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>,
                         []}]