ssh执行shell命令 C# 和java

C#版:

添加sharpssh工程Tamir.SharpSSH.dll,sharpSshTest.exe,Org.Mentalis.Security.dll,DiffieHellman.dll


程序:

using System.Threading;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System;
using System.Collections;
using System.Collections.Generic;
using Tamir.SharpSsh;


namespace testSSH
{
    class Program
    {
        static void Main(string[]args)
        {
            String str=ssh_conn("ip","user","password","cmd");
            System.Console.Write(str);
            System.Console.Read();
        }
        public static string ssh_conn(string ip, string root, string pass, string command)
        {


            SshStream ssh = new SshStream(ip, root, pass);
            ssh.Prompt = "#";
            ssh.RemoveTerminalEmulationCharacters = true;
            //Writing to the SSH channel  
            string response = ssh.ReadResponse();
            ssh.Write(command);
            ssh.Flush();
            ssh.Write("/n");
            //Reading from the SSH channel  
            response = ssh.ReadResponse();
            return response;


        }    
    }
}


Java 版:

配置构建路径,添加ganymed-ssh2-build251beta1.jar

主类:

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;


public class test {
	public static void main(String argv[]){
		Connection conn=null;
		boolean isAuthenticated=false;
		try{
			conn=new Connection("ip");
			conn.connect();
			isAuthenticated=conn.authenticateWithPassword("user", "password");
			if(isAuthenticated==false){
				System.out.println("SSH Login faild");
			}
			else{
				Session sess=conn.openSession();
				System.out.println(new SysCpuInfo(sess).getCPUInfo());
				sess.close();
			}
		}catch(Exception e){
			System.out.println(e.toString());
		}
	}
}


功能类:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;


public class SysCpuInfo {
	private int CPU_IDLE=0;
	int processStatus=0;
	public SysCpuInfo(Session session){
		InputStream is=null;
		BufferedReader brStat = null;
		StringTokenizer tokenStat=  null ;
		Session sess = null;
		String str = "";
		int i=0,j=0,cpuidle=0;
		try{
			sess=session;
			sess.execCommand("vmstat 2 10");//cmd
			/**
			 * 执行vmstat命令获得系统CPU负载情况,vmstat 2 10表示2秒钟输出一次共输出10组数据
			 * 显示结果如下:
			 * [mon724@v0A-202-40-18 ~]$ vmstat 2 10
			 * 	procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
			 * 	 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
			 * 	 1  0  41328  58860 199292 1877728    0    0     2    23    0    0  2  0 98  0  0
			 * 	 0  0  41328  58744 199292 1877884    0    0     0     0 1080 1057  3  0 96  0  0
			 * 	 0  0  41328  58084 199300 1878036    0    0     0   250 1310 1258  6  0 94  0  0
			 * 	 0  0  41328  57844 199300 1878148    0    0     0    32  761  697  3  0 97  0  0
			 * 	 0  0  41328  57852 199304 1878224    0    0     0   214  630  593  1  1 98  0  0
			 * 	 0  0  41328  56984 199304 1878372    0    0     0    50 1033  881  6  0 94  0  0
			 * 	 0  0  41328  56860 199304 1878440    0    0     0     0  536  578  2  0 98  0  0
			 * 	 1  0  41328  56868 199308 1878552    0    0     0   200  545  581  1  0 99  0  0
			 * 	 0  0  41328  56876 199308 1878644    0    0     0   102  628  663  1  0 99  0  0
			 * 	 0  0  41328  56876 199308 1878696    0    0     0   118  615  580  3  0 96  0  0 
			 */
			is = new StreamGobbler(sess.getStdout());


			brStat = new BufferedReader(new InputStreamReader(is));
			/*先读取第一行Title信息
			 * procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
			 * */
			String x=brStat.readLine();
			System.out.println(x);
			/*读取第二行Title信息读取第三行信息
			 *  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
			 * */
			x=brStat.readLine();
			System.out.println(x);
			/*读取第三行信息
			 *  1  0  41328  58860 199292 1877728    0    0     2    23    0    0  2  0 98  0  0
			 *  注意每次执行vmstat命令时,此行信息基本不变,因此不做为抽取数据使用
			 * */
			x=brStat.readLine();
			System.out.println(x);
			/*读取第4行到第12行信息
			 */
			for(j=0;j<9;j++)
			{
				str = brStat.readLine();
				System.out.println(str);
				if(str==null)
					break;
				tokenStat = new StringTokenizer(str);
				for(i=0;i<14;i++)
				{
					tokenStat.nextToken();
				}
//				int num=new Integer(tokenStat.nextToken()).intValue();
//				System.out.println(num);
//				cpuidle=cpuidle+num;
				cpuidle = cpuidle+new Integer(tokenStat.nextToken()).intValue();
			}
			CPU_IDLE = new Double(cpuidle/9).intValue();
			
	}catch(Exception e){System.out.println(e.toString());}
	}
	public int getCPUInfo()
	{
		return CPU_IDLE;
	}
}


sharpssh:https://sourceforge.net/projects/sharpssh/

ganymed-ssh2-build251beta1.jar: http://download.csdn.net/detail/wujinshan_28/4540547


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值