当前位置:首页 > 技术文章 > 正文内容

Chia脚本 chia绘图脚本 奇亚windows全自动化 XCH powershell版本

lcy2021-05-17技术文章653

最近研究chia全自动化绘图 由于主板不能很好的兼容linux 


翻看Chia的官方CLi命令


趁着五一花了三天时间 写了一个powerShell脚本 用于windows系统


支持自动换盘 和自动重启任务 日志转存 监控内存信息等 更多功能陆续更新




创作不易 希望大家支持



运行效果图


初代bat版本


脚本保存格式为plots.ps1 win10下右键使用powershell打开即可


#定义设置参数 beta4 必须在脚本运行目录建立log文件夹 否则无法写入日志 切记! 后续会优化

#设置chia路径 当前版本1.1.3 注意版本更新修改

$chia_path=$env:USERPROFILE+"\AppData\Local\chia-blockchain\app-1.1.3\resources\app.asar.unpacked\daemon\chia.exe"

$Processes=8 #设置并发数

$lodingTime=600 #设置延时时间 秒为单位

$PlotSize=32

$BufferSize=3390

$buckets=128

$threads=2

$temp="D:\" #缓存路径

$overStart=7 #剩余多少进程重启任务

#增加输入farmerPK & poolPk 参数为0时使用默认 kyes

$farmerPK="0"

$poolPk="0"


$poltSize=101.5

#$Result="s:\" #版本停用结果路径 自动识别结果盘 请设置 notcontainsPath 过滤盘符

$notcontainsPath="C:","D:","E:" #设置过滤盘符 格式为 $notcontainsPath="C:","D:","E:"

#以下系统参数勿改

$getPath = Split-Path -Parent $MyInvocation.MyCommand.Definition

$checkDiskFrist=0

$DiskMaxSave=0




function main{


    "============启动主程序============"


    checkKey



    getdate

    "===========开始检测进程==========="

    checkService

   # pause

}

function checkKey(){

    if($farmerPK-eq 0 -and $poolPk-eq 0){

        return

    }elseif ($farmerPK.Length -eq 96 -and $poolPk.Length -eq 96 ){

        $global:addKeys="-f $farmerPK -p $poolPk"

    }else{

    write-warning "检查 farmerPK & poolPk  "

    pause

    break

    }

}



function getChiaProcess(){


      try {

      Write-host "chiaId         开始时间                   持续时间      CPU                内存(Mb)       psId" -ForegroundColor Yellow

     $cprocess=get-process chia -ErrorAction Stop | select-object  * | where {$_.Path -eq $chia_path}

     foreach($cp in $cprocess){

     $id=$cp.Id

     $instance = Get-CimInstance Win32_Process -Filter "ProcessId = '$id'"

     $parentProcess= Get-Process -Id $instance.ParentProcessId |select-object  id

      $psid=$parentProcess.id

      $StartTime= $cp.StartTime

     $TotalProcessorTime=$cp.TotalProcessorTime-replace '.[^.]*$'

     $cpu=$cp.CPU

     $pm= [int]($cp.PM / 1MB)

    Write-host "$id          $StartTime         $TotalProcessorTime      $cpu        $pm           $psId     " -ForegroundColor red

     sleep 0.5

     }


    }catch{

    Write-Host "未检测到chia进程" -ForegroundColor green

    }}




function getDate{return Get-Date -Format "yyyy-MM-dd-HH-mm-ss"}


function checkService {

    getDate

    try {

    $p=(get-process chia -ErrorAction Stop | select-object  id,Path | where {$_.Path -eq $chia_path} | select-string .).Count


    }catch{

    Write-Host -Verbose "未执行任何Chia" -ForegroundColor Green

    }

    "当前绘图进程数:" +$p

    if($p -le $overStart){plotsMain}else{

    getChiaProcess

    checkMessage}

}


function plotsMain(){

   "===========检查磁盘信息============"

   checkDisk

   sleep 3

   "===========绘图任务开始============"

   plotStart

   "===========绘图任务结束============"

   checkMessage



}

function checkDisk (){

 "提示:程序按以下顺序写盘! 您设置了 "+$notcontainsPath+" 不写入"


    if($global:checkDiskFrist -eq 1){

    foreach($i in $DiskInfo){

    $i.Caption +"剩余:"+ $i.FreeSpace +" Tib  约存: "+$i.MaxSave +"张图"

    }

} else { #首次运行

    $DiskInfo =Get-WMIObject Win32_LogicalDisk |  Select-Object Caption,FreeSpace ,MaxSave | where {$notcontainsPath-notcontains $_.Caption  }

    foreach($i in $DiskInfo){

    $i.FreeSpace= ("{0:N2}" -f ($i.FreeSpace / 1GB))

    #计算最大存图数 约数

    $i.MaxSave=[math]::truncate($i.FreeSpace / $poltSize )

    $i.Caption +"剩余:"+ $i.FreeSpace +" Tib  约存: "+$i.MaxSave +"张图"

    $global:DiskMaxSave+=$i.MaxSave

    $global:checkDiskFrist= 1

    }

    $global:DiskInfo=$DiskInfo

    }

    If([String]::IsNullOrEmpty($global:DiskMaxSave)){  $global:DiskMaxSave=0}

"注意,通过计算,最多约能绘"+$global:DiskMaxSave+" 张图 !"

}

