Проверьте файл журнала на доступ с выходных узлов Tor
Я пытаюсь написать скрипт, который будет загружать текущий список выходных узлов Tor и проверять локальный файл журнала на доступ из Tor.
Приведенный ниже код выводит совпадения с IP-адресов Tor в файле журнала на консоль, но я хотел бы вывести Select-String
вывод в foreach
Цикл в файл (в дополнение к записи в консоли).
После того, как я выведу результаты в файл, мне нужно проверить результаты, чтобы увидеть, было ли совпадение.
Любые советы о том, как вывести foreach
Select-String
к файлу и как проверить на совпадения будет принята с благодарностью.
$source = "https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=[serverip]&port=[port]"
$dest = "C:\tor.txt"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source, $dest)
Get-Content "C:\tor.txt" | where { $_ -notmatch "^#" } | Set-Content "C:\filteredtor.txt"
Remove-Item "C:\tor.txt"
$list = get-content "C:\filteredtor.txt"
ForEach ($_ in $list) {Select-String "C:\logfile.log" -pattern $_}
1 ответ
Tee-Object
Командлет сохранит копию входного потока в файл при передаче его в выходной поток. Кроме того, используя DownloadString()
вместо DownloadFile()
Вы можете упростить ваш код до единого конвейера и устранить необходимость во временных файлах:
$source = 'https://...'
$log = 'C:\logfile.log'
$results = 'C:\results.txt'
$wc = New-Object System.Net.WebClient
($wc.DownloadString($source)) -split "`n" | ? { $_ -notmatch '^(#|\s*$)' } | % {
Select-String $log -pattern $_ | Tee-Object $results -Append
}
if ((Test-Path -LiteralPath $results) -and (Get-Content $results)) {
# do something
}