August 09, 2022
Linux
선택
using CliWrap;
using System.Text;
var stdOutBuffer = new StringBuilder();
var stdErrBuffer = new StringBuilder();
var exeCommand = "PowerShell.exe"; // 실행 지정
string computerIp = "192.168.100.116";
string pid = "60144";
string scriptBlock = $"cmd.exe /c taskkill /f /pid "+ pid;
string userName = "km.park";
string passWord = "mirero";
string script = $"-Command \" & {{Invoke-Command -ComputerName {computerIp} -ScriptBlock {{ {scriptBlock} }} -Authentication Negotiate -Credential (New-Object System.Management.Automation.PSCredential {userName}, (ConvertTo-SecureString -AsPlainText -Force {passWord})) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) }}\"";
Console.WriteLine($"\nscript: {script}\n");
var result = await Cli.Wrap(exeCommand)
.WithArguments(script)
.WithStandardOutputPipe(PipeTarget.ToStringBuilder(stdOutBuffer))
.WithStandardErrorPipe(PipeTarget.ToStringBuilder(stdErrBuffer))
.ExecuteAsync();
var stdOut = stdOutBuffer.ToString();
var stdErr = stdErrBuffer.ToString();
Console.WriteLine("Info:" + stdOut);
Console.WriteLine("Error:" + stdErr);
using CliWrap;
using System.Text;
var stdOutBuffer = new StringBuilder();
var stdErrBuffer = new StringBuilder();
var exeCommand = "PowerShell.exe"; // 실행 지정
string computerIp = "192.168.100.116";
string pid=null;
string scriptBlock;
string userName = "km.park";
string passWord = "mirero";
string serviceName = "ServiceNormal_60s Service Name";
string script = $"-Command \" & {{ cmd.exe /c sc queryex '"+ serviceName + "'}\"";
Console.WriteLine($"\nscript: {script}\n");
var result = await Cli.Wrap(exeCommand)
.WithArguments(script)
.WithStandardOutputPipe(PipeTarget.ToStringBuilder(stdOutBuffer))
.WithStandardErrorPipe(PipeTarget.ToStringBuilder(stdErrBuffer))
.ExecuteAsync();
var stdOut = stdOutBuffer.ToString();
var stdErr = stdErrBuffer.ToString();
Console.WriteLine("Info:" + stdOut);
Console.WriteLine("Error:" + stdErr);
var index = stdOut.IndexOf("PID");
for (int i = index + 21; !stdOut[i].Equals('\n'); i++)
{
pid += stdOut[i];
}
scriptBlock = $"cmd.exe /c taskkill /f /pid " + pid;
script = $"-Command \" & {{Invoke-Command -ComputerName {computerIp} -ScriptBlock {{ {scriptBlock} }} -Authentication Negotiate -Credential (New-Object System.Management.Automation.PSCredential {userName}, (ConvertTo-SecureString -AsPlainText -Force {passWord})) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) }}\"";
result = await Cli.Wrap(exeCommand)
.WithArguments(script)
.WithStandardOutputPipe(PipeTarget.ToStringBuilder(stdOutBuffer))
.WithStandardErrorPipe(PipeTarget.ToStringBuilder(stdErrBuffer))
.ExecuteAsync();
stdOut = stdOutBuffer.ToString();
stdErr = stdErrBuffer.ToString();
Console.WriteLine("Info:" + stdOut);
Console.WriteLine("Error:" + stdErr);
app.MapPost("/programKillOrder", async (SendMessage info) =>
{
Console.WriteLine("");
Console.WriteLine(info);
var stdOutBuffer = new StringBuilder();
var stdErrBuffer = new StringBuilder();
var exeCommand = "Powershell.exe"; // 실행 지정
string computerIp = info.Ip;
string pid = null;
string scriptBlock;
string userName = info.Username;
string passWord = info.Password;
string serviceName = info.ServiceName;
string script = $"-Command \" & {{ cmd.exe /c sc queryex '" + serviceName + "'}\"";
Console.WriteLine($"\nscript: {script}\n");
var result = await Cli.Wrap(exeCommand)
.WithArguments(script)
.WithStandardOutputPipe(PipeTarget.ToStringBuilder(stdOutBuffer))
.WithStandardErrorPipe(PipeTarget.ToStringBuilder(stdErrBuffer))
.ExecuteAsync();
var stdOut = stdOutBuffer.ToString();
var stdErr = stdErrBuffer.ToString();
Console.WriteLine("Info:" + stdOut);
Console.WriteLine("Error:" + stdErr);
var index = stdOut.IndexOf("PID");
for (int i = index + 21; !stdOut[i].Equals('\n'); i++) pid += stdOut[i];
scriptBlock = $"cmd.exe /c taskkill /f /pid " + pid;
script = $"-Command \" & {{Invoke-Command -ComputerName {computerIp} -ScriptBlock {{ {scriptBlock} }} -Authentication Negotiate -Credential (New-Object System.Management.Automation.PSCredential {userName}, (ConvertTo-SecureString -AsPlainText -Force {passWord})) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) }}\"";
result = await Cli.Wrap(exeCommand)
.WithArguments(script)
.WithStandardOutputPipe(PipeTarget.ToStringBuilder(stdOutBuffer))
.WithStandardErrorPipe(PipeTarget.ToStringBuilder(stdErrBuffer))
.ExecuteAsync();
stdOut = stdOutBuffer.ToString();
stdErr = stdErrBuffer.ToString();
Console.WriteLine("Info:" + stdOut);
Console.WriteLine("Error:" + stdErr);
return info;
})
.WithName("programKillOrder");
{
"ip": "192.168.100.116",
"password": "mirero",
"username": "km.park",
"serviceName": "ServiceNormal_60s Service Name"
}
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM ubuntu
ENV builddir=build
RUN mkdir \${builddir}
RUN apt-get update
RUN apt-get install -y wget apt-transport-https software-properties-common
RUN wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
RUN dpkg -i packages-microsoft-prod.deb
RUN apt-get update
RUN add-apt-repository universe
RUN apt-get install -y powershell
RUN apt-get install -y gss-ntlmssp
FROM mcr.microsoft.com/powershell:lts-7.2-nanoserver-1809
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["RemoteProcessKill/RemoteProcessKill.csproj", "RemoteProcessKill/"]
RUN dotnet restore "RemoteProcessKill/RemoteProcessKill.csproj"
COPY . .
WORKDIR "/src/RemoteProcessKill"
RUN dotnet build "RemoteProcessKill.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "RemoteProcessKill.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY /app/publish .
ENTRYPOINT ["dotnet", "RemoteProcessKill.dll"]
FROM ubuntu
ENV builddir=build
RUN mkdir \${builddir}
RUN apt-get update
RUN apt-get install -y wget apt-transport-https software-properties-common
RUN wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
RUN dpkg -i packages-microsoft-prod.deb
RUN apt-get update
RUN add-apt-repository universe
RUN apt-get install -y powershell
RUN apt-get install -y gss-ntlmssp