如何在命令中传递多个参数以使用 C/C++ 和 SSH 在远程 linux 机器上执行 exe
How to pass multiple arguments in a command to execute an exe on remote linux machine using C/C++ and SSH
我已经使用命令在本地计算机上成功执行了我的 exe
“./可执行 agr1 arg2 arg3 arg4”
然后它将参数计数的值显示为 5。
但是当我想从远程 linux 机器(system2)做同样的事情时,我在 QT creator 中使用 libssh 打开了 SSH 通道,然后我做了以下操作:
- QString str = "/root/executable arg1 arg2 arg3 arg4";
- rc = channel_request_exec(频道,海峡);
然后 exe 执行但它显示参数计数为 1。意味着参数没有正确传递。这样做的正确方法是什么??
QString 格式有问题,请使用以下格式
QString str = QString("%1 %2 %3 %4 %5").arg("/root/executable", "arg1", "arg2", "arg3","arg4");
rc = channel_request_exec(通道,海峡);
在 Google 和 Whosebug(及其变体)上进行大量搜索后,我找到了上述问题的答案,这不完全是格式错误。问题出在 SSH 本身。它不允许我们精确指定命令。
传递带有多个参数的命令的正确方法如下:
Const char str[] = "\"/root/executable arg1 arg2 arg3 arg4\"";
而且效果很好。
我在这里找到了答案:
https://unix.stackexchange.com/q/80821
https://unix.stackexchange.com/a/80838
我已经使用命令在本地计算机上成功执行了我的 exe “./可执行 agr1 arg2 arg3 arg4” 然后它将参数计数的值显示为 5。 但是当我想从远程 linux 机器(system2)做同样的事情时,我在 QT creator 中使用 libssh 打开了 SSH 通道,然后我做了以下操作:
- QString str = "/root/executable arg1 arg2 arg3 arg4";
- rc = channel_request_exec(频道,海峡);
然后 exe 执行但它显示参数计数为 1。意味着参数没有正确传递。这样做的正确方法是什么??
QString 格式有问题,请使用以下格式
QString str = QString("%1 %2 %3 %4 %5").arg("/root/executable", "arg1", "arg2", "arg3","arg4");
rc = channel_request_exec(通道,海峡);
在 Google 和 Whosebug(及其变体)上进行大量搜索后,我找到了上述问题的答案,这不完全是格式错误。问题出在 SSH 本身。它不允许我们精确指定命令。 传递带有多个参数的命令的正确方法如下: Const char str[] = "\"/root/executable arg1 arg2 arg3 arg4\""; 而且效果很好。
我在这里找到了答案: https://unix.stackexchange.com/q/80821 https://unix.stackexchange.com/a/80838