java连接linux
本地调用
public static void main(String[] args){ Process proc = RunTime.getRunTime().exec( "cd /home/winnie; ls;" ) // 标准输入流(必须写在 waitFor 之前) String inStr = consumeInputStream(proc.getInputStream()); // 标准错误流(必须写在 waitFor 之前) String errStr = consumeInputStream(proc.getErrorStream()); int retCode = proc.waitFor(); if (retCode == 0 ){ System.out.println( "程序正常执行结束" ); } } /** * 消费inputstream,并返回 */ public static String consumeInputStream(InputStream is){ BufferedReader br = new BufferedReader( new InputStreamReader(is)); String s ; StringBuilder sb = new StringBuilder(); while ((s=br.readLine())!= null ){ System.out.println(s); sb.append(s); } return sb.toString(); } |
远程调用(一)
导入ganymed-ssh2包
import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; public static void main(String[] args){ String host = "210.38.162.181" ; int port = 22 ; String username = "root" ; String password = "root" ; // 创建连接 Connection conn = new Connection(host, port); // 启动连接 conn.connection(); // 验证用户密码 conn.authenticateWithPassword(username, password); Session session = conn.openSession(); session.execCommand( "cd /home/winnie; ls;" ); // 消费所有输入流 String inStr = consumeInputStream(session.getStdout()); String errStr = consumeInputStream(session.getStderr()); session.close; conn.close(); } /** * 消费inputstream,并返回 */ public static String consumeInputStream(InputStream is){ BufferedReader br = new BufferedReader( new InputStreamReader(is)); String s ; StringBuilder sb = new StringBuilder(); while ((s=br.readLine())!= null ){ //System.out.println(s); sb.append(s).append( "\n" ); } return sb.toString(); } |
远程调用(二)
使用jsch实现
import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public static void main(String[] args){ String host = "210.38.162.181" ; int port = 22 ; String username = "root" ; String password = "root" ; // 创建JSch JSch jSch = new JSch(); // 获取session Session session = jSch.getSession(username, host, port); session.setPassword(password); Properties prop = new Properties(); prop.put( "StrictHostKeyChecking" , "no" ); session.setProperties(prop); // 启动连接 session.connect(); ChannelExec exec = (ChannelExec)session.openChannel( "exec" ); exec.setCommand( "cd /home/winnie; ls;" ); exec.setInputStream( null ); exec.setErrStream(System.err); exec.connect(); // 消费所有输入流,必须在exec之后 String inStr = consumeInputStream(exec.getInputStream()); String errStr = consumeInputStream(exec.getErrStream()); exec.disconnect(); session.disconnect(); } /** * 消费inputstream,并返回 */ public static String consumeInputStream(InputStream is){ BufferedReader br = new BufferedReader( new InputStreamReader(is)); String s ; StringBuilder sb = new StringBuilder(); while ((s=br.readLine())!= null ){ System.out.println(s); sb.append(s).append( "\n" ); } return sb.toString(); } |
前端页面展示换行需添加样式
.content{
white-space: pre-wrap;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律