1、安装flask模块
# pip3 install flask
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting flask
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/cd/77/59df23681f4fd19b7cbbb5e92484d46ad587554f5d490f33ef907e456132/Flask-2.0.3-py3-none-any.whl (95kB)
100% |████████████████████████████████| 102kB 1.6MB/s
Collecting click>=7.1.2 (from flask)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/4a/a8/0b2ced25639fb20cc1c9784de90a8c25f9504a7f18cd8b5397bd61696d7d/click-8.0.4-py3-none-any.whl (97kB)
100% |████████████████████████████████| 102kB 1.1MB/s
Collecting itsdangerous>=2.0 (from flask)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/9c/96/26f935afba9cd6140216da5add223a0c465b99d0f112b68a4ca426441019/itsdangerous-2.0.1-py3-none-any.whl
Collecting Jinja2>=3.0 (from flask)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/20/9a/e5d9ec41927401e41aea8af6d16e78b5e612bca4699d417f646a9610a076/Jinja2-3.0.3-py3-none-any.whl (133kB)
100% |████████████████████████████████| 143kB 1.6MB/s
Collecting Werkzeug>=2.0 (from flask)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/f4/f3/22afbdb20cc4654b10c98043414a14057cd27fdba9d4ae61cea596000ba2/Werkzeug-2.0.3-py3-none-any.whl (289kB)
100% |████████████████████████████████| 296kB 3.2MB/s
Requirement already satisfied: importlib-metadata; python_version < "3.8" in /usr/local/lib/python3.6/site-packages (from click>=7.1.2->flask)
Collecting MarkupSafe>=2.0 (from Jinja2>=3.0->flask)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/fc/d6/57f9a97e56447a1e340f8574836d3b636e2c14de304943836bd645fa9c7e/MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
Collecting dataclasses; python_version < "3.7" (from Werkzeug>=2.0->flask)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/fe/ca/75fac5856ab5cfa51bbbcefa250182e50441074fdc3f803f6e76451fab43/dataclasses-0.8-py3-none-any.whl
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.6/site-packages (from importlib-metadata; python_version < "3.8"->click>=7.1.2->flask)
Installing collected packages: click, itsdangerous, MarkupSafe, Jinja2, dataclasses, Werkzeug, flask
Found existing installation: MarkupSafe 1.1.1
Uninstalling MarkupSafe-1.1.1:
Successfully uninstalled MarkupSafe-1.1.1
Found existing installation: Jinja2 2.11.2
Uninstalling Jinja2-2.11.2:
Successfully uninstalled Jinja2-2.11.2
Successfully installed Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.3 click-8.0.4 dataclasses-0.8 flask-2.0.3 itsdangerous-2.0.1
2、脚本文本
from flask import Flask, request, jsonify
import subprocess
import json
app = Flask(__name__)
@app.route('/method', methods=['POST'])
def method():
# 从 HTTP 请求中获取参数
data = request.json
wallet = data.get('wallet')
json_data = data.get('json_data')
# 将 JSON 数据转换为字符串
json_data_str = json.dumps(json_data)
# 构造命令
command = ['curl', '-X', 'POST', f'http://127.0.0.1:8091/wallet/{wallet}', '-d', json_data_str]
# 执行命令
result = subprocess.run(command, capture_output=True, text=True)
# 返回命令输出
return jsonify({'output': result.stdout})
if __name__ == '__main__':
app.run(debug=True)
curl -X POST -H "Content-Type: application/json" -d '{"wallet": "createaccount", "json_data": {"owner_address": "41d1e7a6bc354106cb410e65ff8b181c600ff14292", "account_address": "41e552f6487585c2b58bc2c9bb4492bc1f17132cd0"}}' http://localhost:5000/method
curl -X POST -H "Content-Type: application/json" -d '{"wallet": "getaccount", "json_data": {"address": "41E552F6487585C2B58BC2C9BB4492BC1F17132CD0"}}' http://localhost:5000/method
获取节点信息
curl -X POST -H "Content-Type: application/json" -d '{"wallet": "getnodeinfo"}' http://localhost:5000/method
{
"output": "{\"activeConnectCount\":9,\"beginSyncNum\":60845401,\"block\":\"Num:60845420,ID:0000000003a06d6c6e106be279330b2a1e5a44d51734d04619d217d253ceace4\",\"cheatWitnessInfoMap\":{},\"configNodeInfo\":{\"activeNodeSize\":0,\"allowAdaptiveEnergy\":0,\"allowCreationOfContracts\":0,\"backupListenPort\":10001,\"backupMemberSize\":0,\"backupPriority\":8,\"codeVersion\":\"4.7.4\",\"dbVersion\":2,\"discoverEnable\":true,\"listenPort\":18888,\"maxConnectCount\":30,\"maxTimeRatio\":5.0,\"minParticipationRate\":15,\"minTimeRatio\":0.0,\"p2pVersion\":\"11111\",\"passiveNodeSize\":0,\"sameIpMaxConnectCount\":2,\"sendNodeSize\":59,\"supportConstant\":true,\"versionNum\":\"18260\"},\"currentConnectCount\":9,\"machineInfo\":{\"cpuCount\":16,\"cpuRate\":0.0,\"deadLockThreadCount\":0,\"deadLockThreadInfoList\":[],\"freeMemory\":245018624,\"javaVersion\":\"1.8.0_402\",\"jvmFreeMemory\":13426588976,\"jvmTotalMemory\":15271460864,\"memoryDescInfoList\":[{\"initSize\":2555904,\"maxSize\":251658240,\"name\":\"Code Cache\",\"useRate\":0.2639676411946615,\"useSize\":66429632},{\"initSize\":0,\"maxSize\":-1,\"name\":\"Metaspace\",\"useRate\":0.946437336898162,\"useSize\":77617432},{\"initSize\":0,\"maxSize\":1073741824,\"name\":\"Compressed Class Space\",\"useRate\":0.007821813225746155,\"useSize\":8398608},{\"initSize\":127926272,\"maxSize\":5658640384,\"name\":\"PS Eden Space\",\"useRate\":0.062438655228739835,\"useSize\":353317896},{\"initSize\":20971520,\"maxSize\":32505856,\"name\":\"PS Survivor Space\",\"useRate\":0.9058857579385081,\"useSize\":29446592},{\"initSize\":339738624,\"maxSize\":11453595648,\"name\":\"PS Old Gen\",\"useRate\":0.12888033394628878,\"useSize\":1476143232}],\"osName\":\"Linux 3.10.0-1160.114.2.el7.x86_64\",\"processCpuRate\":0.0,\"threadCount\":211,\"totalMemory\":32489889792},\"passiveConnectCount\":0,\"peerList\":[{\"active\":true,\"avgLatency\":4.0,\"blockInPorcSize\":0,\"connectTime\":1713175423823,\"disconnectTimes\":3,\"headBlockTimeWeBothHave\":0,\"headBlockWeBothHave\":\"Num:60844586,ID:0000000003a06a2a96808a69b20369226b5989c660819b4d3076a75eea06c9d9\",\"host\":\"/111.221.44.70\",\"inFlow\":0,\"lastBlockUpdateTime\":1713175878220,\"lastSyncBlock\":\"\",\"localDisconnectReason\":\"\",\"needSyncFromPeer\":false,\"needSyncFromUs\":false,\"nodeCount\":102,\"nodeId\":\"d5f6e181f190cce0a0ee31391dee9dcd13a2a4c1fb77b39d1eb5f36a315fc54b81ba9d8eb44956cba1c34c213598fb8b0fe1a14d78f9a31659f22dee378917c3\",\"port\":18888,\"remainNum\":0,\"remoteDisconnectReason\":\"INCOMPATIBLE_CHAIN\",\"score\":0,\"syncBlockRequestedSize\":0,\"syncFlag\":false,\"syncToFetchSize\":0,\"syncToFetchSizePeekNum\":-1,\"unFetchSynNum\":0},{\"active\":true,\"avgLatency\":3.0,\"blockInPorcSize\":0,\"connectTime\":1713178324445,\"disconnectTimes\":5,\"headBlockTimeWeBothHave\":0,\"headBlockWeBothHave\":\"Num:60844696,ID:0000000003a06a986101946a220a831c536f5b770646c9b9e05fc76e5393411d\",\"host\":\"/35.247.182.230\",\"inFlow\":0,\"lastBlockUpdateTime\":1713178325728,\"lastSyncBlock\":\"Num:60844696,ID:0000000003a06a986101946a220a831c536f5b770646c9b9e05fc76e5393411d\",\"localDisconnectReason\":\"\",\"needSyncFromPeer\":false,\"needSyncFromUs\":true,\"nodeCount\":102,\"nodeId\":\"d5f6e181f190cce0a0ee31391dee9dcd13a2a4c1fb77b39d1eb5f36a315fc54b81ba9d8eb44956cba1c34c213598fb8b0fe1a14d78f9a31659f22dee378917c3\",\"port\":18888,\"remainNum\":675,\"remoteDisconnectReason\":\"TIME_OUT\",\"score\":0,\"syncBlockRequestedSize\":0,\"syncFlag\":false,\"syncToFetchSize\":0,\"syncToFetchSizePeekNum\":-1,\"unFetchSynNum\":675},{\"active\":true,\"avgLatency\":186.0,\"blockInPorcSize\":0,\"connectTime\":1713168307065,\"disconnectTimes\":0,\"headBlockTimeWeBothHave\":0,\"headBlockWeBothHave\":\"Num:60845304,ID:0000000003a06cf87088bf976f65633f24b8753c7f1054a7af8c29bf1e4a658b\",\"host\":\"/91.244.197.177\",\"inFlow\":0,\"lastBlockUpdateTime\":1713178116367,\"lastSyncBlock\":\"\",\"localDisconnectReason\":\"\",\"needSyncFromPeer\":false,\"needSyncFromUs\":false,\"nodeCount\":102,\"nodeId\":\"d5f6e181f190cce0a0ee31391dee9dcd13a2a4c1fb77b39d1eb5f36a315fc54b81ba9d8eb44956cba1c34c213598fb8b0fe1a14d78f9a31659f22dee378917c3\",\"port\":18888,\"remainNum\":0,\"remoteDisconnectReason\":\"\",\"score\":0,\"syncBlockRequestedSize\":0,\"syncFlag\":false,\"syncToFetchSize\":0,\"syncToFetchSizePeekNum\":-1,\"unFetchSynNum\":0},{\"active\":true,\"avgLatency\":231.0,\"blockInPorcSize\":0,\"connectTime\":1713168282906,\"disconnectTimes\":0,\"headBlockTimeWeBothHave\":0,\"headBlockWeBothHave\":\"Num:60845318,ID:0000000003a06d06dc87eb9ab4e87601d3335b37749610036ebc8dbec8e00b7c\",\"host\":\"/44.208.138.167\",\"inFlow\":0,\"lastBlockUpdateTime\":1713178158328,\"lastSyncBlock\":\"\",\"localDisconnectReason\":\"\",\"needSyncFromPeer\":false,\"needSyncFromUs\":false,\"nodeCount\":102,\"nodeId\":\"d5f6e181f190cce0a0ee31391dee9dcd13a2a4c1fb77b39d1eb5f36a315fc54b81ba9d8eb44956cba1c34c213598fb8b0fe1a14d78f9a31659f22dee378917c3\",\"port\":18888,\"remainNum\":0,\"remoteDisconnectReason\":\"\",\"score\":0,\"syncBlockRequestedSize\":0,\"syncFlag\":false,\"syncToFetchSize\":0,\"syncToFetchSizePeekNum\":-1,\"unFetchSynNum\":0},{\"active\":true,\"avgLatency\":333.0,\"blockInPorcSize\":0,\"connectTime\":1713173220413,\"disconnectTimes\":0,\"headBlockTimeWeBothHave\":0,\"headBlockWeBothHave\":\"Num:60845097,ID:0000000003a06c291fd54e7ac38930abfdbda98cfa7d42b27d389dabfd8cdb56\",\"host\":\"/95.183.54.138\",\"inFlow\":0,\"lastBlockUpdateTime\":1713177471303,\"lastSyncBlock\":\"Num:60843733,ID:0000000003a066d507729b207af949c191342d686305b6f38d46d049a048acb7\",\"localDisconnectReason\":\"\",\"needSyncFromPeer\":false,\"needSyncFromUs\":false,\"nodeCount\":102,\"nodeId\":\"d5f6e181f190cce0a0ee31391dee9dcd13a2a4c1fb77b39d1eb5f36a315fc54b81ba9d8eb44956cba1c34c213598fb8b0fe1a14d78f9a31659f22dee378917c3\",\"port\":18888,\"remainNum\":0,\"remoteDisconnectReason\":\"\",\"score\":0,\"syncBlockRequestedSize\":0,\"syncFlag\":false,\"syncToFetchSize\":0,\"syncToFetchSizePeekNum\":-1,\"unFetchSynNum\":0},{\"active\":true,\"avgLatency\":355.0,\"blockInPorcSize\":0,\"connectTime\":1713168276400,\"disconnectTimes\":0,\"headBlockTimeWeBothHave\":0,\"headBlockWeBothHave\":\"Num:60845328,ID:0000000003a06d108eeeaec14a746c311926b05bde524d7717fc3a80e39ef9d9\",\"host\":\"/45.143.197.74\",\"inFlow\":0,\"lastBlockUpdateTime\":1713178191287,\"lastSyncBlock\":\"\",\"localDisconnectReason\":\"\",\"needSyncFromPeer\":false,\"needSyncFromUs\":false,\"nodeCount\":102,\"nodeId\":\"d5f6e181f190cce0a0ee31391dee9dcd13a2a4c1fb77b39d1eb5f36a315fc54b81ba9d8eb44956cba1c34c213598fb8b0fe1a14d78f9a31659f22dee378917c3\",\"port\":18888,\"remainNum\":0,\"remoteDisconnectReason\":\"\",\"score\":0,\"syncBlockRequestedSize\":0,\"syncFlag\":false,\"syncToFetchSize\":0,\"syncToFetchSizePeekNum\":-1,\"unFetchSynNum\":0},{\"active\":true,\"avgLatency\":365.0,\"blockInPorcSize\":0,\"connectTime\":1713177458928,\"disconnectTimes\":0,\"headBlockTimeWeBothHave\":0,\"headBlockWeBothHave\":\"Num:60845354,ID:0000000003a06d2a23abac248c9a455507fc56205d48d33c658239ada11ab888\",\"host\":\"/162.55.88.232\",\"inFlow\":0,\"lastBlockUpdateTime\":1713178272264,\"lastSyncBlock\":\"\",\"localDisconnectReason\":\"\",\"needSyncFromPeer\":false,\"needSyncFromUs\":false,\"nodeCount\":102,\"nodeId\":\"d5f6e181f190cce0a0ee31391dee9dcd13a2a4c1fb77b39d1eb5f36a315fc54b81ba9d8eb44956cba1c34c213598fb8b0fe1a14d78f9a31659f22dee378917c3\",\"port\":18888,\"remainNum\":0,\"remoteDisconnectReason\":\"\",\"score\":0,\"syncBlockRequestedSize\":0,\"syncFlag\":false,\"syncToFetchSize\":0,\"syncToFetchSizePeekNum\":-1,\"unFetchSynNum\":0},{\"active\":true,\"avgLatency\":377.0,\"blockInPorcSize\":0,\"connectTime\":1713177844821,\"disconnectTimes\":0,\"headBlockTimeWeBothHave\":0,\"headBlockWeBothHave\":\"Num:60845356,ID:0000000003a06d2c02e365a297687add04067529204cbda76d70022d16681a01\",\"host\":\"/3.254.200.98\",\"inFlow\":0,\"lastBlockUpdateTime\":1713178278404,\"lastSyncBlock\":\"\",\"localDisconnectReason\":\"\",\"needSyncFromPeer\":false,\"needSyncFromUs\":false,\"nodeCount\":102,\"nodeId\":\"d5f6e181f190cce0a0ee31391dee9dcd13a2a4c1fb77b39d1eb5f36a315fc54b81ba9d8eb44956cba1c34c213598fb8b0fe1a14d78f9a31659f22dee378917c3\",\"port\":18888,\"remainNum\":0,\"remoteDisconnectReason\":\"\",\"score\":0,\"syncBlockRequestedSize\":0,\"syncFlag\":false,\"syncToFetchSize\":0,\"syncToFetchSizePeekNum\":-1,\"unFetchSynNum\":0},{\"active\":true,\"avgLatency\":437.0,\"blockInPorcSize\":0,\"connectTime\":1713168876793,\"disconnectTimes\":1,\"headBlockTimeWeBothHave\":0,\"headBlockWeBothHave\":\"Num:60842782,ID:0000000003a0631e8650a75cdae3964e8700ff217a7287b6b468ccc0a5423bc0\",\"host\":\"/5.252.172.14\",\"inFlow\":0,\"lastBlockUpdateTime\":1713170259389,\"lastSyncBlock\":\"\",\"localDisconnectReason\":\"TIME_OUT\",\"needSyncFromPeer\":false,\"needSyncFromUs\":false,\"nodeCount\":102,\"nodeId\":\"d5f6e181f190cce0a0ee31391dee9dcd13a2a4c1fb77b39d1eb5f36a315fc54b81ba9d8eb44956cba1c34c213598fb8b0fe1a14d78f9a31659f22dee378917c3\",\"port\":18888,\"remainNum\":0,\"remoteDisconnectReason\":\"\",\"score\":0,\"syncBlockRequestedSize\":0,\"syncFlag\":false,\"syncToFetchSize\":0,\"syncToFetchSizePeekNum\":-1,\"unFetchSynNum\":0}],\"solidityBlock\":\"Num:60845402,ID:0000000003a06d5abcf3b0b11ea20d6fb46a870551fc459e284c0b3e8d345404\",\"totalFlow\":0}\n"
}