Skip to content

Commit c1a3b40

Browse files
Merge pull request #7459 from rabbitmq/mergify/bp/v3.11.x/pr-7441
Fix rabbitmq-diagnostics remote_shell for 26.0 (backport #7441)
2 parents 47aec2c + e3a3564 commit c1a3b40

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/remote_shell_command.ex

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,27 @@
66

77
defmodule RabbitMQ.CLI.Diagnostics.Commands.RemoteShellCommand do
88
@behaviour RabbitMQ.CLI.CommandBehaviour
9+
@dialyzer :no_missing_calls
910

1011
use RabbitMQ.CLI.Core.MergesNoDefaults
1112
use RabbitMQ.CLI.Core.AcceptsNoPositionalArguments
1213

1314
def run([], %{node: node_name}) do
14-
_ = Supervisor.terminate_child(:kernel_sup, :user)
15-
Process.flag(:trap_exit, true)
16-
user_drv = :user_drv.start(['tty_sl -c -e', {node_name, :shell, :start, []}])
17-
Process.link(user_drv)
18-
19-
receive do
20-
{'EXIT', _user_drv, _} ->
21-
{:ok, "Disconnected from #{node_name}."}
15+
_ = :c.l(:shell)
16+
17+
if :erlang.function_exported(:shell, :start_interactive, 1) do
18+
:shell.start_interactive({node_name, :shell, :start, []})
19+
:timer.sleep(:infinity)
20+
else
21+
_ = Supervisor.terminate_child(:kernel_sup, :user)
22+
Process.flag(:trap_exit, true)
23+
user_drv = :user_drv.start(['tty_sl -c -e', {node_name, :shell, :start, []}])
24+
Process.link(user_drv)
25+
26+
receive do
27+
{'EXIT', _user_drv, _} ->
28+
{:ok, "Disconnected from #{node_name}."}
29+
end
2230
end
2331
end
2432

0 commit comments

Comments
 (0)