【问题标题】:Unable to do SSH using Command Promp \无法使用命令提示符执行 SSH \
【发布时间】:2019-09-26 07:10:41
【问题描述】:

我正在尝试建立与远程服务器的 SSH 连接以执行某些命令。我需要在我的最终程序中使用 CLA,所以我试图从命令提示符执行。给出了示例代码

#include <stdio.h>
#define PATH_MAX 128

int main(void){

    FILE *fp;
    char path[PATH_MAX];

    fp = popen("ssh user@HOST \"command\"", "r");
    if (fp == NULL)
       /* Handle error */;

    while (fgets(path, PATH_MAX, fp) != NULL)
    printf("%s", path);
    fclose(fp);
    return 0;
}

代码使用 DevC++ 执行良好,但是当我从命令提示符执行相同操作时,它不执行给出以下消息“'ssh' 不被识别为内部或外部命令, 可运行的程序或批处理文件。" 我尝试了 system("some command") 和 popen()。两者在 DevC 中都可以正常工作,但在从命令提示符执行时会给出相同的消息。 我正在安装 MinGW gcc 版本 8.2.0 (MinGW.org GCC-8.2.0-3)

【问题讨论】:

  • 这不是您的程序的问题,而是%PATH% 环境变量的问题。
  • ssh 安装在哪里?是在Windows系统PATH吗?
  • 所以程序运行良好,而您只是寻求在 Windows 上运行 ssh 的帮助?这是一道编程题?
  • 我检查了路径变量,它已经存在 *C:\Windows\System32\OpenSSH*。事实上,如果我直接进入命令提示符并建立/运行 SSH 连接,它工作正常。我面临的唯一问题是尝试通过命令提示符中的 C 程序执行相同操作。

标签: c linux ssh popen


【解决方案1】:

因此,即使系统变量下存在所需的路径,但程序似乎在用户变量下执行。因此,只需在用户变量下添加相同的路径(即 C:\Windows\System32\OpenSSH)即可解决问题。

【讨论】:

    【解决方案2】:

    SSH.exe 需要在 Windows PATH 中。当程序运行时,它可能不在您的配置文件下运行。

    它可能在未定义相同PATH 的系统配置文件下运行。您可以让程序检查和/或更新PATH 或专门在您的个人资料下运行。

    【讨论】:

    • 这个论坛的目的是提供解决方案。请添加解决方案或删除帖子。
    • 谢谢大家,终于通过在用户变量下添加路径解决了这个问题。所以我猜问题是程序在用户配置文件而不是系统配置文件下执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多