diff options
Diffstat (limited to 'lib/stdlib/src/slave.erl')
-rw-r--r-- | lib/stdlib/src/slave.erl | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/lib/stdlib/src/slave.erl b/lib/stdlib/src/slave.erl index d7cf6386f5..4791e3ebda 100644 --- a/lib/stdlib/src/slave.erl +++ b/lib/stdlib/src/slave.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2017. All Rights Reserved. +%% Copyright Ericsson AB 1996-2018. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -104,18 +104,17 @@ relay1(Pid) -> %% this to work is that the 'erl' program can be found in PATH. %% %% If the master and slave are on different hosts, start/N uses -%% the 'rsh' program to spawn an Erlang node on the other host. +%% the 'ssh' program to spawn an Erlang node on the other host. %% Alternative, if the master was started as %% 'erl -sname xxx -rsh my_rsh...', then 'my_rsh' will be used instead -%% of 'rsh' (this is useful for systems where the rsh program is named -%% 'remsh'). +%% of 'ssh' (this is useful for systems still using rsh or remsh). %% %% For this to work, the following conditions must be fulfilled: %% -%% 1. There must be an Rsh program on computer; if not an error +%% 1. There must be an ssh program on computer; if not an error %% is returned. %% -%% 2. The hosts must be configured to allowed 'rsh' access without +%% 2. The hosts must be configured to allow 'ssh' access without %% prompts for password. %% %% The slave node will have its filer and user server redirected @@ -187,7 +186,7 @@ start_link(Host, Name, Args) -> start(Host, Name, Args, self()). start(Host0, Name, Args, LinkTo) -> - Prog = lib:progname(), + Prog = progname(), start(Host0, Name, Args, LinkTo, Prog). start(Host0, Name, Args, LinkTo, Prog) -> @@ -286,7 +285,7 @@ register_unique_name(Number) -> %% Makes up the command to start the nodes. %% If the node should run on the local host, there is -%% no need to use rsh. +%% no need to use a remote shell. mk_cmd(Host, Name, Args, Waiter, Prog0) -> Prog = quote_progname(Prog0), @@ -296,7 +295,6 @@ mk_cmd(Host, Name, Args, Waiter, Prog0) -> " -s slave slave_start ", node(), " ", Waiter, " ", Args]), - case after_char($@, atom_to_list(node())) of Host -> {ok, BasicCmd}; @@ -309,6 +307,15 @@ mk_cmd(Host, Name, Args, Waiter, Prog0) -> end end. +%% Return the name of the script that starts (this) erlang +progname() -> + case init:get_argument(progname) of + {ok, [[Prog]]} -> + Prog; + _Other -> + "no_prog_name" + end. + %% This is an attempt to distinguish between spaces in the program %% path and spaces that separate arguments. The program is quoted to %% allow spaces in the path. @@ -317,10 +324,10 @@ mk_cmd(Host, Name, Args, Waiter, Prog0) -> %% (through start/5) or if the -program switch to beam is used and %% includes arguments (typically done by cerl in OTP test environment %% in order to ensure that slave/peer nodes are started with the same -%% emulator and flags as the test node. The return from lib:progname() +%% emulator and flags as the test node. The result from progname() %% could then typically be '/<full_path_to>/cerl -gcov'). quote_progname(Progname) -> - do_quote_progname(string:tokens(to_list(Progname)," ")). + do_quote_progname(string:lexemes(to_list(Progname)," ")). do_quote_progname([Prog]) -> "\""++Prog++"\""; @@ -334,9 +341,7 @@ do_quote_progname([Prog,Arg|Args]) -> lists:flatten(lists:map(fun(X) -> [" ",X] end, [Arg|Args])) end. -%% Give the user an opportunity to run another program, -%% than the "rsh". On HP-UX rsh is called remsh; thus HP users -%% must start erlang as erl -rsh remsh. +%% Give the user an opportunity to run another program than "ssh". %% %% Also checks that the given program exists. %% @@ -346,7 +351,7 @@ rsh() -> Rsh = case init:get_argument(rsh) of {ok, [[Prog]]} -> Prog; - _ -> "rsh" + _ -> "ssh" end, case os:find_executable(Rsh) of false -> {error, no_rsh}; |