function plotStart(){#建立任务

  for( $n=1;$n -le $Processes;$n ++){

   $t=getDate

   $ntemp="$temp$t"+"_"+"$n"+"F"+"$Processes"

   #分配盘符

   foreach($l in $DiskInfo){

    if($l.MaxSave-ge 1){

    "================================="

    "本次写入"+$l.Caption+"盘 任务开始 时间 $t”

    "并发数量: $Processes 延迟时间: $lodingTime 秒 内存:$BufferSize 桶: $buckets 线程: $threads 缓存:$ntemp 结果:"+$l.Caption

    $exec="$chia_path plots create -k $PlotSize -b $BufferSize -u $buckets -r 2 -t $ntemp -d "+$l.Caption+"\ $addkeys"

    "本次执行参数: $exec 日志输出:$plotlogPath"

    $plotlogOutputPath="$getPath\log\$t-$n"+"F$Processes.log"

    $plotlogErrortPath="$getPath\log\Error-$t-$n"+"F$Processes.log"


   Start-Process powershell.exe -ArgumentList $exec  -RedirectStandardOutput $plotlogOutputPath -RedirectStandardError $plotlogErrortPath

   #Start-Process powershell.exe -RedirectStandardInput "Testsort.txt" -RedirectStandardOutput "Sorted.txt" -RedirectStandardError "SortError.txt" -UseNewEnvironment

   $l.MaxSave-=1

   $global:DiskMaxSave-=1

   $l.Caption+"盘剩余可写 " +$l.MaxSave+" 盘"

   if($n -lt $Processes){

   "当前进度 $n / $Processes 等待 $lodingTime 秒 启动下一轮"

   "================================="

   sleep $lodingTime

   } }elseif($l.MaxSave -eq 0)

    {

        write-warning "磁盘空间不足任务终止"

        pause

        EXit

    }break

    $global:DiskInfo=$DiskInfo

        }#分配盘符


   }#建立任务结束


}


function checkMessage(){

getDate

"程序运行中 等待30秒检测进程"

sleep 30


checkService

getDate


}

$host.ui.RawUI.WindowTitle="加入Chia技术交流群:178516844 version beta4"


main

同时也做了bat版本 在知乎 有兴趣的可以看看


另外也写了一个会员版


相比普通版 有更高级的自动换ssd hdd  优化日志转储 计算剩余盘量 等功能


有兴趣的可以加群找我购买 



作者:太阳还不困

https://www.bilibili.com/read/cv11135975/

出处: bilibili


 

版权声明:本文由cy's Blog发布,如需转载请注明出处。

本文链接:https://www.c3389.com/post/530.html

相关文章

Cookie欺骗——腾讯拍拍秒杀活动的验证码漏洞

Cookie欺骗——腾讯拍拍秒杀活动的验证码漏洞

首先我想讨论一下验证码这玩意儿。有谁还记得大概几年前突然出现了验证码这东西,许多网站甚至桌面应用程序都陆续实现了验证码技术,主要作用无非就是防止用户利用程序进行自动提交,避免暴力破解,避免服务器遭受恶...

H​y​p​e​r​-​V​ ​挂载物​理​硬​盘

挂载物理磁盘如果是新盘 直接让磁盘状态变为脱机即可 老盘的话需要删除磁盘 脱机 然后方可挂载。  ...

如何在IIS7或IIS7.5中导入导出站点及应用程序池

为实现负载平衡,我们可能会使用多个WEB服务器,也就会需要给多个IIS配置同样的站点和应用程序池.那么我们需要一个一个的重新建吗?当然不用,我们只需要一些简单的命令就可以在IIS7(Windows S...

一句话木马及几种可绕过过滤格式

CnCxzSec's BlogASP一句话1.<%eval request("YouPass")%> 2. <%executerequest("YouP...

sql injection 教程,包括盲注。英语版

摘自:黑基 最近在学php+mysql下的注入,到处找文章,古今中外的。在外国网站上找到这么一篇好文章,外国同行们公认的典型教材,于是拿来给大家。说实话我实在看不惯某些人不懂装懂,黑页上hacker...

[华众] 用户开设虚拟主机 没办法选择机房的错误解决办法

[华众] 用户开设虚拟主机 没办法选择机房的错误解决办法

华众虚拟主机管理系统出现用户开设虚拟主机 没办法选择机房的错误解决办法如图所示 问题原因 由于服务器分类跟机房列表中服务器分类不通导致的解决办法  服务器列表中所属分类跟 产品列表...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。