zoukankan      html  css  js  c++  java
  • c# 连接操作linux

    0.背景

    现在linux重要性是显然易见的,学习linux是必须,通过程序来来控制linux 也能发挥很大的作用。比如我们可以做一个自动化部署的程序,来发布程序到linux上面。

    1.在项目中添加SSH.NET 

    2.如何使用SSH.NET 直接上来代码

     private static string host = "xxx.xxx.xxx.xx";
            private static string username = "root";
            private static string password = "pwd";
    
            // Setup Credentials and Server Information
            public static ConnectionInfo ConnNfo = new ConnectionInfo(host, 22, username,
                 new AuthenticationMethod[]{
                    // Pasword based Authentication
                    new PasswordAuthenticationMethod(username,password),
                     // Key Based Authentication (using keys in OpenSSH Format)
                     //new PrivateKeyAuthenticationMethod("username",new PrivateKeyFile[]{
                     //    new PrivateKeyFile(@"..openssh.key","passphrase")
                     //}),
                 }
             );
    
            static void Main(string[] args)
            {
    
                ExecuteCommand1();
                ExecuteCommand2();
                Upload();
                Console.ReadLine();
            }
    
            /// <summary>
            /// 开始
            /// </summary>
            public void Start()
            {
                using (var client = new SshClient(host, username, password))
                {
                    try
                    {
                        string command = "ls";
                        client.Connect();
                        string result = client.RunCommand(command).Execute();
                        Console.WriteLine(result);
                        client.Disconnect();
                    }
                    catch (Exception e1)
                    {
                        Console.WriteLine(e1.Message);
                    }
                }
            }
    
            /// <summary>
            /// 执行 command
            /// </summary>
            public static void ExecuteCommand1()
            {
                using (var sshclient = new SshClient(ConnNfo))
                {
                    sshclient.Connect();
                    using (var cmd = sshclient.CreateCommand("cd /local && ls"))
                    {
                        string result = cmd.Execute();
                        Console.WriteLine("Command>" + cmd.CommandText);
                        Console.WriteLine("Return Value = {0}", cmd.ExitStatus);
                        Console.WriteLine("result>" + result);
                    }
                    sshclient.Disconnect();
                }
            }
    
            /// <summary>
            /// 执行 command
            /// </summary>
            public static void ExecuteCommand2()
            {
                // Execute (SHELL) Commands
                using (var sshclient = new SshClient(ConnNfo))
                {
                    sshclient.Connect();
                    // quick way to use ist, but not best practice - SshCommand is not Disposed, ExitStatus not checked...
                    Console.WriteLine(sshclient.CreateCommand("cd /local && ls -lah").Execute());
                    Console.WriteLine(sshclient.CreateCommand("pwd").Execute());
                    Console.WriteLine(sshclient.CreateCommand("cd /local/soft && ls -lah").Execute());
                    sshclient.Disconnect();
                }
            }
    
            /// <summary>
            /// 上传
            /// </summary>
            public static void Upload()
            {
                using (var sftp = new SftpClient(ConnNfo))
                {
                    string uploadfn = "Renci.SshNet.dll";
    
                    sftp.Connect();
                    sftp.ChangeDirectory("/local/soft");
                    using (var uplfileStream = System.IO.File.OpenRead(uploadfn))
                    {
                        sftp.UploadFile(uplfileStream, uploadfn, true);
                    }
                    sftp.Disconnect();
                }
            }
  • 相关阅读:
    制作企业IT解决方案的几项训练
    Community Server 1.0 Beta安装使用记录
    SharePoint Portal Server定制之区域模板定义
    从售前工作的角度了解SharePoint产品和技术
    活动目录的应用组策略
    企业客户组织结构在售前工作中的作用
    Community Server 1.0 Beta安装使用记录(二)
    2004年钢铁行业信息化现状
    IT解决方案编写小结
    关于软件系统架构设计的一些新思想
  • 原文地址:https://www.cnblogs.com/nele/p/7350670.html
Copyright © 2011-2022 走看看