java使用ganymed-ssh2如何远程执行多条命令
作者:互联网
ganymed-ssh2提供执行远程命令的方法
linux和windows系统多个命令用&&隔开,如果其中某个命令出错,后面的命令就不会执行了
windows系统执行命令需要再前面加cmd /c
Connection conn = new Connection(hostname, port); Session ssh = null; try { //连接到主机 conn.connect(); //使用用户名和密码校验 boolean isconn = conn.authenticateWithPassword(username, password); if (!isconn) { System.out.println("用户名称或者是密码不正确"); } else { System.out.println("已经连接OK"); //以下是linux的示例 //将本地conf/server_start.sh传输到远程主机的/opt/pg944/目录下 //SCPClient clt = conn.createSCPClient(); //clt.put("conf/server_start.sh", "/opt/pg944/"); //执行命令 //ssh.execCommand("sh /root/hello.sh"); //ssh.execCommand("perl /root/hello.pl"); //只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常. //多个命令用&&隔开 String commands = "ipconfig&&md F:\\\\test\\\\myfolder&&echo 333333>f:\\3.txt&&echo 44444>f:\\4.txt"; ssh = conn.openSession(); // windows系统执行命令需要再前面加cmd /c ssh.execCommand("cmd /c "+commands); //ssh.execCommand(command); //将Terminal屏幕上的文字全部打印出来 InputStream is = new StreamGobbler(ssh.getStdout()); BufferedReader brs = new BufferedReader(new InputStreamReader(is,"gbk")); while (true) { String line = brs.readLine(); if (line == null) { break; } System.out.println(line); } } } catch (IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); } finally { //连接的Session和Connection对象都需要关闭 if (ssh != null) { ssh.close(); } if (conn != null) { conn.close(); } }
标签:java,execCommand,ganymed,System,ssh2,ssh,&&,println,conn 来源: https://blog.51cto.com/u_13585440/2704215