0
点赞
收藏
分享

微信扫一扫

C# SSH远程关闭windows和ios

小铺有酒一两不够 2022-04-14 阅读 83
C#ssh

实现通过ssh远程关闭的C#代码
需要引用SSH.NET(2020.0.1)包


using Renci.SshNet;
using Renci.SshNet.Common;

public static class SshHelper
{
    /// <summary>
    /// windows关机
    /// </summary>
    /// <param name="host">IP地址</param>
    /// <param name="username">用户名</param>
    /// <param name="password">密码</param>
    /// <param name="time">延时时间,单位秒</param>
    public static void WindowsShutDown(string host, string username, string password, int time = 0)
    {
        using (SshClient sshClient = new SshClient(host, username, password))
        {
            sshClient.Connect();
            var cmd = sshClient.RunCommand($"shutdown -s -t {time}");
            Check(cmd);
        }
    }
    /// <summary>
    /// IOS关机
    /// </summary>
    /// <param name="host">IP地址</param>
    /// <param name="username">用户名</param>
    /// <param name="password">密码</param>
    /// <param name="rootpws"></param>
    public static void IOSShutDown(string host, string username, string password, string rootpws)
    {
        using (SshClient sshClient = new SshClient(host, username, password))
        {
            sshClient.Connect();
            try
            {
                var cmd = sshClient.RunCommand($"echo '{rootpws}' | sudo -S shutdown -h now");
                Check(cmd);
            }
            catch (SshConnectionException ex)
            {
                //关机后会引起连接中断
                Console.WriteLine(ex.Message);
            }
        }
    }

    /// <summary>
    /// 检查指令是否错误
    /// </summary>
    /// <param name="cmd"></param>
    private static void Check(SshCommand cmd)
    {
        if (!string.IsNullOrEmpty(cmd.Error))
        {
            throw new Exception(cmd.Error);
        }
    }
}
举报

相关推荐

0 条评论