当前位置: 首页 > 编程语言 > C#

在SSH.NET中执行长时间命令并在TextBox中连续显示结果分享

时间:2023-04-11 00:28:37 C#

C#学习教程:在SSH.NET中执行一个长命令并在TextBox中连续显示结果在PuTTY等中。结果显示在Windows应用程序的文本框中。例如,我正在尝试执行以下命令wgethttp://centos-webpanel.com/cwp-latestshcwp-latest使用以下代码SshClientsshclient=newSshClient(IPtxtBox.Text,UserNameTxt.Text,PasswordTxt.Text);sshclient.Connect();ShellStreamstream=sshclient.CreateShellStream("customCommand",80,24,800,600,1024);resultTxt.Text=SSHCommand.SendCommand(stream,"wgethttp://centos-webpanel.com/cwp-latest&&shcwp-latest");privatestaticvoidWriteStream(stringcmd,StreamWriterwriter,ShellStreamstream){writer.WriteLine(cmd);while(stream.Length==0)Thread.Sleep(500);}privatestaticstringReadStream(StreamReaderreader){StringBuilderresult=newStringBuilder();弦线;while((line=reader.ReadLine())!=null)result.AppendLine(line);返回结果.ToString();}privatestaticstringSendCommand(ShellStreamstream,stringcustomCMD){StringBuilderstrAnswer=newStringBuilder();varreader=newStreamReader(stream);varwriter=newStreamWriter(溪流);writer.AutoFlush=true;WriteStream(customCMD,writer,stream);strAnswer.AppendLine(ReadStream(阅读器));字符串答案=strAnswer.ToString();返回answer.Trim();}此命令需要执行时间,结果文本框中不显示任何结果首先,除非有充分的理由,否则不要使用“shell”通道自动执行命令。使用“exec”通道(SSH.NET中的CreateCommand或RunCommand)。要将输出提供给TextBox,只需继续在后台线程上读取流:}privatevoidRunCommand(){varhost="hostname";varusername="用户名";varpassword="密码";使用(varclient=newSshClient(主机,用户名,密码)){client.Connect();//如果command2依赖于command1修改的环境,//像这样执行它们。//如果不是,请使用单独的CreateCommand调用。变种命令=客户端。创建命令(“命令1;命令2”);变种结果=命令。开始执行();使用(varreader=newStreamReader(cmd.OutputStream,Encoding.UTF8,true,1024,true)){while(!result.IsCompleted||!reader.EndOfStream){stringline=reader.ReadLine();if(line!=null){textBox1.Invoke((MethodInvoker)(()=>textBox1.AppendText(line+Environment.NewLine)));}}}cmd.EndExecute(结果);对于稍微不同的方法,请参见类似的WPF问题:SSH.NET实时命令输出监控。以上就是C#学习教程:在SSH.NET中执行长时间命令,并在TextBox中不断显示结果,分享所有内容。如果对大家有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: