code moved from scripts repo;
dump works
This commit is contained in:
87
rin/wallet/cmd/rpc_call.sh
Normal file
87
rin/wallet/cmd/rpc_call.sh
Normal file
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
|
||||
# General script for RIN RPC calls
|
||||
# Usage: ./rpc_call.sh <method> [param1] [param2] ... [rpc_user] [rpc_password] [rpc_host] [rpc_port]
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage: $0 <method> [param1] [param2] ... [rpc_user] [rpc_password] [rpc_host] [rpc_port]"
|
||||
echo "Examples:"
|
||||
echo " $0 getinfo"
|
||||
echo " $0 getnewaddress myaccount"
|
||||
echo " $0 listtransactions \"*\" 10"
|
||||
echo " $0 gettransaction txid"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
METHOD=$1
|
||||
shift
|
||||
|
||||
# Parse parameters - last 4 optional args are RPC connection details
|
||||
PARAMS=()
|
||||
RPC_USER="rinrpc"
|
||||
RPC_PASSWORD="password"
|
||||
RPC_HOST="localhost"
|
||||
RPC_PORT="8332"
|
||||
|
||||
# Check if last 4 args are RPC connection details
|
||||
if [ $# -ge 4 ]; then
|
||||
# Assume last 4 are RPC details
|
||||
RPC_PORT="${@: -1}"
|
||||
RPC_HOST="${@: -2}"
|
||||
RPC_PASSWORD="${@: -3}"
|
||||
RPC_USER="${@: -4}"
|
||||
PARAMS=("${@:1:$#-4}")
|
||||
else
|
||||
PARAMS=("$@")
|
||||
fi
|
||||
|
||||
# Build JSON parameters array
|
||||
PARAMS_JSON=""
|
||||
if [ ${#PARAMS[@]} -gt 0 ]; then
|
||||
PARAMS_JSON="["
|
||||
for param in "${PARAMS[@]}"; do
|
||||
# Try to parse as number, otherwise treat as string
|
||||
if [[ $param =~ ^[0-9]+(\.[0-9]+)?$ ]]; then
|
||||
PARAMS_JSON="$PARAMS_JSON$param,"
|
||||
else
|
||||
PARAMS_JSON="$PARAMS_JSON\"$param\","
|
||||
fi
|
||||
done
|
||||
PARAMS_JSON="${PARAMS_JSON%,}]"
|
||||
else
|
||||
PARAMS_JSON="[]"
|
||||
fi
|
||||
|
||||
# JSON-RPC request
|
||||
RPC_REQUEST='{
|
||||
"jsonrpc": "2.0",
|
||||
"id": "'"$METHOD"'",
|
||||
"method": "'"$METHOD"'",
|
||||
"params": '"$PARAMS_JSON"'
|
||||
}'
|
||||
|
||||
echo "Calling RPC method: $METHOD"
|
||||
echo "Parameters: $PARAMS_JSON"
|
||||
|
||||
# Make the RPC call
|
||||
RESPONSE=$(curl -s -u "$RPC_USER:$RPC_PASSWORD" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$RPC_REQUEST" \
|
||||
"http://$RPC_HOST:$RPC_PORT")
|
||||
|
||||
# Check for errors
|
||||
ERROR=$(echo "$RESPONSE" | jq -r '.error' 2>/dev/null)
|
||||
if [ "$ERROR" != "null" ] && [ -n "$ERROR" ]; then
|
||||
echo "Error: $(echo "$ERROR" | jq -r '.message')"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Display result
|
||||
RESULT=$(echo "$RESPONSE" | jq -r '.result' 2>/dev/null)
|
||||
if [ "$RESULT" != "null" ]; then
|
||||
echo "Result:"
|
||||
echo "$RESPONSE" | jq '.result'
|
||||
else
|
||||
echo "Response:"
|
||||
echo "$RESPONSE"
|
||||
fi
|
||||
Reference in New Issue
Block a user