• 大小: 514KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-12
  • 语言: C#
  • 标签: c#  SSH  Renci  命令  

资源简介

C# 利用Renci库来实现ssh客户端,可以执行ssh命令并获取返回结果。一般的Renci ssh例子都不太好用,不能获取到命令的执行结果(shell执行命令后的输出信息),本例子是可以的。通过创建ShellStream,执行命令后,使用Expect方法并配合正则表达式,可以获取到命令执行后的全部输出信息。 完整的Vs2008 C#代码,可编译和测试。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Renci.SshNet;
using Renci.SshNet.Common;
using System.Text.Regularexpressions;

namespace sshCmdTest
{
    class Program
    {

        static void Main(string[] args)
        {
            var sshClient = new SshClient(“192.168.2.108“ 22 “root“ “abc.1234“);//主机,端口,用户名和密码
            try
            {
                sshClient.Connect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return;
            }

            ShellStream shellStreamSSH = sshClient.CreateShellStream(“shell“ 80 60 800 600 65536);//创建shell

            string hello = ““;
            TimeSpan span = new TimeSpan(0 0 10);//命令执行的超时时间是10秒,可以跟据需要调整
            Regex r = new Regex(“(\\[root@localhost ~\\]#)+“);//  [root@localhost ~]# 是命令执行结束后的提示符,\\表示转义,因为在Regex里面[和]有特殊含义

            hello = shellStreamSSH.Expect(r span);//获取登录后的打印信息,比如类似:Last login: Sun Aug 11 13:43:22 2019 from 192.168.2.124\r\r\n[root@localhost ~]# 
            Console.WriteLine(hello);

            string res = ““;
            string command = “ls /mnt“;
            shellStreamSSH.WriteLine(command);//发送命令
            shellStreamSSH.Flush();
            res = shellStreamSSH.Expect(r span);//等待命令执行结束,如果失败了就会返回null,正常执行就会返回结果信息
            Console.WriteLine(res);


            command = “ifconfig“;
            shellStreamSSH.WriteLine(command);
            shellStreamSSH.Flush();
            res = shellStreamSSH.Expect(r span);
            Console.WriteLine(res);
  

            sshClient.Disconnect();

            Console.ReadLine();
        }
    }

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        920  2019-08-08 15:56  sshCmdTest.sln

    ..A..H.     17920  2019-08-11 11:31  sshCmdTest.suo

     文件     470016  2019-03-02 16:45  sshCmdTest\bin\Debug\Renci.SshNet.dll

     文件       5120  2019-08-11 13:51  sshCmdTest\bin\Debug\sshCmdTest.exe

     文件      15872  2019-08-11 13:51  sshCmdTest\bin\Debug\sshCmdTest.pdb

     文件      14328  2019-08-11 13:51  sshCmdTest\bin\Debug\sshCmdTest.vshost.exe

     文件        490  2009-06-11 05:14  sshCmdTest\bin\Debug\sshCmdTest.vshost.exe.manifest

     文件     470016  2019-03-02 16:45  sshCmdTest\dll\Renci.SshNet.dll

     文件     167266  2019-03-02 16:49  sshCmdTest\dll\Renci.SshNet.rar

     文件       4559  2019-08-08 15:58  sshCmdTest\obj\Debug\ResolveAssemblyReference.cache

     文件        366  2019-08-11 13:51  sshCmdTest\obj\Debug\sshCmdTest.csproj.FileListAbsolute.txt

     文件       5120  2019-08-11 13:51  sshCmdTest\obj\Debug\sshCmdTest.exe

     文件      15872  2019-08-11 13:51  sshCmdTest\obj\Debug\sshCmdTest.pdb

     文件       1985  2019-08-11 13:52  sshCmdTest\Program.cs

     文件       1370  2019-08-08 15:56  sshCmdTest\Properties\AssemblyInfo.cs

     文件       2746  2019-08-08 15:58  sshCmdTest\sshCmdTest.csproj

     目录          0  2019-08-08 15:56  sshCmdTest\obj\Debug\TempPE

     目录          0  2019-08-08 15:58  sshCmdTest\bin\Debug

     目录          0  2019-08-11 13:51  sshCmdTest\obj\Debug

     目录          0  2019-08-08 15:56  sshCmdTest\bin

     目录          0  2019-08-08 15:57  sshCmdTest\dll

     目录          0  2019-08-08 15:56  sshCmdTest\obj

     目录          0  2019-08-08 15:56  sshCmdTest\Properties

     目录          0  2019-08-11 13:52  sshCmdTest

----------- ---------  ---------- -----  ----

              1193966                    24


评论

共有 条评论