使用 sshj java 库在我的 Amazon EC2 机器上执行“sudo”命令

2024-02-17

我正在尝试使用 SSHJ 库在我的 Amazon EC2 计算机上执行 sudo 命令(https://github.com/shikhar/sshj https://github.com/shikhar/sshj)。不幸的是,我没有收到服务器的任何响应。我确信其他非 sudo 命令可以完美执行。这是一些示例代码。

        Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
        sshClient.addHostKeyVerifier(new PromiscuousVerifier());
        sshClient.connect(host, 22);

        if (privateKeyFile != null) {
            // authenticate using private key file.
            PKCS8KeyFile keyFile = new PKCS8KeyFile();
            keyFile.init(privateKeyFile);
            sshClient.authPublickey(user, keyFile);
        } else {
            // Authenticate using password.
            sshClient.authPassword(user, password);
        }

        // Start a new session
        session = sshClient.startSession();
        session.allocatePTY("vt220", 80,24,0,0,Collections.<PTYMode, Integer>emptyMap());

            Command cmd = null;
                String response = null;
            try (Session session = sshClient.startSession()) {
             cmd = session.exec("sudo service riak start");
             response = IOUtils.readFully(cmd.getInputStream()).toString();
        cmd.join(timeout, timeUnit);
                } finally {
        if (cmd != null) {
            cmd.close();
        }
    }

恐怕有点猜测,但我认为你的问题是:

    // Start a new session
    session = sshClient.startSession();
    session.allocatePTY("vt220", 80,24,0,0,Collections.<PTYMode, Integer>emptyMap());

    Command cmd = null;
    String response = null;
    // your allocating a new session there
    try (Session session = sshClient.startSession()) {

         cmd = session.exec("sudo service riak start");
         response = IOUtils.readFully(cmd.getInputStream()).toString();
         cmd.join(timeout, timeUnit);
    } finally {
        if (cmd != null) 
            cmd.close();
    }

我认为,如果您只启动一个会话,在其上分配一个 PTY,然后在该会话上运行命令,您可能会感兴趣:

    session = sshClient.startSession();
    session.allocatePTY("vt220", 80,24,0,0,Collections.<PTYMode, Integer>emptyMap());
    Command cmd = session.exec("sudo service riak start");
    String response = IOUtils.readFully(cmd.getInputStream()).toString();
    cmd.join(timeout, timeUnit);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 sshj java 库在我的 Amazon EC2 机器上执行“sudo”命令 的相关文章

随机推荐

  • Joi 验证器只有键之一

    我正在开发一个 api 它应该允许多个参数 但对于其中三个参数 我只想允许其中一个 每个键的值更容易 但我想知道 Joi 是否也允许它 或者我应该在我的服务器中添加额外的验证逻辑 简而言之 对于钥匙a b or c我想让任何具有以上三个以上
  • 使用视频作为 div 的背景

    我想在 CSS3 中使用视频作为背景 我知道没有背景视频属性 但是是否可以执行此行为 使用全尺寸视频标签不会给出想要的结果 因为需要在视频上显示内容 它必须是非 JS 如果不可能 那么我需要在服务器端进行更改 并给出视频的屏幕截图 我需要视
  • 调用未定义函数 str_limit()

    调用未定义函数 str limit laravel 6x 这是我的代码 帮帮我 dt Description dt dd str limit product 500 dd 在版本 5 8 中 str 助手已被删除 您必须使用照亮 支持 St
  • 如何使用 yii2 -bootstrap 扩展将模态添加到 yii2 中的导航栏?

    我正在尝试将模态放在我的 yii2 项目的导航栏中 我正在使用 yii2 bootstrap 扩展 我的导航代码 NavBar begin brandLabel gt My Company brandUrl gt Yii app gt ho
  • Android Studio 不断拒绝解析 com.android.support:appcompat-v7:29.0.1

    我已经提到过this http ttps stackoverflow com questions 52997370 线程 但它不能解决我的问题 我不断收到错误 ERROR Failed to resolve com android supp
  • 如何从 Jenkins 2.0 管道脚本读取属性文件

    我正在尝试编写一个管道脚本与 Jenkins 2 0 一起使用来复制我们现有的构建 这个原始构建使用 envInject 插件来读取 Java 属性文件 但我看不到如何从管道 Groovy 脚本中执行此操作 我用 Google 搜索并找到了
  • 标签和类替换标题 (

    ,

    ...) 标签

    我希望将标签从所见即所得编辑器替换为 目前我正在使用以下代码来实现此目的 content preg replace

  • jQuery的load函数在本地不起作用

    当窗口宽度小于 600px 时 我必须在现有 div 中加载 HTML 文件 代码是 div div 我已经在我的网站上测试了这段代码并且它可以工作 但也许我做错了什么才能使其在本地工作 有没有理由load函数不能在本地运行
  • 在 Eclipse RCP 应用程序中在哪里存储“全局”数据?

    我是 Eclipse RCP 的初学者 我正在尝试为自己构建一个应用程序来尝试一下 我对如何实际处理模型对象感到困惑 我能找到的例子都不能解决我遇到的问题 所以我怀疑我的处理方式是错误的 假设我需要使用保存经过身份验证的用户信息的类来初始化
  • 如何用IPC::Open2过滤大量数据?

    我的任务是使用外部实用程序 addr2line 从 perl 脚本中过滤一些数据 数据量相当大 我需要打印大量数据stdin程序并读回大量数据 来自stdout程序到我的脚本中 现在我这样做IPC Open2 但我不混合阅读和写作 这合法吗
  • 设置控件Parent属性和使用Controls.Add()之间的区别?

    更具体地说 这些陈述是 ownerControl GroupBox1 Controls Remove childControl ownerControl Controls Add childControl 相当于 childControl
  • 在本地主机上托管 git 服务器

    我的公司没有中央 git 服务器 也不允许我使用 BitBucket 等 无论如何我可以使用我的本地主机作为remote 编辑 我在 Windows 机器上 本地目录的工作方式与远程存储库 URL 类似 因此只要您是唯一使用该存储库的人 基
  • shell 脚本错误期待“do”

    bin sh while true do echo WTF done 这给出了语法错误 语法错误 意外的文件结尾 需要 do 我也尝试过 bin sh while do echo WTF done 我怀疑行结尾 Try hexdump C
  • iOS 模拟器应用程序的终端命令行调试?

    是否可以在 Mac OS X 下的终端命令行中使用 GDB 或 LLDB 来调试在 iOS 模拟器上运行的应用程序 例如 不是从 Xcode 的 GUI 或控制台内部 而是使用外部命令行或进程 如果是这样 怎么办 您需要在模拟器的 Spri
  • MVC-错误消息

    我正在创建 MVC Web 应用程序 我应该在 MVC 模型 视图 控制器 的哪一部分保存错误消息 这些消息可能会出现在出现问题的地方并且用户应该阅读它们 目前情况 Model function f data error Error mes
  • 为 C# MVC ASP.NET 应用程序创建的默认数据库在哪里?

    我在引导程序上使用登录 注册脚本安装了新的 MVC ASP NET 应用程序 它工作正常 但我不知道该应用程序的默认数据库在哪里 我的 App Data 文件夹是空的 有人可以告诉我表单注册的数据保存在哪里吗 这将存储在 Visual St
  • 何时在 Ansible 中使用 from_json 过滤器?

    我什么时候应该使用from json filter https docs ansible com ansible playbooks filters html filters for formatting data在安西布尔 我发现使用它有
  • Mod 重写查询参数验证和阻止也请求 url 阻止

    在我的网站上 只允许很少的查询参数 但是 一些扫描仪或黑客试图使用我的 php 应用程序不支持的唯一参数访问 url 我可以通过验证在 php 应用程序级别阻止它们 GET参数 但我的服务器正在加载 所以如果参数无效 我想显示 403 查询
  • 如何为 flex: 0 0 25% 的弹性项目添加 1px 边距?

    我正在使用 Flexbox 测试几种不同的布局 但遇到以下问题 我有一个设置了弹性项目的图片库flex 0 0 25 我想给它们添加 1px 边距 因为 1 太大了 所以我想知道在这种情况下我应该做什么 我附上下面的例子 foto cont
  • 使用 sshj java 库在我的 Amazon EC2 机器上执行“sudo”命令

    我正在尝试使用 SSHJ 库在我的 Amazon EC2 计算机上执行 sudo 命令 https github com shikhar sshj https github com shikhar sshj 不幸的是 我没有收到服务器的任何