/// <summary> /// Gets a <see cref="SshClientWrapper"/> for which the Connect() method has NOT been called. /// </summary> public static SshClientWrapper GetUnconnectedSshClientWrapper(this AwsEc2ServerSecrets awsEc2ServerSecrets) { var connectionInfo = awsEc2ServerSecrets.GetConnectionInfo(); var clientWrapper = new SshClientWrapper(connectionInfo); return(clientWrapper); }
public static void Initialize() { // load local version info try { var ver = GetHakchiVersion(); Trace.WriteLine($"Local hakchi.hmod version info: boot {ver["bootVersion"]}, kernel {ver["kernelVersion"]}, script {ver["hakchiVersion"]}"); RawLocalBootVersion = ver["bootVersion"]; RawLocalKernelVersion = ver["kernelVersion"]; RawLocalScriptVersion = ver["hakchiVersion"]; } catch (Exception ex) { Trace.WriteLine(ex.Message + ex.StackTrace); } // just in case Initialize was ever called before if (shells.Any()) { if (Connected) { Shell_OnDisconnected(); } Shutdown(); Thread.Sleep(0); } // placeholder shell shells.Add(new UnknownShell()); Shell = shells.First(); // clovershell (for legacy compatibility) if (!ConfigIni.Instance.DisableClovershellListener) { var clovershell = new ClovershellConnection() { AutoReconnect = true }; clovershell.OnConnected += Shell_OnConnected; clovershell.OnDisconnected += Shell_OnDisconnected; shells.Add(clovershell); clovershell.Enabled = true; } // new high-tech but slow SSH connection if (!ConfigIni.Instance.DisableSSHListener) { var ssh = new SshClientWrapper(DNS_NAME, null, 22, USERNAME, PASSWORD) { AutoReconnect = true }; ssh.OnConnected += Shell_OnConnected; ssh.OnDisconnected += Shell_OnDisconnected; shells.Add(ssh); ssh.Enabled = true; } }
public static void Initialize() { if (shells.Any()) { if (Connected) { Shell_OnDisconnected(); } Shutdown(); Thread.Sleep(0); } // placeholder shell shells.Add(new UnknownShell()); Shell = shells.First(); // clovershell (for legacy compatibility) if (!ConfigIni.Instance.DisableClovershellListener) { var clovershell = new ClovershellConnection() { AutoReconnect = true }; clovershell.OnConnected += Shell_OnConnected; clovershell.OnDisconnected += Shell_OnDisconnected; shells.Add(clovershell); clovershell.Enabled = true; } // new high-tech but slow SSH connection if (!ConfigIni.Instance.DisableSSHListener) { var ssh = new SshClientWrapper(DNS_NAME, null, 22, USERNAME, PASSWORD) { AutoReconnect = true }; ssh.OnConnected += Shell_OnConnected; ssh.OnDisconnected += Shell_OnDisconnected; shells.Add(ssh); ssh.Enabled = true; } }
protected override void Run(SshClientWrapper sshClientWrapper) { var remoteServiceName = this.RemoteServiceNameProvider.GetRemoteServiceName(); // Wait initially. var numberOfSeconds = 5; this.Logger.LogInformation($"Pausing for {numberOfSeconds} seconds to allow website service to start..."); Thread.Sleep(5 * 1000); // Now test whether service is running. this.Logger.LogInformation($"Now checking if {remoteServiceName} website service is active..."); var commandText = $"sudo systemctl status {remoteServiceName}"; var command = sshClientWrapper.SshClient.RunCommand(commandText); var result = command.Result; using (var stringReader = new StringReader(result)) { stringReader.ReadLine(); stringReader.ReadLine(); var activeLine = stringReader.ReadLine(); var serviceIsActive = activeLine.Contains("active (running)"); if (serviceIsActive) { this.Logger.LogInformation($"Website service {remoteServiceName} is active."); } else { var message = $"Website service is not active!"; this.Logger.LogError(message); throw new Exception(message); } } }
protected abstract void Run(SshClientWrapper sshClientWrapper);
public TestApp(SshClientWrapper _) { }
public static SshClientWrapper GetSshClientWrapperUnconnected(this SftpClientWrapper sftpClientWrapper) { var sshClientWrapper = new SshClientWrapper(sftpClientWrapper.SftpClient.ConnectionInfo); return(sshClientWrapper); }