Browse Source
Python scripts demonstrating using RPC to keep passphrases out of shell history/etc.0.8
Gavin Andresen
13 years ago
3 changed files with 333 additions and 0 deletions
@ -0,0 +1,324 @@ |
|||||||
|
from jsonrpc import ServiceProxy |
||||||
|
import sys |
||||||
|
import string |
||||||
|
|
||||||
|
# ===== BEGIN USER SETTINGS ===== |
||||||
|
# if you do not set these you will be prompted for a password for every command |
||||||
|
rpcuser = "" |
||||||
|
rpcpass = "" |
||||||
|
# ====== END USER SETTINGS ====== |
||||||
|
|
||||||
|
|
||||||
|
if rpcpass == "": |
||||||
|
access = ServiceProxy("http://127.0.0.1:8332") |
||||||
|
else: |
||||||
|
access = ServiceProxy("http://"+rpcuser+":"+rpcpass+"@127.0.0.1:8332") |
||||||
|
cmd = sys.argv[1].lower() |
||||||
|
|
||||||
|
if cmd == "backupwallet": |
||||||
|
try: |
||||||
|
path = raw_input("Enter destination path/filename: ") |
||||||
|
print access.backupwallet(path) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getaccount": |
||||||
|
try: |
||||||
|
addr = raw_input("Enter a Bitcoin address: ") |
||||||
|
print access.getaccount(addr) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getaccountaddress": |
||||||
|
try: |
||||||
|
acct = raw_input("Enter an account name: ") |
||||||
|
print access.getaccountaddress(acct) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getaddressesbyaccount": |
||||||
|
try: |
||||||
|
acct = raw_input("Enter an account name: ") |
||||||
|
print access.getaddressesbyaccount(acct) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getbalance": |
||||||
|
try: |
||||||
|
acct = raw_input("Enter an account (optional): ") |
||||||
|
mc = raw_input("Minimum confirmations (optional): ") |
||||||
|
try: |
||||||
|
print access.getbalance(acct, mc) |
||||||
|
except: |
||||||
|
print access.getbalance() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getblockbycount": |
||||||
|
try: |
||||||
|
height = raw_input("Height: ") |
||||||
|
print access.getblockbycount(height) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getblockcount": |
||||||
|
try: |
||||||
|
print access.getblockcount() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getblocknumber": |
||||||
|
try: |
||||||
|
print access.getblocknumber() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getconnectioncount": |
||||||
|
try: |
||||||
|
print access.getconnectioncount() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getdifficulty": |
||||||
|
try: |
||||||
|
print access.getdifficulty() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getgenerate": |
||||||
|
try: |
||||||
|
print access.getgenerate() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "gethashespersec": |
||||||
|
try: |
||||||
|
print access.gethashespersec() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getinfo": |
||||||
|
try: |
||||||
|
print access.getinfo() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getnewaddress": |
||||||
|
try: |
||||||
|
acct = raw_input("Enter an account name: ") |
||||||
|
try: |
||||||
|
print access.getnewaddress(acct) |
||||||
|
except: |
||||||
|
print access.getnewaddress() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getreceivedbyaccount": |
||||||
|
try: |
||||||
|
acct = raw_input("Enter an account (optional): ") |
||||||
|
mc = raw_input("Minimum confirmations (optional): ") |
||||||
|
try: |
||||||
|
print access.getreceivedbyaccount(acct, mc) |
||||||
|
except: |
||||||
|
print access.getreceivedbyaccount() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getreceivedbyaddress": |
||||||
|
try: |
||||||
|
addr = raw_input("Enter a Bitcoin address (optional): ") |
||||||
|
mc = raw_input("Minimum confirmations (optional): ") |
||||||
|
try: |
||||||
|
print access.getreceivedbyaddress(addr, mc) |
||||||
|
except: |
||||||
|
print access.getreceivedbyaddress() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "gettransaction": |
||||||
|
try: |
||||||
|
txid = raw_input("Enter a transaction ID: ") |
||||||
|
print access.gettransaction(txid) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "getwork": |
||||||
|
try: |
||||||
|
data = raw_input("Data (optional): ") |
||||||
|
try: |
||||||
|
print access.gettransaction(data) |
||||||
|
except: |
||||||
|
print access.gettransaction() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "help": |
||||||
|
try: |
||||||
|
cmd = raw_input("Command (optional): ") |
||||||
|
try: |
||||||
|
print access.help(cmd) |
||||||
|
except: |
||||||
|
print access.help() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "listaccounts": |
||||||
|
try: |
||||||
|
mc = raw_input("Minimum confirmations (optional): ") |
||||||
|
try: |
||||||
|
print access.listaccounts(mc) |
||||||
|
except: |
||||||
|
print access.listaccounts() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "listreceivedbyaccount": |
||||||
|
try: |
||||||
|
mc = raw_input("Minimum confirmations (optional): ") |
||||||
|
incemp = raw_input("Include empty? (true/false, optional): ") |
||||||
|
try: |
||||||
|
print access.listreceivedbyaccount(mc, incemp) |
||||||
|
except: |
||||||
|
print access.listreceivedbyaccount() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "listreceivedbyaddress": |
||||||
|
try: |
||||||
|
mc = raw_input("Minimum confirmations (optional): ") |
||||||
|
incemp = raw_input("Include empty? (true/false, optional): ") |
||||||
|
try: |
||||||
|
print access.listreceivedbyaddress(mc, incemp) |
||||||
|
except: |
||||||
|
print access.listreceivedbyaddress() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "listtransactions": |
||||||
|
try: |
||||||
|
acct = raw_input("Account (optional): ") |
||||||
|
count = raw_input("Number of transactions (optional): ") |
||||||
|
frm = raw_input("Skip (optional):") |
||||||
|
try: |
||||||
|
print access.listtransactions(acct, count, frm) |
||||||
|
except: |
||||||
|
print access.listtransactions() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "move": |
||||||
|
try: |
||||||
|
frm = raw_input("From: ") |
||||||
|
to = raw_input("To: ") |
||||||
|
amt = raw_input("Amount:") |
||||||
|
mc = raw_input("Minimum confirmations (optional): ") |
||||||
|
comment = raw_input("Comment (optional): ") |
||||||
|
try: |
||||||
|
print access.move(frm, to, amt, mc, comment) |
||||||
|
except: |
||||||
|
print access.move(frm, to, amt) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "sendfrom": |
||||||
|
try: |
||||||
|
frm = raw_input("From: ") |
||||||
|
to = raw_input("To: ") |
||||||
|
amt = raw_input("Amount:") |
||||||
|
mc = raw_input("Minimum confirmations (optional): ") |
||||||
|
comment = raw_input("Comment (optional): ") |
||||||
|
commentto = raw_input("Comment-to (optional): ") |
||||||
|
try: |
||||||
|
print access.sendfrom(frm, to, amt, mc, comment, commentto) |
||||||
|
except: |
||||||
|
print access.sendfrom(frm, to, amt) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "sendmany": |
||||||
|
try: |
||||||
|
frm = raw_input("From: ") |
||||||
|
to = raw_input("To (in format address1:amount1,address2:amount2,...): ") |
||||||
|
mc = raw_input("Minimum confirmations (optional): ") |
||||||
|
comment = raw_input("Comment (optional): ") |
||||||
|
try: |
||||||
|
print access.sendmany(frm,to,mc,comment) |
||||||
|
except: |
||||||
|
print access.sendmany(frm,to) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "sendtoaddress": |
||||||
|
try: |
||||||
|
to = raw_input("To (in format address1:amount1,address2:amount2,...): ") |
||||||
|
amt = raw_input("Amount:") |
||||||
|
comment = raw_input("Comment (optional): ") |
||||||
|
commentto = raw_input("Comment-to (optional): ") |
||||||
|
try: |
||||||
|
print access.sendtoaddress(to,amt,comment,commentto) |
||||||
|
except: |
||||||
|
print access.sendtoaddress(to,amt) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "setaccount": |
||||||
|
try: |
||||||
|
addr = raw_input("Address: ") |
||||||
|
acct = raw_input("Account:") |
||||||
|
print access.setaccount(addr,acct) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "setgenerate": |
||||||
|
try: |
||||||
|
gen= raw_input("Generate? (true/false): ") |
||||||
|
cpus = raw_input("Max processors/cores (-1 for unlimited, optional):") |
||||||
|
try: |
||||||
|
print access.setgenerate(gen, cpus) |
||||||
|
except: |
||||||
|
print access.setgenerate(gen) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "settxfee": |
||||||
|
try: |
||||||
|
amt = raw_input("Amount:") |
||||||
|
print access.settxfee(amt) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "stop": |
||||||
|
try: |
||||||
|
print access.stop() |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "validateaddress": |
||||||
|
try: |
||||||
|
addr = raw_input("Address: ") |
||||||
|
print access.validateaddress(addr) |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "walletpassphrase": |
||||||
|
try: |
||||||
|
pwd = raw_input("Enter wallet passphrase: ") |
||||||
|
access.walletpassphrase(pwd, 60) |
||||||
|
print "\n---Wallet unlocked---\n" |
||||||
|
except: |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
|
||||||
|
elif cmd == "walletpassphrasechange": |
||||||
|
try: |
||||||
|
pwd = raw_input("Enter old wallet passphrase: ") |
||||||
|
pwd2 = raw_input("Enter new wallet passphrase: ") |
||||||
|
access.walletpassphrasechange(pwd, pwd2) |
||||||
|
print |
||||||
|
print "\n---Passphrase changed---\n" |
||||||
|
except: |
||||||
|
print |
||||||
|
print "\n---An error occurred---\n" |
||||||
|
print |
||||||
|
|
||||||
|
else: |
||||||
|
print "Command not found or not supported" |
@ -0,0 +1,5 @@ |
|||||||
|
from jsonrpc import ServiceProxy |
||||||
|
access = ServiceProxy("http://127.0.0.1:8332") |
||||||
|
pwd = raw_input("Enter old wallet passphrase: ") |
||||||
|
pwd2 = raw_input("Enter new wallet passphrase: ") |
||||||
|
access.walletpassphrasechange(pwd, pwd2) |
Loading…
Reference in new issue