关于C# 使用 开源插件SharpSSH 的问题!

majo_11389747 2011-03-03 03:39:07
实现目的 就是 连接到 服务器linux 并返回值

一般实现这个功能大家都是用DOS窗口输入命令,让后在得到返回值。

但是我不是用DOS窗体 只需要吧返回值返回到某个控件上的TEXT。

问题:在我点击button1按钮时 程序就没有响应了!
我没有做过这个东西所以手生,轻各位高手帮帮忙。


我创建了一个窗体文件Form1.cs 代码如下

引用 using Tamir.SharpSsh.jsch;

按钮事件:
private void button1_Click(object sender, EventArgs e)
{
host = "192.168.0.222";
user = "root";
pwd = "*****";

//Ssh.RunExample(UserName, UserPwd, http);//连接服务器
if(Ssh.OpenShell(host,user,pwd))
{
Ssh.Shell("df -h");
string info = Ssh.GetAllString();

this.textBox1.Text = info;
Ssh.Close(); //关闭数据库
this.textBox2.Text = "111";
}
//Console.ReadLine();
}


然后建立了一个SSH.cs 类库文件
引用 using Tamir.SharpSsh.jsch;

写入以下代码

public class ssh
{
System.IO.MemoryStream outputstream = new System.IO.MemoryStream();
Tamir.SharpSsh.SshStream inputstream = null;
Channel channel = null;
Session session = null;
//命令等待标识
string waitMark = "]#";

//打开连接
public bool OpenShell(string host, string username, string pwd)
{
try
{
//连接
inputstream = new Tamir.SharpSsh.SshStream(host, username, pwd);


return inputstream != null;
}
catch
{
throw;
}
}

//执行命令
public bool Shell(string cmd)
{
if (inputstream == null) return false;

string initinfo = GetAllString();

inputstream.Write(cmd);
inputstream.Flush();

string currentinfo = GetAllString();
while (currentinfo == initinfo)
{
System.Threading.Thread.Sleep(100);
currentinfo = GetAllString();
}

return true;
}

//获取输出信息
public string GetAllString()
{
string outinfo = Encoding.UTF8.GetString(outputstream.ToArray());
//等待命令结束字符
while (!outinfo.Trim().EndsWith(waitMark))
{
//System.Threading.Thread.Sleep(200);
outinfo = Encoding.UTF8.GetString(outputstream.ToArray());
}
outputstream.Flush();
return outinfo.ToString();
}

//关闭连接
public void Close()
{
if (inputstream != null) inputstream.Close();
}
}
...全文
708 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
家猫 2011-06-02
  • 打赏
  • 举报
回复
string waitMark = "]#";

这个有可能是]$...这二种情况都会出现的
majo_11389747 2011-03-03
  • 打赏
  • 举报
回复
第二个错误 同样 来自 Session.cs

public void connect(int connectTimeout)

在这个方法中 捕捉到了异常

内容是 无法从传输连接中读取数据:您的主机这个女的软件放弃了一个已建立的连接。
majo_11389747 2011-03-03
  • 打赏
  • 举报
回复
我测试了一下 SharpSSH插件中
Session.cs 文件里
internal Session(JSch jsch)
{
;
this.jsch=jsch;
buf=new Buffer();
packet=new Packet(buf);
}
运行上述代码是 弹出 窗口

不一致的行尾

以下文件中的行尾不一致。要将行尾标准化吗?
sugarforever 2011-03-03
  • 打赏
  • 举报
回复
很久以前用的SharpSSH了。根据我的揣测,可以调试一下。你看点了button后,进程是走到哪里卡着了。
另外建议把ssh操作封装到线程了操作。通过委托通知UI线程更新界面。
【变分多谐波对偶模式追踪】从噪声信号中提取重复瞬态分量的方法(Matlab代码实现)内容概要:本文介绍了“变分多谐波对偶模式追踪”这一信号处理方法,旨在从含有噪声的信号中有效提取重复出现的瞬态成分。该方法结合了变分模态分解与多谐波分析的优势,通过构建对偶模式追踪模型,实现了对微弱瞬态特征的精准分离与增强,特别适用于机械故障诊断、生物医学信号处理等领域。文中详细阐述了算法原理、数学模型构建及其实现步骤,并提供了基于Matlab的代码实现,便于读者复现与应用。; 适合人群:具备一定信号处理基础,从事机械故障诊断、生物医学工程或相关领域的研究生及科研人员。; 使用场景及目标:①从强噪声背景中提取机械设备的周期性冲击信号以进行故障预警;②分析生物医学信号中的重复生理事件,如心电图或脑电图中的特定波形;③为需要高精度瞬态特征提取的研究提供可靠的算法支持与实现范例。; 阅读建议:此资源以Matlab代码实现为核心,不仅展示了算法的具体编程细节,还强调了理论与实践的紧密结合。学习者应在理解算法原理的基础上,动手运行并调试所提供的代码,通过改变参数观察结果变化,从而深入掌握该方法的应用技巧与优化策略。
内容概要:本文围绕“数据驱动下光伏建筑群源荷不确定性解析及其储能多目标低碳经济调度研究”展开,提出了一种融合数据驱动方法与多目标优化算法的综合调度框架。研究首先基于历史数据对光伏发电出力与建筑用电负荷的不确定性进行建模,通过场景生成与削减技术提取典型运行场景,并采用概率预测方法精确刻画源荷波动特征。在此基础上,构建了涵盖经济性、低碳性及系统运行稳定性等多重目标的储能优化调度模型,并引入NSGA-II等先进多目标进化算法求解Pareto最优解集,实现储能系统的协同优化与灵活调度。文中还基于Python语言完整实现了从数据预处理、不确定性建模、优化建模到算法求解的全流程,并通过具体仿真案例验证了所提方法在降低系统运行成本、提升可再生能源消纳水平、减少碳排放等方面的综合效益。; 适合人群:具备一定电力系统基础知识和Python编程能力,从事新能源调度、综合能源系统优化或低碳技术研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于光伏建筑群等分布式能源系统的储能优化调度;②支撑多目标优化在能源系统中的实践,实现经济与环保双重目标的平衡;③为相关课题研究提供可复现的代码框架与技术路线参考。; 阅读建议:建议读者结合文中提供的Python代码,深入理解不确定性建模、场景生成、多目标优化建模与求解的具体实现过程,并可通过调整参数或引入新模型进行拓展研究。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