Skip to content

Instantly share code, notes, and snippets.

@ralph-pichler
Last active December 22, 2022 06:39
Show Gist options
  • Select an option

  • Save ralph-pichler/3b5ccd7a5c5cd0500e6428752b37e975 to your computer and use it in GitHub Desktop.

Select an option

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
@filwu8
Copy link
Copy Markdown

filwu8 commented May 16, 2021

jq: error: syntax error, unexpected ':', expecting $end (Windows cmd shell quoting issues?) at , line 1:
E:\SWARM\cashout.sh
jq: 1 compile error

@tomzhang
Copy link
Copy Markdown

this shell only work fine under linux env, and which can not list all uncashed bee directly (may need to make improment)

@2019jack
Copy link
Copy Markdown

@ralph-pichler ./cashout.sh
./cashout.sh: line 40: ((: "244000000000" > 0 : syntax error: operand expected (error token is ""244000000000" > 0 ")

this is wrong ?

@BitByteMaster
Copy link
Copy Markdown

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?

@liuweisir
Copy link
Copy Markdown

$ ./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 ")

@fab-io
Copy link
Copy Markdown

fab-io commented Jun 25, 2021

$ ./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'

@hugoQ1
Copy link
Copy Markdown

hugoQ1 commented Jul 30, 2021

can it work?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment