使用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命令,返回的结果中存在乱码,各位大大怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章
使用java中的jsch在linux中通过sudo命令执行shell脚本以启动服务