远程采集服务器信息,比如说磁盘信息、内存信息。
现介绍java通过SSH执行命令采集服务器信息,比如说执行df、ls、top。
/** * * SSH远程执行shell类 */ public class SSHSession implements IRemoteSession { /** SSH连接 */ private Connection conn; private NodeInfoVO nodeInfoVO; private InputStream stdOut = null; private String charset = Charset.defaultCharset().toString(); private static final int TIME_OUT = 1000 * 5 * 60; private static final Logger LOGGER = Logger.getLogger(SSHSession.class); /** * 构造函数 * * @param nodeInfoVO */ public SSHSession(NodeInfoVO nodeInfoVO) { this.nodeInfoVO = nodeInfoVO; } /** * 登录 * * @return * @throws IOException */ private boolean login() throws IOException { conn = new Connection(nodeInfoVO.getServerIp()); conn.connect(); return conn.authenticateWithPassword(nodeInfoVO.getServerUserName(), nodeInfoVO.getServerPassword()); } /** * 执行脚本 * * @param cmds * @return * @throws Exception */ public String execCommand(String cmds) { String outStr = ""; try { if (login()) { // Open a new {@link Session} on this connection Session session = conn.openSession(); // Execute a command on the remote machine. session.execCommand(cmds); stdOut = new StreamGobbler(session.getStdout()); outStr = processStream(stdOut, charset); session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT); } else { LOGGER.error("登录远程机器失败"); // 自定义异常类 实现略 } } catch (Exception e) { return outStr; } finally { close(); } return outStr; } /** * @param in * @param charset * @return * @throws IOException * @throws UnsupportedEncodingException */ private String processStream(InputStream in, String charset) throws Exception { byte[] buf = new byte[1024]; StringBuilder sb = new StringBuilder(); while (in.read(buf) != -1) { sb.append(new String(buf, charset)); } return sb.toString(); } public static void main(String args[]) throws Exception { SSHSession exe = new SSHSession(new ServerBean("10.10.5.219", 22, "root", "tt")); System.out.println(exe.execCommand("ls ")); } /** * @return 获取 serverBean属性值 */ public NodeInfoVO getNodeInfoVO() { return nodeInfoVO; } /** * * @see com.comtop.numen.monitor.collection.appservice.device.remote.IRemoteSession#close() */ @Override public void close() { if (conn != null) { conn.close(); } IOUtils.closeQuietly(stdOut); }
相关推荐
Python – paramiko 模块远程执行ssh 命令 nohup 不生效的问题解决 1、使用 paramiko 模块ssh 登陆到 linux 执行nohup命令不生效 # 执行命令 def command(ssh_config, cmd, result_print=None, nohup=False): ssh ...
jsch通过java代码ssh登录主机远程执行命令并返回结果。注意,这个是源代码,请自行编译后在使用。当然,也可以根据自己的需要更改源代码。
widnows自动登录ssh服务器自动执行命令的脚本
ssh远程连接linux系统工具,免费,操作简单,命令行以及文件上传下载。本人用于远程云服务器,亲测很实用,推荐!!!
做好ip清单,每行一个ip,ssh批量登录执行命令
jenkins 执行远程linux命令,jenkins 执行远程linux命令,jenkins 执行远程linux命令
C# 利用Renci库来实现ssh客户端,可以执行ssh命令并获取返回结果。...通过创建ShellStream,执行命令后,使用Expect方法并配合正则表达式,可以获取到命令执行后的全部输出信息。 完整的Vs2008 C#代码,可编译和测试。
ssh远程连接其他主机并执行命令,只能执行少量命令。也可自行优化改进
java_ssh执行命令
远程连接服务器必备工具 SSH,远程连接,远程服务器,远程控制,ssh
batssh是一个在Linux系统下的批量远程执行脚本工具 使用例子: batssh -f /tmp/all_hosts "service iptables stop
本文主要介绍三种方法,在Mac下使用SSH连接远程Linux服务器。 方法一:使用终端 1.打开终端,点击新建远程连接 2.点击加号,然后添加自己服务器的IP地址 3.点击右侧的服务器,然后在下方输入用户名,选择最下方的 ...
主要介绍了ssh远程执行命令方法和Shell脚本实例,本文讲解了ssh执行远程操作方法和远程执行命令shell脚本示例,需要的朋友可以参考下
通过SSH访问远程Linux服务器的四个安全策略.pdf
Linux服务器批处理远程命令执行工具。纯java实现的ssh协议(jsch),支持同时连接多台linux主机,执行相同的命令。只需配置目标主机的ip地址、用户名和密码即可实现远程操作。服务器无需配置ssh对等协议或安装任何...
shell脚本,通过snmp方式获取远程服务器的CPU内存和硬盘的使用率,需要支持snmpget和snmpwalk命令,并且为了支持小数运算,需要安装bc命令。
jassh, 在远程服务器上,高级 Scala SSH API用于轻松和快速操作 JASSH - Scala SSH API 高级 Scala SSH API,用于远程服务器上的轻松和快速操作。这个API是基于 JSCH的。 接口稳定。提供许多 helper 函数以简化unix...
SSH协议连接远程服务器的java实现,运行稳定,性能极佳
SharpSSH执行SSH命令例子, C# 执行linux 命令并返回结果
FinalShell是一款功能强大的远程终端软件,它可以让用户通过SSH、Telnet或者RDP等协议连接到远程服务器或设备,实现远程控制和管理。FinalShell支持多标签页、会话管理、命令自动补全、命令批量执行等功能,用户可以...