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()