jsch ChannelExec 和 ChannelShell 之间的确切区别是什么?

2024-03-17

有人可以告诉我之间的区别吗ChannelExec & ChannelShell?


shell 和 exec 通道 http://sourceforge.net/apps/mediawiki/jsch/index.php?title=Shell,_Exec_or_Subsystem_Channel非常相似 - 都使用远程 shell 执行命令(至少在概念上 - 当然,服务器可能配置为以不同方式对待它们)。 RFC 4254 将它们分组在“互动会议”部分 https://www.rfc-editor.org/rfc/rfc4254#section-6,并且它们(以及子系统,见下文)都使用 SSH 协议中的通道类型“会话”。

有一个重要的区别:

  • For ChannelShell http://epaul.github.com/jsch-documentation/simple.javadoc/index.html?com/jcraft/jsch/ChannelShell.html,输入流提供命令以及这些命令的输入。这就像使用交互式 shell在您的本地计算机上。 (它通常仅用于此目的:交互式使用。)

  • For ChannelExec http://epaul.github.com/jsch-documentation/simple.javadoc/index.html?com/jcraft/jsch/ChannelExec.html,命令之前用 setCommand() 给出connect(),并且输入流将被转发到这些命令作为输入。 (大多数情况下,您只有一个命令,但您可以使用普通的 shell 分隔符提供多个命令&, &&, |, ||, ;、换行符和复合命令。)这就像执行 shell 脚本在您的本地计算机上。 (当然,如果其中一个命令本身是一个交互式 shell,那么它的行为就像一个ChannelShell.)

  • 还有第三个类似的,ChannelSubsystem http://epaul.github.com/jsch-documentation/simple.javadoc/index.html?com/jcraft/jsch/ChannelSubsystem.html,它执行 ssh 服务器的子系统 - 这里服务器的配置决定要做什么,而不是远程用户的 shell。 (最常用的子系统是sftp,但为此 JSch 提供了一个专门的通道,它可以理解该协议。)

