Go to main content

man pages section 1: User Commands

Exit Print View

Updated: July 2017
 
 

erl_call (1)

Name

erl_call - Call/Start a Distributed Erlang Node

Synopsis

Please see following description for synopsis

Description

erl_call(1)                      User Commands                     erl_call(1)



NAME
       erl_call - Call/Start a Distributed Erlang Node

DESCRIPTION
       erl_call  makes it possible to start and/or communicate with a distrib-
       uted 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,  sepa-
                  rated  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 suc-
                  cessful.

                -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>,
                         []}]



ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:


       +---------------+------------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE  |
       +---------------+------------------+
       |Availability   | runtime/erlang   |
       +---------------+------------------+
       |Stability      | Uncommitted      |
       +---------------+------------------+
NOTES
       This     software     was    built    from    source    available    at
       https://java.net/projects/solaris-userland.   The  original   community
       source     was     downloaded     from      http://www.erlang.org/down-
       load/otp_src_17.5.tar.gz

       Further information about this software can be found on the open source
       community website at http://www.erlang.org/.



Ericsson AB                  erl_interface 3.7.20                  erl_call(1)