当前位置: 首页 > 知识库问答 >
问题:

从字符串中获取命令(密码),并将其设置为Java(JSCH)中Unix服务器的InputStream

王高邈
2023-03-14

与本主题几乎相似,但我不是使用stdin的超级用户。

所以我找到了另一种方法,在后台打开一个“shell”,通过String通过InputStream

我编写了如下代码:

String s = "cd bin\n";

byte bb[] = s.getBytes();

InputStream intt = new ByteArrayInputStream(bb);

channel.setInputStream(new FilterInputStream(intt) {
    public int read(byte[] b, int off, int len) throws IOException {
        return in.read(b, off, (len > 1024 ? 1024 : len));
    }
});

现在,当我想只执行一个命令,但我想给多个命令,我面临的问题,这是完美的工作。

有什么建议吗?

当做

伊山

共有1个答案

相德宇
2023-03-14

我找到了一个解决我所问问题的方法,不知道这是否是一个完全证明的解决方案,因为我在有限的时间内进行了测试,并且我尽我所能做到了。

channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
((ChannelExec) channel).setPty(true);

在命令字符串中

String command = "(echo old_password; echo new_password; echo new_password) | passwd username";

如果不是超级用户,

String command = "(echo old_password; echo new_password; echo new_password) | passwd"

就是它;)

当做

ICR

 类似资料:
  • 问题内容: 我正在使用JSCH -SSH库在“ shell”通道中执行命令,但找不到找到两种方法的方法: 1)如何查找命令是否在远程unix box上完全执行? 2)如何在String中捕获命令输出,而不是在System.out控制台上打印它? 下面是我的代码片段,可以在system.out上显示shell命令输出 注意:我不想使用“ exec”通道,因为它为每个命令启动一个新进程,并且不记得已导

  • 问题内容: 我正在连接到远程服务器SSH服务器,并尝试获取特定路径中的文件列表,我能够获取该路径中的文件列表,但是它们的格式不可读,可以有人帮忙吗 这是控制台输出 问题答案: 这些是ANSI转义码,通常由终端客户端解释以漂亮地[彩色]打印输出。 如果服务器配置正确,则只有在使用交互式终端时才能获得这些信息。换句话说,如果您为会话请求了伪终端(如果要使会话自动化,则不应该这样做)。 如果使用了“ s

  • 我为flutter找到了加密包来加密和解密一条消息,我成功地加密和解密了,但没有成功地在一个cas中使用这个独立的设备,如图所示。 这是一个例子,我用一个静态字符串和一个随机数组成一个明文,它允许更改生成的密钥,当我解密时,发现静态字符串与正则表达式匹配 目前我找不到如何输入我的加密密钥(fesesgesgneslg465esg6es4g)我塞拉赫要做这样的事情 ---------按下时,我生成一

  • 不管配置文件名如何,是否有任何方法可以将当前加载的配置传递给PropertySource?从cloud config成功获取配置后收到的日志,用于应用程序:web-server profile:LOCAL