Articles of jsch

某些Unix命令在通过使用JSch的Java执行时(即使启用了setPty)也会以“… not found”失败

我正在创build一个android应用程序,将命令发送到设备上的linuxterminal。 当使用“ls”命令时,我能够得到正确的输出,但是当我使用“ifconfig”或“iwconfig”时,设备不会给出任何输出。 使用Tera Term,我已经validation了这些命令的工作。 我试过包括((ChannelExec)channel).setPty(true); 为了解决这个问题,terminal仍然看不到命令​​。 添加这行代码还会将“ls”命令的输出更改为我无法识别的内容。 这是我的JSch代码: package com.example.riot94.whizpacecontroller; import android.os.AsyncTask; import android.util.Log; import java.io.IOException; import java.io.InputStream; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; /** * Created by riot94 on 1/6/2017. */ public class JSchConnectionProtocol extends AsyncTask<String, Void, String>{ private String host; private String user; private String password; public JSchConnectionProtocol(String h, […]

从string获得命令(密码),并将其设置为InputStream到Java(JSCH)中的Unix服务器

几乎类似于这个话题,但在这里我不是一个超级用户使用–stdin。 所以我find了另外一个方法,我会在后台打开一个“shell”,并通过InputStream通过一个String给shell提供input 我做了如下代码: 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)); } }); 现在,当我只想执行一个命令,但是我想给出多个命令时,这是完美的。 有什么build议么? 问候, 依禅

有趣的Shell输出:[01; 32mtestfile.txt [00m而不是testfile.txt

问题:当我使用ChannelShell发送命令时,我收到了“有趣”的字符输出,我想知道如何获得在PuTTY会话中看到的常规输出。 “搞笑”我的意思是我应该看到这个: testfile.txt 我看到这个: [01;32mtestfile.txt[00m 这与这个问题类似,除了答案不能满足我的需要。 答案是在ChannelShell上调用setPty(false) ,它完全移除了“伪terminal”,但我需要实时从ChannelShell获得输出。 以下是我正在做的一个例子: ChannelShell channel = (ChannelShell) session.openChannel("shell"); channel.setOutputStream(new PrintStream( new ByteArrayOutputStream(), true, "UTF-8") { @Override public void write(byte[] b, int off, int len) { super.write(b, off, len); String output = new String(b, off, len); System.out.print(output); sendNextCommand(output); //Execution of the next command depends on the output here, this is […]

用JAVA更改UNIX密码

对不起,如果我的英语是如此糟糕。 我想问一下从Java执行“passwd”命令(我使用Netbeans IDE和JSCH库) 这是我的代码 String username = txtusername.getText(); String password = txtpassword.getText(); String ip = txtIP.getText(); int port = 22; Session session = null; Session session2=null; ChannelExec channel = null; Channel channel2 = null; StringBuffer result = new StringBuffer(); try { JSch shell = new JSch(); session = shell.getSession(username, ip, port); java.util.Properties config = new […]

Java JSch更改远程机器上的用户并执行命令

我试图连接到主机,然后更改用户使用“苏 – 约翰”,然后执行一个命令为约翰。 仅使用JSch可能吗? 问题是,我创build一个会议后,打开通道并执行上述命令它应该要求密码,但没有任何反应。 这是我如何连接到远程机器: String address = "myremote.computer.com"; JSch jsch = new JSch(); String user = "tom"; String host = address; String password = "l33tpaSSw0rd"; Session session = jsch.getSession( user, host, 22 ); java.util.Properties config = new java.util.Properties(); config.put( "StrictHostKeyChecking", "no" ); session.setConfig( config ); session.setPassword( password ); session.connect(); 然后我通过runSshCommand()方法执行命令,如下所示: try { Channel […]