使用jsch连接到linux上,然后执行shell命令,返回的结果中存在乱码,各位大大怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jsch连接到linux上,然后执行shell命令,返回的结果中存在乱码,各位大大怎么解决?相关的知识,希望对你有一定的参考价值。

参考技术A 这是因为文字终端不支持其他语系,请切换到英文语系。
请输入下列指令再执行命令。
LANG=en_US本回答被提问者和网友采纳
参考技术B 换shell,该shell输出带有样式,用sh,然后在执行你的命令就正常了 参考技术C 虽然有点挖坟,但是给后来者一个参考吧,可能是Linux的颜色显示问题,那些乱码表示的是颜色吧。 参考技术D connect之前这样设置一下应该就可以了。

((ChannelShell) channel).setPtyType("dumb");

JSch 在一个会话中执行多个 linux 命令

【中文标题】JSch 在一个会话中执行多个 linux 命令【英文标题】:JSch executing multiple linux commands in one session 【发布时间】:2015-06-11 18:08:49 【问题描述】:

我正在做一个项目,我打算在其中创建一个 Java GUI 应用程序,该应用程序连接到 ssh 服务器并在服务器上执行远程命令。我愿意使用 JSch 库。我的目标是制作按钮和文本字段,它们将为用户提供发送命令和轻松获得回复的能力。我的意思是,用户不会打开 xShell 并提示“grep "hi" /usr/file.txt”,而是从列表中选择路径,然后在文本字段中输入“hi”,然后按下 grep 按钮。

问题是,我找不到在一个会话中执行多个 linux 命令的解决方案(如果我无法重定向其输入和输出流,我不想要 shell)(我也不想要解决方案“cd. . \n dir \n ls -l" 工作正常但不能解决我的问题)发送应从相关 GUI 组件获取的参数。

由于我没有对JSch的示例代码做太多修改,你可以在这里查看代码:http://www.jcraft.com/jsch/examples/Exec.java.html

从现在开始谢谢。

【问题讨论】:

shell 是要走的路。 @ScaryWombat 嗨,我可以将 shell 的输入和输出流重定向到我的 GUI 组件吗?如果是,如何?从现在开始谢谢。 我不确定你是否可以直接这样做,但是重定向到一个字符串然后从字符串更新你的 GUI 很容易 您链接到的示例程序完全能够运行多个命令序列。实际上,该程序的默认设置是两条命令管道。您说“cd .. \n dir \n ls -l”解决方案工作正常,但不能解决您的问题。 你的问题是什么? @Kenster 例如,当用户想要从目录列表中切换到一个目录时,选择一个文件并在该文件中进行 grep 搜索, --("cd ..") -- (“grep hi smp.txt”),在第一步中他的路径发生了变化,但在第二步中路径被重置(因为 exec 通道这样做)。那我该如何解决呢? 【参考方案1】:

如果使用exec 类型的频道,您可以将命令与 && 结合使用:

channel.setCommand(". ./.profile && env");

【讨论】:

以上是关于使用jsch连接到linux上,然后执行shell命令,返回的结果中存在乱码,各位大大怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

JSch 在一个会话中执行多个 linux 命令

使用java中的jsch在linux中通过sudo命令执行shell脚本以启动服务

无法使用 JSch 连接到服务器端口 23

通过 JSch 建立 SSH 隧道

如何使用 shell 脚本连接到 linux 服务器并停止/启动服务?

使用 JSch 从 Java 连接到 SSH 服务器时出现“JSchException:拒绝 HostKey”