-
-
Save ralph-pichler/3b5ccd7a5c5cd0500e6428752b37e975 to your computer and use it in GitHub Desktop.
| #!/usr/bin/env bash | |
| [ -z ${DEBUG_API+x} ] && DEBUG_API=http://localhost:1635 | |
| [ -z ${MIN_AMOUNT+x} ] && MIN_AMOUNT=10000000000000000 | |
| # cashout script for bee >= 0.6.0 | |
| # note this is a simple bash script which might not work well or at all on some platforms | |
| # for a more robust interface take a look at https://github.com/ethersphere/swarm-cli | |
| function getPeers() { | |
| curl -s "$DEBUG_API/chequebook/cheque" | jq -r '.lastcheques | .[].peer' | |
| } | |
| function getUncashedAmount() { | |
| curl -s "$DEBUG_API/chequebook/cashout/$1" | jq '.uncashedAmount' | |
| } | |
| function cashout() { | |
| local peer=$1 | |
| txHash=$(curl -s -XPOST "$DEBUG_API/chequebook/cashout/$peer" | jq -r .transactionHash) | |
| echo cashing out cheque for $peer in transaction $txHash >&2 | |
| } | |
| function cashoutAll() { | |
| local minAmount=$1 | |
| for peer in $(getPeers) | |
| do | |
| local uncashedAmount=$(getUncashedAmount $peer) | |
| if (( "$uncashedAmount" > $minAmount )) | |
| then | |
| echo "uncashed cheque for $peer ($uncashedAmount uncashed)" >&2 | |
| cashout $peer | |
| fi | |
| done | |
| } | |
| function listAllUncashed() { | |
| for peer in $(getPeers) | |
| do | |
| local uncashedAmount=$(getUncashedAmount $peer) | |
| if (( "$uncashedAmount" > 0 )) | |
| then | |
| echo $peer $uncashedAmount | |
| fi | |
| done | |
| } | |
| case $1 in | |
| cashout) | |
| cashout $2 | |
| ;; | |
| cashout-all) | |
| cashoutAll $MIN_AMOUNT | |
| ;; | |
| uncashed-for-peer) | |
| getUncashedAmount $2 | |
| ;; | |
| list-uncashed|*) | |
| listAllUncashed | |
| ;; | |
| esac |
this shell only work fine under linux env, and which can not list all uncashed bee directly (may need to make improment)
@ralph-pichler ./cashout.sh
./cashout.sh: line 40: ((: "244000000000" > 0 : syntax error: operand expected (error token is ""244000000000" > 0 ")
this is wrong ?
After running this script, it returned me a txid which I couldn't find it from goerli explorer....looks like the transaction didn't really get broadcast to the network...which could go wrong here?
$ ./cashout.sh
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
$ ./cashout.sh
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
./cashout.sh: line 40: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
I had the same error and fixed it changing line 14 to this
curl -s "$DEBUG_API/chequebook/cashout/$1" | jq 'if .uncashedAmount then (.uncashedAmount|tonumber) else -1 end'
can it work?
jq: error: syntax error, unexpected ':', expecting $end (Windows cmd shell quoting issues?) at , line 1:
E:\SWARM\cashout.sh
jq: 1 compile error