zoukankan      html  css  js  c++  java
  • [C#]SharpSSH-一个可以使用SSH连接的.NET库

    A Secure Shell (SSH) library for .NET

    觉得有用,就记录下来了

    http://www.tamirgal.com/blog/page/SharpSSH.aspx

    http://sourceforge.net/projects/sharpssh/?source=typ_redirect

    再来个例子供参考

    public partial class SSHWnd : Form
    {
        private SshShell ss = null;
        private Stream io = null;
        private SshConnectionInfo scInfo;
    
        private static byte[] buffer;
        private static int bufSize = 256;
        private static AsyncCallback readCallback;
    
        private delegate void addLineDelegate(string s);
    
        public SSHWnd(SshConnectionInfo scInfo)
        {
            InitializeComponent();
    
            this.scInfo = scInfo;
            try
            {
                ss = new SshShell(scInfo.Host, scInfo.User);
                if (scInfo.Pass != null)
                {
                    ss.Password = scInfo.Pass;
                }
                if (scInfo.IdentityFile != null)
                {
                    ss.AddIdentityFile(scInfo.IdentityFile);
                }
                ss.Connect(22);
                io = ss.GetStream();
                buffer = new byte[bufSize];
                readCallback = new AsyncCallback(OnCompletedRead);
                io.BeginRead(buffer, 0, bufSize, readCallback, null);
            }
            catch
            {
                MessageBox.Show("Error!");
            }
        }
    
        private void OnCompletedRead(IAsyncResult ar)
        {
            int bytesRead = io.EndRead(ar);
    
            if (bytesRead > 0)
            {
                String str = Encoding.UTF8.GetString(buffer, 0, bytesRead);
                this.Invoke(new addLineDelegate(addLine), new object[]{str});
                io.BeginRead(buffer, 0, bufSize, readCallback, null);
            }
        }
    
        void addLine(string s)
        {
            textBox1.AppendText(s);
        }
    
        private void SSHWnd_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (ss.Connected)
            {
                io.Close();
                ss.Close();
            }
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox2.Text != "")
            {
                try
                {
                    StreamWriter sw = new StreamWriter(io);
                    sw.Write(textBox2.Text);
                    sw.Write('
    ');
                    sw.Flush();
                }
                catch
                {
                    MessageBox.Show("Terminated yet!");
                    this.Close();
                }
    
                textBox2.Text = "";
            }
        }
    }
  • 相关阅读:
    【k8s】pv 处在 Terminating 状态
    【k8s】命令行自动补全
    【k8s】允许 master 节点运行 pod
    【k8s】Harbor 安装
    Nginx 允许 frame 嵌套
    Python基础教程:json中load和loads区别
    Python 基础教程:用户交互语句
    Python正则表达式-常用函数的基本使用
    Python字典循环与字典排序
    4道Python文件操作和函数练习题
  • 原文地址:https://www.cnblogs.com/boneking/p/4341650.html
Copyright © 2011-2022 走看看