Извлечь текст из сценария командной строки - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть приложение для майнинга, которое показывает нужные мне данные, но у приложения нет API для его получения. Как извлечь строку для анализа данных с powershell или аналогичным?

Данные сбрасываются на строку, как показано ниже каждую секунду,

ID(grabbed from board) hash:(label) hashrate(variable) errors:(label) #(variable) temp(variable) volts(variable) solutions:(label) #(variable) shares:(label) #(variable)

Пример:

ABC1000234 хеш: 9,8 ГГц / с ошибки: 0,000% 26,3C 0,74 В решения: 539/539 акции: 33

Мне нужен хэшрейт, температура и вольт или, что еще лучше, способ отправки каждой строки в порт, который я могу прослушивать по URL-адресу, подобному "строкам". Если я смогу получить строку для отправки на порт, такой как 4068. Тогда я мог бы использовать powershell и netcat для прослушивания порта на http://127.0.0.1:4068.

Вот что я собирался сделать для powershell:

$serveraddress = '127.0.0.1' 

$serverport = '4068'

$threadinfo = echo 'strings' | nc $serveraddress $serverport

$mineridstring = $stringsinfo.Split(';')[1] $minderid =
$mineridstring.Split('=')[0]

$hashstring = $stringsinfo.Split(';')[2] $hash =
$hashstring.Split('=')[1]

$tempstring = $stringsinfo.Split(';')[4] $tempc =
$tempstring.Split('=')[0]

$voltstring = $stringsinfo.Split(';')[5] $volts =
$voltsstring.Split('=')[0]

Invoke-RestMethod -Uri https://www.rigmanager.xyz/rig.php -Method Post `
-Body @{minerid = $minerid; hashrate = $hashrate; tempc = $temp; $volts = $volts} -UseBasicParsing

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Простой способ сделать это с помощью именованных захватов в регулярном выражении.

PS C:\src\t> type  exttext.ps1
$s = 'ABC1000234 hash: 9.8Gh/s errors: 0.000% 26.3C 0.74V solutions: 539/539 shares: 33'

$doesit = $s -match '^(?<id>.*) hash: (?<hashrate>.*) errors: (?<errors>[0-9.]+%) (?<temp>.*) (?<volts>.*) solutions: .* shares: \d+$'

$Matches.id
$Matches.hashrate
$Matches.errors
$Matches.temp
$Matches.volts

PS C:\src\t> .\exttext.ps1
ABC1000234
9.8Gh/s
0.000%
26.3C
0.74V
0 голосов
/ 11 ноября 2018

Отправьте их в очередь сообщений, и затем вы сможете подписать любое количество пользователей / приложений на этот поток.

Ознакомьтесь с Apache Kafka или любым из облачных эквивалентов в AWS, IBM Cloud, GCP и т. Д.

Синтаксический анализ вашей строки - это то, что regex может обработать, хотя, если вам не нужны данные, проиндексированные для запросов / поиска, вы можете передать их конечному пользователю / приложению и просто передать им все сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...