From 34f2763ef448c8c4621ac0e107644035774bdd95 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 10 May 2025 14:27:24 +1200 Subject: [PATCH] Broken --- runner/runner.cpp | 11 ++++++++--- runner/runner_demo.cpp | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/runner/runner.cpp b/runner/runner.cpp index fe8af58..355500b 100644 --- a/runner/runner.cpp +++ b/runner/runner.cpp @@ -122,7 +122,12 @@ int ssh_interactive_shell_session(ssh_session session, ssh_channel channel, cons return 0; } -int ssh_exec_command(ssh_session session, ssh_channel channel, const std::string& remote_cmd_str, bool silent, std::string* output) { +int ssh_exec_command(ssh_session session, ssh_channel channel, const std::string& remote_cmd_str, bool silent, std::string* output, const std::map& env) { + // Set environment variables using ssh_channel_request_env + for (const auto& kv : env) { + if (kv.first == "SSHPASS") continue; + ssh_channel_request_env(channel, kv.first.c_str(), kv.second.c_str()); + } int rc = ssh_channel_request_exec(channel, remote_cmd_str.c_str()); if (rc != SSH_OK) { if (output) *output = std::string("Failed to exec remote command: ") + ssh_get_error(session); @@ -255,12 +260,12 @@ int execute_cmd( ssh_free(session); return -1; } - std::string remote_cmd_str = ssh_build_remote_command(command, args, working_dir, env); + std::string remote_cmd_str = ssh_build_remote_command(command, args, working_dir, {}); // Don't prefix env int ret = 0; if (interactive) { ret = ssh_interactive_shell_session(session, channel, remote_cmd_str, command, output); } else { - ret = ssh_exec_command(session, channel, remote_cmd_str, silent, output); + ret = ssh_exec_command(session, channel, remote_cmd_str, silent, output, env); } ssh_channel_send_eof(channel); ssh_channel_close(channel); diff --git a/runner/runner_demo.cpp b/runner/runner_demo.cpp index a08c91a..7b0e016 100644 --- a/runner/runner_demo.cpp +++ b/runner/runner_demo.cpp @@ -79,7 +79,7 @@ void test_docker() { void test_ssh() { std::string command = "bash"; - std::vector args = {"-c", "ls -l && echo $WHATSUP"}; + std::vector args = {"-c", "ls -l && echo \"$WHATSUP\""}; std::string working_dir = "/home"; std::map env = {{"WHATSUP", "Waaaaattttsssuuuppppp!"}}; bool silent = false;