当前位置: 首页 > news >正文

org.apache.sshd的SshClient客户端 连接服务器执行命令 示例

引入依赖

		<dependency><groupId>org.apache.sshd</groupId><artifactId>sshd-core</artifactId><version>2.9.1</version></dependency>

示例代码,可以直接执行,也可以做替换命令、维护session等修改

package com.demo.demo;import lombok.extern.slf4j.Slf4j;
import org.apache.sshd.client.SshClient;
import org.apache.sshd.client.channel.ChannelExec;
import org.apache.sshd.client.channel.ClientChannelEvent;
import org.apache.sshd.client.future.AuthFuture;
import org.apache.sshd.client.future.ConnectFuture;
import org.apache.sshd.client.session.ClientSession;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.EnumSet;
import java.util.concurrent.TimeUnit;@Slf4j
public class SshdUtil {public static final String WHO_AM_I = "whoami";public static void main(String[] args) {execute("**.**.**.**",22,"root","*****");}private static void execute(String host, int port, String username, String password) {SshClient client = SshClient.setUpDefaultClient();ClientSession session = null;try {client.start();ConnectFuture connectFuture = client.connect(username, host, port).verify(10, TimeUnit.SECONDS);if (connectFuture.isConnected()) {session = connectFuture.getSession();session.addPasswordIdentity(password);AuthFuture auth = session.auth().verify(10, TimeUnit.SECONDS);if (auth.isSuccess()) {channelCmd(session, WHO_AM_I);}}} catch (IOException e) {log.error("执行异常", e);} finally {try {if (session != null) {session.close();}client.close();} catch (IOException e) {log.error("关闭异常", e);}}}private static void channelCmd(ClientSession session, String cmd) throws IOException {ChannelExec channel = session.createExecChannel(cmd);ByteArrayOutputStream output = new ByteArrayOutputStream();ByteArrayOutputStream outputErr = new ByteArrayOutputStream();channel.setOut(output);channel.setErr(outputErr);channel.open();channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED), 0);log.info("Output:{}", output.toString().replace("\n", "\\n"));log.info("Error:{}", outputErr.toString().replace("\n", "\\n"));}
}

输出如下,分别代表了输出流stdout和错误输出流stderr

*** [main] SshdUtil INFO  -Output:root\n
*** [main] SshdUtil INFO  -Error:

相关文章:

org.apache.sshd的SshClient客户端 连接服务器执行命令 示例

引入依赖 <dependency><groupId>org.apache.sshd</groupId><artifactId>sshd-core</artifactId><version>2.9.1</version></dependency>示例代码&#xff0c;可以直接执行&#xff0c;也可以做替换命令、维护session等修改 p…...

STM32 裸机编程 03

MCU 启动和向量表 当 STM32F429 MCU 启动时&#xff0c;它会从 flash 存储区最前面的位置读取一个叫作“向量表”的东西。“向量表”的概念所有 ARM MCU 都通用&#xff0c;它是一个包含 32 位中断处理程序地址的数组。对于所有 ARM MCU&#xff0c;向量表前 16 个地址由 ARM …...

Python ‘list‘ object is not callable错误

我尝试着解决“TypeError: ‘list’ object is not callable”这个错误。在Python编程中&#xff0c;我有时会遇到这个错误。这个错误通常是由于我错误地尝试像函数一样调用一个列表对象。为了解决这个问题&#xff0c;我需要找出错误发生的具体位置&#xff0c;然后进行修正。…...

原生php 实现redis登录五次被禁,隔天再登陆