请注意,我这里所说的“输入流”是从本地到远程主机的通道中的数据流——实际上可以通过将 Java InputStream 传递给setInputStream方法,或者通过从getOutputStream方法并写入它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jsch ChannelExec 和 ChannelShell 之间的确切区别是什么? 的相关文章

  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • 如何调试 strace 中显示的 futex 争用?

    我正在调试多线程 Linux 进程中的一个问题 其中某个线程似乎没有执行几秒钟 查看 strace 输出发现它等待 futex 例如1673109 14 36 28 600329 futex 0x44b8d20 FUTEX WAIT PRI
  • Office剪贴板格式

    如果我从 Excel 2007 复制图形并在另一个 Office 应用程序中选择 选择性粘贴 我会看到一种名为 Microsoft Office 图形对象 的剪贴板格式 它允许与增强型图元文件不同的自定义 如何从我自己的 C 应用程序创建这
  • 下载 iAP 托管内容卡在 SKDownloadState 等待某些用户

    和标题说的差不多 该代码适用于沙盒环境中的所有开发设备以及大多数用户 然而 有些用户报告说 即使整夜下载过程也不会超出等待状态 SKDownloadStateWaiting 有些人确实在几次尝试后设法开始下载 完全关闭应用程序并通过恢复购买
  • 需要用户输入的 ffmpeg cli 过滤器

    有没有办法为 ffmpeg 编写过滤器脚本 这样当我给出输入时 过滤器就会改变行为 例如 在录制流时 使用某个键更改对比度 或者使用另一个键混合两个视频 我已经看到我可以以静态方式执行此操作 例如使用新行为重新启动记录 然后调用 conca
  • 函数式编程的分析与设计[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 升级到 El Capitan 后出现无效的活动开发人员路径错误

    当我输入 git init 时 我在尝试推送到 git 时遇到了这个错误 xcrun 错误 无效的活动开发人员路径 Library Developer CommandLineTools 缺少 xcrun 库 开发人员 CommandLine
  • 如何从 Google 云端硬盘视频获取redirector.googlevideo.com 链接

    我有一个谷歌驱动器视频文件 例如https drive google com file d FILE ID view https drive google com file d FILE ID view 并且我想获取其redirector
  • 实用地将数据从 Neo4j 导出到 csv 文件

    我需要你关于 neo4j 导出的建议 我使用 apoc export cypher query 将节点和关系导出到 csv 文件 但是导出的内容是 cypher 语句 这是导出的 csv 文件示例 begin CREATE ITEM UNI
  • 如何检查字符串是否包含从a到z的任何字母? [复制]

    这个问题在这里已经有答案了 可能的重复 C 正则表达式 检查 a z 和 A Z https stackoverflow com questions 6017778 c sharp regex checking for a z and a
  • fullCalendar 多日活动开始和结束时间

    多日活动很少有一个开始和一个结束时间 例如 伯明翰动漫展可能会持续三天 但你不能在凌晨 1 点出现 活动举办的三天中 每一天都有单独的开始和结束时间 我无法在文档中找到有关每个事件的多个开始和结束时间的任何内容 还有其他人吗 Edit 如果
  • 使用 Matplotlib 绘制网格

    我想在Python中使用Matplotlib绘制一个自定义的网格 我知道的np meshgrid函数 可以使用它来获取我想要连接的不同点的数组 但我不确定如何绘制网格 代码示例 x np linspace 0 100 100 y np li
  • 如何比较两个 X509Certificate2 c#

    如何比较两个 X509Certificate2 对象 我需要查找两个证书是否相同 它用于用户身份验证目的 我需要查找两个证书是否属于同一个人 我可以使用其序列号或指纹属性吗 或者还有其他方法吗 另外我对此很陌生 想知道使用 X509Cert
  • 为什么盒子阴影和元素之间有间隙?

    当将鼠标悬停在 Chrome 76 0 3809 100 64 位 中的按钮上时 框阴影和 img 之间会出现微弱的间隙 为什么会发生这种情况以及如何修复它 这是一张图片 以防您在代码片段中看不到它 body background colo
  • Java 中的空布局有什么问题? [复制]

    这个问题在这里已经有答案了 Bonjour 在花了无数时间在这个网站上寻找在屏幕上拖动组件的代码后 我注意到答案中出现了一个奇怪的趋势 每个人都对空布局的声音感到不寒而栗 所以我问 大家都有什么问题吗 我编写代码的时间不超过三个月 使用 S
  • 如何使用PHP处理多个文件上传

    我想使用 PHP 上传文件 但问题是我不知道要上传多少个文件 我的问题是如果我使用的话如何上传文件file
  • 如何在单个动画中缩放和旋转视图

    我试图通过使其从屏幕中心出现同时增长到其完整尺寸来呈现视图 同时以 3D 方式围绕 x 轴旋转它 当我创建视图时 我对其应用变换以确保它收缩并旋转以开始 它太小 实际上不可见 然后我尝试使用 CATransform3D 如下所示 CABas
  • 我如何知道golang中结构体的长度?

    我是 Golang 新手 我正在尝试从结构中获取许多属性 例如 type Client struct name string 1 lastName string 2 age uint 3 func main client Client na
  • 我希望“(int)null”返回0

    我怎样才能得到 0 作为整数值 int null EDIT 1 我想创建一个函数 它将返回各自数据类型中空表示的默认值 EDIT 2 我怎样才能从事这个工作scenario用于使用default 整数 值 Where 值可以为空或任何整数价
  • Angular ng-show / ng-hide 无法与 ng-bind-html 一起正常工作

    我想为 html 字符串中的元素设置 ng show 或 ng hide 并将其传递给 ng bind html 查看 但 ng show ng hide 不起作用 我的元素始终可见 这是我的控制器代码 scope my messageTr
  • jsch ChannelExec 和 ChannelShell 之间的确切区别是什么?

    有人可以告诉我之间的区别吗ChannelExec ChannelShell shell 和 exec 通道 http sourceforge net apps mediawiki jsch index php title Shell Exe