Я получаю нежелательные символы до и после своих результатов при использовании plink через c#: < /p>
Команда: < /p>
ls -l */informatica/tgtdynamicparams*.out | grep vaulttest| grep 'Sep 1'|awk '{print $9}' | sort
< /code>
Результат Linux: < /p>
aaco/informatica/tgtdynamicparams2269885_CHECK_REF_COMPANY.out
cdph/informatica/tgtdynamicparams2225704_CDPHDRUGRECON.out
cdph/informatica/tgtdynamicparams2225704_CDPHELIGRECON.out
merh/informatica/tgtdynamicparams3454321_OPEN_TEST.out
merh/informatica/tgtdynamicparams3454322_OPEN_TEST2.out
< /code>
c# через результат plink: < /p>
[01;32mcdph/informatica/tgtdynamicparams2225704_CDPHDRUGRECON.out[0m
[01;32mcdph/informatica/tgtdynamicparams2225704_CDPHELIGRECON.out[0m
[01;32mmerh/informatica/tgtdynamicparams3454321_OPEN_TEST.out[0m
[01;32mmerh/informatica/tgtdynamicparams3454322_OPEN_TEST2.out[0m
[0m[01;32maaco/informatica/tgtdynamicparams2269885_CHECK_REF_COMPANY.out[0m
< /code>
Я попробовал следующее без удачи: < /p>
StandardOutputEncoding = Encoding.UTF8
StandardOutputEncoding = Encoding.ASCII
StandardOutputEncoding = Encoding.DEFAULT
< /code>
Вот код, который я использую. Я видел ответы для аналогичных проблем, предлагающих использование ssh.net, но мне не разрешено использовать, что это должно быть plink. < /P>
private string GetFileNames = @"ls -l */informatica/tgtdynamicparams*.out
| grep vaulttest| grep 'Sep 1'
| awk '{print $9}'
| sort";
GetProcessesCommands = new [] {
@"cd /src/trs/runjobs",
GetFileNames
};
Request(ServerName, UserName, Password, GetProcessesCommands);
< /code>
вызывает это: < /p>
private void Request(string remoteHost, string userName, string password, IEnumerable lstCommands)
{
try
{
var psi = new ProcessStartInfo
{
FileName = FormInformatiKill.PropFile.Plink,
Arguments = string.Format("-ssh {0}@{1} -pw {2}", userName, remoteHost, password),
RedirectStandardError = true,
RedirectStandardOutput = true,
RedirectStandardInput = true,
UseShellExecute = false,
CreateNoWindow = true,
StandardOutputEncoding = Encoding.UTF8
};
var p = Process.Start(psi);
_mObjLock = new object();
_mBlnDoRead = true;
if( p == null ) return;
AsyncReadFeedback(p.StandardOutput); // start the async read of stdout
var strw = p.StandardInput;
foreach( var cmd in lstCommands )
{
strw.WriteLine( cmd ); // send commands
}
strw.WriteLine("exit"); // send exit command at the end
p.WaitForExit(); // block thread until remote operations are done
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
}
private void AsyncReadFeedback(StreamReader strr)
{
var trdr = new Thread(ReadFeedback);
trdr.Start(strr);
}
private void ReadFeedback(object objStreamReader)
{
var strr = (StreamReader) objStreamReader;
while (!strr.EndOfStream && _mBlnDoRead)
{
var line = strr.ReadLine();
// lock the feedback buffer (since we don't want some messy stdout/err mix string in the end)
lock (_mObjLock)
{
if( line != null ) ListOfFilesResults.Add(line.Trim());
}
}
}
< /code>
Я попробовал trim () < /code>. Я даже потратил время, просто пытаясь удалить персонажей, которых я не хотел, но, кажется, есть больше возможностей, чем я могу кодировать.
Подробнее здесь: https://stackoverflow.com/questions/393 ... ia-c-sharp
PLINK возвращает нежелательные символы через C# ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение