一、gradle地址
// https://mvnrepository.com/artifact/com.jcraft/jschcompile group: 'com.jcraft', name: 'jsch', version: '0.1.54'
二、远程登录实例
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; public class SSHHelper { /** * 远程 执行命令并返回结果调用过程 是同步的(执行完才会返回) * * @param host * 主机名 * @param user * 用户名 * @param psw * 密码 * @param port * 端口 * @param command * 命令 * @return */ public static String exec(String host, String user,String psw, int port,String command) { String result = ""; Session session = null; ChannelExec openChannel = null; try { JSch jsch = new JSch(); session = jsch.getSession(user, host, port); java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.setPassword(psw); session.connect(); openChannel = (ChannelExec) session.openChannel("exec"); openChannel.setCommand(command); int exitStatus = openChannel.getExitStatus(); System.out.println(exitStatus); openChannel.connect(); InputStream in = openChannel.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String buf = null; while ((buf = reader.readLine()) != null) { // result+= new String(buf.getBytes("gbk"),"UTF-8")+" \r\n"; result += new String(buf.getBytes("gbk"), "UTF-8") + "\r\n"; } } catch (JSchException | IOException e) { result += e.getMessage(); } finally { if (openChannel != null && !openChannel.isClosed()) { openChannel.disconnect(); } if (session != null && session.isConnected()) { session.disconnect(); } } return result; } public static void main(String args[]) { // String exec = exec("192.168.25.128", "root", "password", 22, "sleep 10;ls;"); // String exec = exec("192.168.25.128", "root", "password", 22, "fs_cli -x // status"); // String exec = exec("172.18.4.114", "root", "root01", 22, "fs_cli -x status"); String exec = exec("172.18.4.114", "root", "assr", 22, "sshpass -p 'root01' scp /home/test.txt root@172.18.4.125:/home"); System.out.println("reply:\n" + exec); } }
三、一些涉及二次密码输入的情况
引入新的项目sshpass。
1. 下载及安装
$ wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz$ tar -xvf sshpass.tar.gz$ cd sshpass-1.06$ ./configure# sudo make install
2. 使用示例
sshpass -p 'root123456' scp /home/test.txt root@192.168.4.125:/home