无法运行程序“...”错误=2,没有这样的文件或目录(java)

2024-03-21

我正在尝试制作一个 java 程序来在我的 macbook 上建立 SSH 连接。它提示我输入用户名,然后是 IP 地址,然后应该执行“ssh username@ip”。

下面是我的代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;

public class SSH {
    public static void main(String[] args) throws Exception {
    boolean rep = true;
    String username = (null);
    String IPAdress = (null);
    while (rep) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Username:  ");
        username = scanner.next();
        System.out.print("\nIP Adress:  ");
        IPAdress = scanner.next();
        System.out.println("\n\nIs this correct?\nUsername:  " + username + "\nIP Adress:  " + IPAdress + "\nY/N");
        char responce = scanner.next().charAt(0);

        if (responce == 'Y' || responce == 'y') {
            rep = false;
            scanner.close();
        } else if (responce == 'N' || responce == 'n') {

        } else {
            Error displayErrorMessage = new Error();
            displayErrorMessage.displayError();
        }
    }
    String SSHStartup = username + "@" + IPAdress;
    System.out.println("Running command:  ssh " + SSHStartup);
    String[] command = { "/bin/bash, -c , ssh " + SSHStartup };
    Process p = Runtime.getRuntime().exec(command);
    p.waitFor();
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = "";
    StringBuffer output = new StringBuffer();
    while ((line = reader.readLine()) != null) {
        output.append(line + "\n");
    }
}
}

我知道,它很混乱,现在缩进得很好,但它没有执行命令,而是给了我这个:

Exception in thread "main" java.io.IOException: Cannot run program "/bin/bash, -c , ssh root@(ip here)": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:485)
at SSH.main(SSH.java:32)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:248)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 3 more

为了这篇文章的目的,我删除了 IP 地址,但是当我编译并运行它时,我尝试了实际的 IP 地址,它给了我同样的错误。

Help?


String[] command = { "/bin/bash, -c , ssh " + SSHStartup };
Process p = Runtime.getRuntime().exec(command);

Your command数组包含单个值,即字符串“/bin/bash, -c , ssh ...”。 Java 尝试使用整个字符串作为单个文件的名称,但无法执行具有该名称的文件。

你应该构建command作为包含命令及其参数的数组作为字符串序列,而不是单个字符串:

String[] command = { "/bin/bash", "-c", "ssh " + SSHStartup };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法运行程序“...”错误=2,没有这样的文件或目录(java) 的相关文章

