From 6564e52243c4e2ebe5bca6c0abc083046d7e74fb Mon Sep 17 00:00:00 2001 From: snirqm Date: Mon, 19 Jan 2026 16:43:05 +0200 Subject: [PATCH 1/2] Execute commands via bash in SSH channel --- lib/sshkit/backends/netssh.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sshkit/backends/netssh.rb b/lib/sshkit/backends/netssh.rb index 03be64cb..9bd2ad78 100644 --- a/lib/sshkit/backends/netssh.rb +++ b/lib/sshkit/backends/netssh.rb @@ -145,7 +145,7 @@ def execute_command(cmd) with_ssh do |ssh| ssh.open_channel do |chan| chan.request_pty if Netssh.config.pty - chan.exec cmd.to_command do |_ch, _success| + chan.exec "echo '#{cmd.to_command}' | bash" do |_ch, _success| chan.on_data do |ch, data| cmd.on_stdout(ch, data) output.log_command_data(cmd, :stdout, data) From 6d52c08f2d6b709d19de8b606fc1f8c18975f918 Mon Sep 17 00:00:00 2001 From: snirqm Date: Mon, 19 Jan 2026 17:05:19 +0200 Subject: [PATCH 2/2] Add force_bash option to execute commands in bash --- lib/sshkit/backends/netssh.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/sshkit/backends/netssh.rb b/lib/sshkit/backends/netssh.rb index 9bd2ad78..3846e6f6 100644 --- a/lib/sshkit/backends/netssh.rb +++ b/lib/sshkit/backends/netssh.rb @@ -28,7 +28,7 @@ def self.assert_valid_transfer_method!(method) end class Configuration - attr_accessor :connection_timeout, :pty + attr_accessor :connection_timeout, :pty, :force_bash attr_reader :transfer_method attr_writer :ssh_options @@ -145,7 +145,12 @@ def execute_command(cmd) with_ssh do |ssh| ssh.open_channel do |chan| chan.request_pty if Netssh.config.pty - chan.exec "echo '#{cmd.to_command}' | bash" do |_ch, _success| + if Netssh.config.force_bash + cmd_to_exec = "bash -c '#{cmd.to_command}'" + else + cmd_to_exec = cmd.to_command + end + chan.exec cmd_to_exec do |_ch, _success| chan.on_data do |ch, data| cmd.on_stdout(ch, data) output.log_command_data(cmd, :stdout, data)