资源简介
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
相关资源
- C# 调用win32 api函数-user32.dll详细说明
- C# 调用BarTender打印条码DEMO
- 大型比赛竞赛抽签系统 可打印 c# vs
- C#编写的Gerber查看器
- lua C# .Net4.0 vs2010 LuaInterface
- C#十六进制编辑器
- 明华URF-35H读卡器 C#读写源码 为大家
- C#文件流读取CSV文件
- c#读写PDF文件sql
- C# winform Socket大文件传输
- c#车牌识别系统附30张测试图片
- 《C#面向对象程序设计》源代码(CS)
- 金旭亮《C#面向对象程序设计》教案
- 试题库管理系统毕业论文(C#)源程序
- 学校网站原代码(C#.NET)
- C#-数据库操作技术-员工管理系统
- c#web开发入门经典
- C#与Matlab混合编程的几种方式
- c# 开发与 mysql数据库实现的增删改查
- C#异步操作 异步查询数据库 异步处理
- Basler相机通过IO触发源码
- [源代码] 《领域驱动设计 (C# 2008 实
- 松下PLC与C#通讯串口调试入门教程.z
- USB 继电器控制器 LCUS-1 保证能用 c#
- C# AES加密解密小工具
- C#圆形按钮,非常漂亮动态~~
- [精]C#仿QQ右下角弹出提示框()
- C#进程间通信-共享内存代码
- 有史以来最简单的三层(C#)
- vb调用c#编写的串口DLL文件(vb源码
评论
共有 条评论