openclaw / scripts /pending.py
zngw's picture
拆分配置
8bf79eb
Raw
History Blame Contribute Delete
1.93 kB
#!/usr/bin/env python3
import subprocess
import json
import sys
import time
def run_command(cmd):
try:
result = subprocess.run(
cmd,
shell=True,
capture_output=True,
text=True,
check=True,
timeout=10 # 增加超时防止卡死
)
return result.stdout.strip()
except subprocess.CalledProcessError as e:
# 如果是非零退出码,可能是没有 pending 请求,静默处理
return None
except subprocess.TimeoutExpired:
print("--- [Pending] 命令执行超时 ---")
return None
def main():
print("--- [Pending]: 检查设备待批准列表...")
json_output = run_command("openclaw devices list --json")
if not json_output:
# 可能是还没初始化,或者命令本身不需要输出
sys.exit(0)
try:
data = json.loads(json_output)
except json.JSONDecodeError:
# 输出不是有效的 JSON,忽略
sys.exit(0)
pending_list = data.get("pending", [])
if not isinstance(pending_list, list):
sys.exit(0)
request_ids = []
# 逻辑优化:统一遍历逻辑,不再硬编码索引切片,除非数据结构非常特殊
# 根据原逻辑,似乎是从索引 3 开始或者是字典类型
for item in pending_list:
if isinstance(item, dict) and "requestId" in item:
request_ids.append(item["requestId"])
if not request_ids:
sys.exit(0)
print(f"--- [Pending] 发现 {len(request_ids)} 个待批准请求 ---")
for req_id in request_ids:
cmd = f"openclaw devices approve {req_id}"
print(f"--- [Pending] 正在批准: {req_id} ---")
subprocess.run(cmd, shell=True, capture_output=True, text=True)
print("--- [Pending] 所有请求处理完毕 ---")
if __name__ == "__main__":
main()