Dostęp po SSH w javie
Dostęp po SSH w javie
Z tego artykułu dowiesz się w jaki sposób uzyskać dostęp do swojego serwera po SSH (z ang. Secure Shell) z poziomu aplikacji napisanej w javie. SSH to protokół warstwy aplikacji pozwalający zdalnie zarządzać hostami. Potrzebujemy zależności do biblioteki jsh:
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.51</version> </dependency>
Klasa testowa:
public class Start { public static void main(String[] args) throws IOException, JSchException { String host=""; String user=""; String password=""; String command=""; 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(command); 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(); } } }
Klasa ta łączy się po SSH do naszego serwera i wykonuje polecenie zdefiniowane w zmiennej command. W efekcie otrzymamy wynik wykonanego na serwerze polecenia.
Leave a comment