C# 리눅스 서버 모니터링용 프로그램 개발

회사에서 리눅스 서버를 모니터링해야 하기 때문에 기존 Putty 컨테이너에 Putty만 5개를 실행하여 모니터링하던 사항을 제 필요에 의해 모니터링 툴을 개발하게 되었습니다. 매번 5개의 Putty를 실행하고 접속하여 모니터링을 하려니 너무 귀찮은 감이 있어서 프로그램을 만든 것은 안자랑… 요즘은 라이브러리가 패키지화되어 Nuget에 많이 올라와 있지만 사용하기 불편한 부분이 없고, 잘 되어 있고, 많은 사람들이 예제를 올리니 편한 느낌이 없고, 많이 있습니다. 먼저 C#윈폼 프로젝트를 작성한 후 Nunet 패키지를 설치합니다. 인스톨 하는 패키지는 다음과 같습니다. SSH.ClientSSH.NET (종속 : Renci.SshNet.Async) 두 패키지를 설치할 경우 Visual Studio 2012의 경우 설치가 불가능 할 수 있습니다. 이 경우 Visual Studio Community 2017을 설치하면 쉽게 패키지를 설치할 수 있습니다. Visual Studio 2012에서는 Nuget 패키지 설치가 잘 되지 않습니다. 그리고 프로젝트 복사를 하고 Visual Studio 2012에서 프로젝트를 로딩하면 잘 됩니다 ㅎㅎ 다만, Visual Studio Community 2017을 인스톨 하는데 시간이 걸리는 것은…각자가….잘….하도록…다음은 코드입니다. 아래 2개의 함수는 커넥션과 결과에 따라 뿌릴 수 있는 내용입니다. 회사에서 리눅스 서버를 모니터링해야 하기 때문에 기존 Putty 컨테이너에 Putty만 5개를 실행하여 모니터링하던 사항을 제 필요에 의해 모니터링 툴을 개발하게 되었습니다. 매번 5개의 Putty를 실행하고 접속하여 모니터링을 하려니 너무 귀찮은 감이 있어서 프로그램을 만든 것은 안자랑… 요즘은 라이브러리가 패키지화되어 Nuget에 많이 올라와 있지만 사용하기 불편한 부분이 없고, 잘 되어 있고, 많은 사람들이 예제를 올리니 편한 느낌이 없고, 많이 있습니다. 먼저 C#윈폼 프로젝트를 작성한 후 Nunet 패키지를 설치합니다. 인스톨 하는 패키지는 다음과 같습니다. SSH.ClientSSH.NET (종속 : Renci.SshNet.Async) 두 패키지를 설치할 경우 Visual Studio 2012의 경우 설치가 불가능 할 수 있습니다. 이 경우 Visual Studio Community 2017을 설치하면 쉽게 패키지를 설치할 수 있습니다. Visual Studio 2012에서는 Nuget 패키지 설치가 잘 되지 않습니다. 그리고 프로젝트 복사를 하고 Visual Studio 2012에서 프로젝트를 로딩하면 잘 됩니다 ㅎㅎ 다만, Visual Studio Community 2017을 인스톨 하는데 시간이 걸리는 것은…각자가….잘….하도록…다음은 코드입니다. 아래 2개의 함수는 커넥션과 결과에 따라 뿌릴 수 있는 내용입니다.

private@SshClient@Connect_SSH(string@host,\int\port,\string\user,\string\passwd)\try\SshClient@cSsh=newSshClient(호스트, 포트, 사용자,@passwd). 연결정보. 타임오버 = @TimeSpan. 2차(120); CSSH로. 연결(); return@cSSH;\catch\(Exception\ex)\label5。Text@=”status\”:\Error”; return\n ull; Console. WriteLine(ex.메세지); 콘솔. WriteLine(ex)。StackTrace;\private\void\reccCommSSHData()\while\(true)\try\iff(Command_sShell)!=·null+&+Command_sShell. DataAvailable)+StrData+={Command_sShell}。Read();AddTextBoxInThread(textBox5,@strData);\catch\(Exception\ex)\Console. WriteLine(ex.메세지); 콘솔. WriteLine(ex)。StackTrace; @Thread. 睡眠(200);+ private@SshClient@Connect_SSH(string@host,\int\port,\string\user,\string\passwd)\try\SshClient@cSsh=newSshClient(호스트, 포트, 사용자,@passwd). 연결정보. 타임오버 = @TimeSpan. 2차(120); CSSH로. 연결(); return@cSSH;\catch\(Exception\ex)\label5。Text@=”status\”:\Error”; return\n ull; Console. WriteLine(ex.메세지); 콘솔. WriteLine(ex)。StackTrace;\private\void\reccCommSSHData()\while\(true)\try\iff(Command_sShell)!=·null+&+Command_sShell. DataAvailable)+StrData+={Command_sShell}。Read();AddTextBoxInThread(textBox5,@strData);\catch\(Exception\ex)\Console. WriteLine(ex.메세지); 콘솔. WriteLine(ex)。StackTrace; @Thread. 수면(200);+

아래는 실제 이벤트 처리 부분이며, 해당 코드에서 실제 커넥션 후 스레드 동작까지를 사용합니다. cSSH_Command.CreateShellStream(“vt100”, 80, 60, 800, 600, 65536) 이 부분은 저도 찾지는 않았지만, 실제 SSH 통신을 위한 설정이라고만 기억하고 있습니다. 한 번쯤은 그 내용을 알아봐야 할 것 같네요 아래는 실제 이벤트 처리 부분이며, 해당 코드에서 실제 커넥션 후 스레드 동작까지를 사용합니다. cSSH_Command.CreateShellStream(“vt100”, 80, 60, 800, 600, 65536) 이 부분은 저도 찾지는 않았지만, 실제 SSH 통신을 위한 설정이라고만 기억하고 있습니다. 한 번쯤은 그 내용을 알아봐야 할 것 같네요

if·(cSSH_Command·==·null){cSSH_Command·=·Connect_SSH(접속지·IP·또는·도메인,·포트,·Login_ID,·Login_PW);Command_sShell·=·cSSH_Command.CreateShellStream(“vt100″,·80,·60,·800,·600,·65536);if·(cSSH_Command.IsConnected){label5.Text·=·”Status·:·Connected”;Command_thread·=·new·Thread(()·=>·recvCommSSHData());Command_thread.IsBackground·=·true;Command_thread。Start();}} if·(cSSH_Command·==·null){cSSH_Command·=·Connect_SSH(접속지·IP·또는·도메인,·포트,·Login_ID,·Login_PW);Command_sShell·=·cSSH_Command.CreateShellStream(“vt100″,·80,·60,·800,·600,·65536);if·(cSSH_Command.IsConnected){label5.Text·=·”Status·:·Connected”;Command_thread·=·new·Thread(()·=>·recvCommSSHData());Command_thread.IsBackground·=·true;Command_thread。Start();}}

If you do the work above, it will be finished, and basically you will have an SSH environment where you can enter the command and use it. The following is a monitoring tool that I made myself, and I made it possible to upload files to the folder specified in the folder through sFTP. Tomcat has three drives in total, so one prox bar goes back and forth, but I’m not used to using threads yet, but I have to study harder!! If you do the work above, it will be finished, and basically you will have an SSH environment where you can enter the command and use it. The following is a monitoring tool that I made myself, and I made it possible to upload files to the folder specified in the folder through sFTP. Tomcat has three drives in total, so one prox bar goes back and forth, but I’m not used to using threads yet, but I have to study harder!!

 

error: Content is protected !!