C# 远程升级Sftp,SSH,上传文件,发送Linux命令等

it2023-09-01  64

在C#中 目前比较流行的框架是SSH.NET 可以在Nuget里面找到 最近有个项目设计到远程更新文件 写了个简单的帮助类供参考 首先要导入Nuget包 连接远程服务器一般是需要用户名 密码 端口(默认22)就可以了 我这里提供三个方法 1.连接远程主机状态 2.向远程主机发送一个Linux命令 3.使用 SFTP远程传输一个文件

代码:

private const int DefaultPort = 22; /// <summary> /// 连接远程主机状态 /// </summary> /// <param name="host"></param> /// <param name="name"></param> /// <param name="pwd"></param> /// <returns></returns> public static Boolean ConnectStatus(string host, string name, string pwd) { try { var sshClient = new SshClient(host, DefaultPort, name, pwd); sshClient.Connect(); sshClient.Disconnect(); return true; } catch (Exception) { return false; } } /// <summary> /// 向远程主机发送一个Linux命令 /// </summary> /// <param name="host"></param> /// <param name="name"></param> /// <param name="pwd"></param> /// <param name="commandstr"></param> /// <returns></returns> public static Boolean SendCommand(string host,string name,string pwd,string commandstr) { try { var sshClient = new SshClient(host,DefaultPort,name,pwd); sshClient.Connect(); var cmd = sshClient.CreateCommand(commandstr); TimeSpan ts = new TimeSpan(0,0,0,10); cmd.CommandTimeout =ts; var res = cmd.Execute(); if (cmd.Error.Length > 0) { return false; } sshClient.Disconnect(); return true; } catch (Exception) { return false; } } /// <summary> /// 使用 SFTP远程传输一个文件 /// </summary> /// <param name="host">主机名</param> /// <param name="name">用户名</param> /// <param name="pwd">密码</param> /// <param name="localpath">本地路径</param> /// <param name="remoteopath">远程路径</param> public static Boolean SftpUploadOneFile(string host,string name,string pwd,string localpath,string remoteopath) { var sftpClient = new SftpClient(host, DefaultPort, name, pwd); try { sftpClient.Connect(); sftpClient.UploadFile(File.Open(localpath, FileMode.Open), remoteopath); sftpClient.Disconnect(); return true; } catch (Exception) { sftpClient.Dispose(); return false; } }

供参考 实现后可以正常更新下位机的配置文件 写成Boolean函数是为了方便进行一些判断 界面是这个样子的

最新回复(0)