随机推荐

  • Azure 云存储帐户的连接字符串

    如何创建到云存储帐户的连接字符串以便可以访问表 blob 和队列 示例代码表示赞赏 如果您在 Azure 门户中查看相关存储帐户下的内容 并查看左侧导航栏中的 访问密钥 项 则会显示提供的两个密钥以及访问存储帐户所需的整个连接字符串
  • 链接 C++ 流

    我正在考虑将几个 C iostream 链接 在一起以过滤输入两次 我正在使用 gzstreams 读取 zlib 压缩文件 并且正在考虑编码一个从流中读取并执行编码转换的流 也许通过传递一个打开的流作为构造函数参数 您认为这可以最好地实现
  • 水晶报表-关闭数据库连接

    这是C Visual Studio 2008 VS2008附带的水晶报表 我有一个驻留在 DLL 中的水晶报表查看器表单 DLL 负责加载水晶报表 基于报表文件名 并将报表显示在窗体上 当我完成水晶报表后 我对加载的报表文档对象调用 dis
  • Yeomen webapp 生成器在 Windows 上的 grunt 构建上失败

    我正在尝试 yeomen 脚手架工具 唯一的问题是我遇到了一些问题和咕噜声 我正在尝试使用 webapp 生成器组装一个简单的网站 搭建应用程序并使用grunt serve工作完美 仅在使用时失败grunt build 它失败并显示以下消息
  • 在for循环中取消NSOperation?

    我正在尝试使用在后台线程上实现搜索NSOperation on iOS 我不想子类化NSOperation所以这就是我正在做的 searchQueue cancelAllOperations NSInvocationOperation op
  • 成本函数和梯度似乎有效,但 scipy.optimize 函数无效

    我正在为 Andrew NG Coursera 课程编写 Matlab 代码 并将其转换为 python 我正在研究非正则化逻辑回归 在编写梯度和成本函数后 我需要类似于 fminunc 的东西 经过一番谷歌搜索后 我找到了几个选项 它们都
  • 防止 BoxLayout 扩展子项

    我想在 JPanel 内垂直堆叠一些 JComponent 以便它们堆叠在顶部 任何额外的空间都在底部 我正在使用 BoxLayout 每个组件都包含一个 JTextArea 必要时应允许文本换行 因此 基本上 我希望每个组件的高度是显示
  • 上传的日文和中文文件名编码问题

    我目前正在使用jQuery 文件上传 https github com blueimp jQuery File Upload 我可能会上传一些带有日文或中文文件名的文件 在浏览器的调试模式下我可以看到文件名例如是 疲 様 txt 或 测试文
  • 为什么链接器在未在任何地方指定的情况下寻找 python36_d.lib ?

    我正在编译Python C 扩展模块 https docs python org 3 6 extending building html使用 VS 2017 和 SWIG 扩展模块 pyd 文件 的链接器 用于调试配置 的命令是 OUT D
  • 将“\r\n”替换为“\n”

    我有一些文本数据打印出实际字符 r n 总共四个字符 我想用单个 n 字符替换这四个字符 但我似乎无法让 Python 为我做这件事 我目前正在尝试 mytext replace r n n 但这只是打印出 n 两个字符 而不是一个 我觉得
  • Objective-C 中的标记指针

    While 回答这个问题 https stackoverflow com a 20362087 115200我注意到现代 Objective C 运行时使用标记指针 这迈克 阿什 Mike Ash 的文章及其评论 http www mike
  • Linux下的Topshelf和.net core

    我有一个简单的应用程序 它使用 topshelf 作为服务启动 它看起来很简单 HostFactory Run x gt x Service
  • 在 Azure 逻辑应用中执行存储过程 - 错误网关错误

    当我从逻辑应用设计器执行存储过程时 出现严重的网关错误 我试图调用的存储过程 create procedure test as select from testable 测试表包含 100000 多行 存储过程的结果放置在Blob FTP中
  • 将宏参数传递给其他宏

    我是生锈新手 我正在尝试创建宏 它需要一个缓冲区 然后从中解码一些数据并创建给定的变量列表 如果发生错误 那么它应该打印错误并继续 因为我将在接收缓冲区的循环中调用它 像这样的东西 for bin ref in bufs extract b
  • 使用 PHP 进行正则表达式电话号码验证

    这是关于我之前提出的问题的另一个问题昨天 https stackoverflow com questions 18094180 ignore entered text after a certain length php jquery se
  • 如何在 Swift 中查找列表项的索引?

    我正在尝试寻找一个item index通过搜索list 有人知道该怎么做吗 我看到有list StartIndex and list EndIndex但我想要类似 python 的东西list index text 由于 swift 在某些
  • Spring Data cassandra 存储库上的插入和保存性能缓慢

    我正在尝试使用 spring 将 1500 条记录插入 cassandra 中 我有一个 POJO 列表 其中包含这 1500 条记录 当我调用 saveAll 或插入此数据时 需要 30 秒才能完成此操作 有人可以建议一种方法让我更快地完
  • start() 已经被调用。第二次调用将被忽略。

    在调用 start 后 在组件 StandardEngine Catalina StandardHost localhost StandardContext Account 上调用 start 方法 第二次调用将被忽略 请帮助我解决这些错误
  • 为什么 pandas df.loc + lambda 不起作用?

    I have created pandas frame from csv file And I want to select rows use lambda But it does not work I use this pandas ma
  • 无法运行程序“...”错误=2,没有这样的文件或目录(java)

    我正在尝试制作一个 java 程序来在我的 macbook 上建立 SSH 连接 它提示我输入用户名 然后是 IP 地址 然后应该执行 ssh username ip 下面是我的代码 import java io BufferedReade