Java JSch示例在SSH Unix服务器上运行Shell命令
时间:2020-02-23 14:46:18 来源:igfitidea点击:
今天,我们将研究JSch示例教程。
我们可以使用JSch在Java中创建SSH连接。
今天,我将介绍一个程序,该程序可用于连接到启用SSH的服务器并执行Shell命令。
我正在使用JSch从Java程序连接到远程ssh服务器。
JSch示例
您可以从其官方下载JSch jar。
您还可以使用以下maven依赖关系来获取JSch jar。
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.53</version> </dependency>
下面是一个简单的JSch示例程序,可在服务器上运行" ls -ltr"命令。
import java.io.InputStream; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class JSchExampleSSHConnection { /** * JSch Example Tutorial * Java SSH Connection Program */ public static void main(String[] args) { String host="ssh.theitroad.local"; String user="sshuser"; String password="sshpwd"; String command1="ls -ltr"; try{ java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); JSch jsch = new JSch(); Session session=jsch.getSession(user, host, 22); session.setPassword(password); session.setConfig(config); session.connect(); System.out.println("Connected"); Channel channel=session.openChannel("exec"); ((ChannelExec)channel).setCommand(command1); channel.setInputStream(null); ((ChannelExec)channel).setErrStream(System.err); InputStream in=channel.getInputStream(); channel.connect(); byte[] tmp=new byte[1024]; while(true){ while(in.available()>0){ int i=in.read(tmp, 0, 1024); if(i<0)break; System.out.print(new String(tmp, 0, i)); } if(channel.isClosed()){ System.out.println("exit-status: "+channel.getExitStatus()); break; } try{Thread.sleep(1000);}catch(Exception ee){} } channel.disconnect(); session.disconnect(); System.out.println("DONE"); }catch(Exception e){ e.printStackTrace(); } } }