-
-
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 |
I can't PR this thing, so a comment will have to do. Top line has a typo.
should be #!/usr/bin/env
and not #1/usr/bin/env
Also, at least on my system, (kubuntu, pretty much out of the box), sh
won't work, I had to change it to #!/usr/bin/env bash
.
Administrator@wind MINGW64 /f/bee
$ sh cashout.sh
cashout.sh: line 12: [: ==: unary operator expected
cashout.sh: line 34: [: ==: unary operator expected
cashout.sh: line 23: [: ==: unary operator expected
cashout.sh: line 41: let: uncashedAmount=-: syntax error: operand expected (error token is "-")
cashout.sh: line 76: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
cashout.sh: line 12: [: ==: unary operator expected
cashout.sh: line 34: [: ==: unary operator expected
cashout.sh: line 23: [: ==: unary operator expected
cashout.sh: line 41: let: uncashedAmount=-: syntax error: operand expected (error token is "-")
cashout.sh: line 76: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
cashout.sh: line 12: [: ==: unary operator expected
cashout.sh: line 34: [: ==: unary operator expected
cashout.sh: line 23: [: ==: unary operator expected
cashout.sh: line 41: let: uncashedAmount=-: syntax error: operand expected (error token is "-")
cashout.sh: line 76: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
cashout.sh: line 12: [: ==: unary operator expected
cashout.sh: line 34: [: ==: unary operator expected
cashout.sh: line 23: [: ==: unary operator expected
cashout.sh: line 41: let: uncashedAmount=-: syntax error: operand expected (error token is "-")
cashout.sh: line 76: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
cashout.sh: line 12: [: ==: unary operator expected
cashout.sh: line 34: [: ==: unary operator expected
cashout.sh: line 23: [: ==: unary operator expected
cashout.sh: line 41: let: uncashedAmount=-: syntax error: operand expected (error token is "-")
cashout.sh: line 76: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
cashout.sh: line 12: [: ==: unary operator expected
cashout.sh: line 34: [: ==: unary operator expected
cashout.sh: line 23: [: ==: unary operator expected
cashout.sh: line 41: let: uncashedAmount=-: syntax error: operand expected (error token is "-")
cashout.sh: line 76: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
cashout.sh: line 12: [: ==: unary operator expected
cashout.sh: line 34: [: ==: unary operator expected
cashout.sh: line 23: [: ==: unary operator expected
cashout.sh: line 41: let: uncashedAmount=-: syntax error: operand expected (error token is "-")
cashout.sh: line 76: ((: > 0 : syntax error: operand expected (error token is "> 0 ")
f5d***************************************************ced2220c0b219 44971000000000
[ -z ${MIN_AMOUNT+x} ] && MIN_AMOUNT=10000000000000000
This line doesn't work for me and always sets the default amount ignoring the command line
What should users do under Windows 64?
jq: error: syntax error, unexpected ':', expecting $end (Windows cmd shell quoting issues?) at , line 1:
E:\SWARM\cashout.sh
jq: 1 compile error
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?
It seems stuck when a null transaction occurs, what to do then?