<?php /*** Created by PhpStorm.* User: finejade* Date: 2023-10-18* Time: 11:08*/ session_start();include_once(header.php); include_once(connect.php); include_once(common.php); include_once(redis.php); try {// 常量 用户错误次数记录define("USER_LOGI…...

24. Kernel 4.19环境下,Cilium网络仍然需要使用iptables

在设计这套容器集群服务时,我从原来的k3s架构中分离出一个问题,那就是容器网络插件应该选择哪个。因为我设计的目标是给服务器领域使用的容器引擎,所以我就不需要考虑太多边缘IOT设备的情况,直接拉满技能找了cilium。cilium借助内核ebpf技术的出现,让我看到了网络性能更好…...

java中的容器(集合),HashMap底层原理,ArrayList、LinkedList、Vector区别,hashMap加载因子0.75原因

一、java中的容器 集合主要分为Collection和Map两大接口&#xff1b;Collection集合的子接口有List、Set&#xff1b;List集合的实现类有ArrayList底层是数组、LinkedList底层是双向非循环列表、Vector&#xff1b;Set集合的实现类有HashSet、TreeSet&#xff1b;Map集合的实现…...

Linux Server 终止后立即重启报错 bind error: Address already in use

先启动Server&#xff0c;再启动Client&#xff0c;然后使用CtrlC关闭Server&#xff0c;马上再运行Server&#xff0c;会得到以下结果&#xff1a; bind error: Address already in use这是因为&#xff0c;虽然Server的应用程序终止了&#xff0c;但TCP协议层的连接并没有完全…...

【Python 千题 —— 基础篇】分解数据

题目描述 题目描述 编写一个程序&#xff0c;输入一个类似 “233,234,235” 格式的字符串&#xff0c;然后提取字符串中的数字&#xff0c;将这些数字存储在列表中&#xff0c;并输出该列表。在这里&#xff0c;我们使用 eval 函数来解析字符串中的数字。 输入描述 输入一个…...

【C++】C++11新特性之右值引用与移动语义

文章目录 一、左值与左值引用二、右值与右值引用三、 左值引用与右值引用比较四、右值引用使用场景和意义1.左值引用的短板2.移动构造和移动赋值3.STL中右值引用的使用 五、万能引用与完美转发1.万能引用2.完美转发 一、左值与左值引用 在C11之前&#xff0c;我们把数据分为常…...

家庭燃气表微信抄表识别系统

1.背景需求 目前家里燃气度数的读数上报&#xff0c;每个月在社区微信群里面将手机拍摄的燃气表读数截图&#xff08;加住址信息水印&#xff09;&#xff0c;发到群里给抄表员。 2.总体设计 设计目标 功能一&#xff1a;手机上随时可以远程采集读数图片&#xff08;自动加住…...

EF执行迁移时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的

ef在执行时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。 只需要在数据库链接字符串后增加EncryptTrue;TrustServerCertificateTrue;即可 再次执行...

视频标注的两个主要方法

视频标注技术 单一图像法 在自动化工具面世之前&#xff0c;视频标注效率不高。各公司使用单一图像法提取视频中的所有帧&#xff0c;然后使用标准图像标注技术将它们作为图像来标注。在30fps的视频中&#xff0c;每分钟有1800帧。这个过程没有利用视频标注的优势&#xff0c;…...

学成在线第一天-项目介绍、项目的搭建、开发流程以及相关面试题

目录 一、项目介绍 二、项目搭建 三、开发流程 四、相关面试题 五、总结 一、项目介绍 背景 业务 技术 背景&#xff1a;首先是整个这个行业的背景 然后基于这个行业的背景引出当前项目的背景 业务&#xff1a;功能模块 功能业务流程 技术&#xff1a;整体架构&am…...

《数据结构与算法之美》读书笔记1

Java的学习 方法参数多态&#xff08;向上和向下转型&#xff09; 向上转型&#xff1a; class Text{public static void main(String[] args) {Animals people1 new NiuMa();people1.eat1();//调用继承后公共部分的方法&#xff0c;没重写调用没重写的&#xff0c;重写了调…...

接口测试经验合集

一 、接口测试常见问题 前景提要&#xff1a;由于本人测试小白&#xff0c;可能所遇问题都较为基础&#xff0c;测试小白可以参考 1.1 postman会报 connect ECONNREFUSED jemeter会报 org.apache.http.conn.HttpHostConnectException: Connect tofailed: Connection refus…...

Leetcode—2331.计算布尔二叉树的值【简单】

2023每日刷题&#xff08;六&#xff09; Leetcode—2331.计算布尔二叉树的值 递归实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool evaluateTree(struct TreeNod…...

Java面试(基础篇)——解构Java常见的基础面试题 结合Java源码分析

fail-safe 和fail-fast机制 Fail-fast&#xff1a;快速失败 Fail-fast &#xff1a; 表示快速失败&#xff0c;在集合遍历过程中&#xff0c;一旦发现容器中的数据被修改了&#xff0c;会立刻抛出ConcurrentModificationException 异常&#xff0c;从而导致遍历失败 package …...

Ubuntu 17.10的超震撼声音权限

从GNOME GUADEC 2017开发者大会归来之后&#xff0c;Canonical的Didier Roche就开始了一个日更博客系列&#xff0c;主要讲述即将带来的Ubuntu 17.10&#xff08;Artful Aardvark&#xff09;发行版将如何从Unity到GNOME Shell的转变。有趣的是&#xff0c;Ubuntu Unity桌面环境…...

图像信号处理板设计原理图:2-基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板

综合图像处理硬件平台包括图像信号处理板2块&#xff0c;视频处理板1块&#xff0c;主控板1块&#xff0c;电源板1块&#xff0c;VPX背板1块。 一、板卡概述 图像信号处理板包括2片TI 多核DSP处理器-TMS320C6678&#xff0c;1片Xilinx FPGA XC7K420T-1FFG1156&#xff0c;1片X…...

【数组】移除元素(暴力遍历×双指针√)

一、力扣题目链接 27.移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 你不需要考虑数组中超出新长度后面的元素。 二、思路 要知道数组的元素在内存地址中是连续的&#xff0c;不…...

AI MV制作平台选型指南

本指南针对Suno生成歌曲后的MV制作需求&#xff0c;按 workflow 效率分类选型&#xff0c;核心解决多工具拼接返工多的痛点。1. AI MV制作平台核心分类 Suno出歌后&#xff0c;主流生产路径对应3类平台&#xff0c;差异核心在流程效率而非生成能力&#xff1a;平台类型核心特征…...

039、FreeRTOS与嵌入式GUI(如LVGL、emWin)的整合:当实时内核遇上图形界面

039、FreeRTOS与嵌入式GUI(如LVGL、emWin)的整合:当实时内核遇上图形界面 最近在调试一个智能家居中控屏项目,遇到了一个典型问题:触摸滑动列表时,界面偶尔会卡顿半秒,同时后台的传感器数据上报也出现了丢包。这种问题在整合RTOS和GUI时太常见了——图形渲染吃掉了大量…...

万象视界灵坛环境部署:OpenShift平台容器化部署与RBAC权限控制

万象视界灵坛环境部署&#xff1a;OpenShift平台容器化部署与RBAC权限控制 1. 项目概述与技术背景 万象视界灵坛&#xff08;Omni-Vision Sanctuary&#xff09;是一款基于OpenAI CLIP模型构建的多模态智能感知平台。该平台通过创新的像素风格界面设计&#xff0c;将复杂的语…...

2026年4月导视标识标牌如何选?专业厂家实力复盘与避坑指南

一、导视标识标牌:商业空间的”无声导购员”家人们谁懂啊&#xff0c;走进一个商场找不到厕所的尴尴瞬间&#xff0c;或者在医院转了三圈还找不到诊室的崩溃体验-这些都和导视标识标牌的设计息息相关。导视标识标牌本质上是一套系统化的视觉语言&#xff0c;通过文字、图形、色…...

Python入门到AI开发:基于浦语灵笔2.5-7B的实践路径

Python入门到AI开发&#xff1a;基于浦语灵笔2.5-7B的实践路径 1. 为什么从Python开始学AI开发 很多人刚接触AI时会有点懵&#xff1a;要学数学&#xff1f;要懂算法&#xff1f;要会调参&#xff1f;其实大可不必。我带过不少零基础的朋友入门&#xff0c;发现最顺滑的路径是…...

用陶晶驰串口屏和STM32F407做个简易扫频仪:手把手教你绘制幅频特性曲线

用陶晶驰串口屏和STM32F407打造扫频仪&#xff1a;从硬件搭建到曲线绘制的完整指南 在电子测量领域&#xff0c;扫频仪是分析电路频率响应的基础工具。商用设备往往价格昂贵&#xff0c;而利用陶晶驰串口屏和STM32F407开发板&#xff0c;我们可以构建一个成本低廉但功能完备的简…...

【好靶场】你知道unionId吗

基础知识微信开放平台是一个公司的总账号&#xff0c;AppID 是旗下每个应用的唯一标识&#xff0c;UnionID 则是用户在该公司所有应用里的统一身份&#xff0c;用于跨应用识别同一用户。这样微信用户在同一家公司下面的应用&#xff08;公众号、小程序等&#xff09;下&#xf…...

运放稳定性分析:电阻电容组合对波特图零点极点的影响

1. 从洗澡水温度理解波特图与零极点 想象一下你正在调节淋浴的水温。刚开始转动混水阀时&#xff0c;水温变化很快&#xff0c;但随着接近舒适温度&#xff0c;变化速度会逐渐放缓。这个过程中有两个关键点&#xff1a;一个是水温开始变化的起始点&#xff08;类似零点&#xf…...

AD7656与DSP通信时序深度解析:如何用示波器搞定数据跳变和读取为0的故障

AD7656与DSP通信时序深度解析&#xff1a;如何用示波器搞定数据跳变和读取为0的故障 在高速数据采集系统的调试现场&#xff0c;AD7656模数转换器与DSP的通信问题堪称经典案例。当示波器屏幕上出现异常波形时&#xff0c;工程师需要像侦探破案一样&#xff0c;从时序关系的蛛丝…...

终极解决方案:Dell笔记本风扇噪音快速搞定指南

终极解决方案&#xff1a;Dell笔记本风扇噪音快速搞定指南 【免费下载链接】DellFanManagement A suite of tools for managing the fans in many Dell laptops. 项目地址: https://gitcode.com/gh_mirrors/de/DellFanManagement 还在为Dell笔记本风扇噪音而烦恼吗&…...