从命令行脚本中提取文本

时间:2018-11-11 18:48:29

标签: shell powershell cmd terminal

我有一个挖掘应用程序,该应用程序显示所需的数据,但该应用程序没有可抓取它的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.8Gh / s错误:0.000%26.3C 0.74V解决方案: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 :(得分:0)

将它们推送到消息队列,然后您可以向该流订阅任意数量的用户/应用程序。

在AWS,IBM Cloud,GCP等上查看Apache Kafka或任何基于云的等效项。

解析字符串是regex可以处理的,尽管除非您需要为查询/搜索建立索引的数据,否则可以将其推送给最终用户/应用程序并仅向他们提供整个消息。

答案 1 :(得分:0)

一种简单的方法是使用正则表达式中的命名捕获。

$PGX_HOME/bin/pgx --base_url http://bda1node06:7007/pgx