add udp and manager

This commit is contained in:
zj
2026-03-23 15:20:46 +08:00
parent b64c39ecbd
commit 3ecba44f9e
24 changed files with 542 additions and 1411 deletions

View File

@@ -210,27 +210,34 @@ def generate_crontab(devices, global_config):
return output_file
def generate_start_script(devices, global_config):
"""生成启动脚本"""
lines = ['#!/bin/bash']
lines.append('# Auto-generated start script')
lines.append('')
lines.append('# 启动所有监听服务')
def generate_control_script(devices, global_config):
"""生成控制脚本 (start/stop/restart/status)"""
template_file = 'templates/control.sh.tpl'
with open(template_file, 'r', encoding='utf-8') as f:
template = f.read()
device_list = []
for device in devices:
if not device.get('enabled', True):
lines.append(f"# {device['name']} ({device['id']}) - 已禁用")
continue
protocol = device.get('protocol', 'tcp').upper()
script_path = f"{global_config['base_dir']}/bin/{device['id']}.py"
lines.append(f"echo '启动 {device['name']} ({device['id']}) - {protocol}...'")
lines.append(f"su root -c \"{global_config['python_path']} {script_path} &\"")
if device.get('enabled', True):
device_list.append({
'id': device['id'],
'name': device['name'],
'protocol': device.get('protocol', 'tcp').upper()
})
lines.append('')
lines.append('echo "所有服务已启动"')
# 构建设备列表字符串
device_defs = "\n".join([
f" \"{d['id']}\" \"{d['name']}\" \"{d['protocol']}\""
for d in device_list
])
content = '\n'.join(lines) + '\n'
output_file = 'start.sh'
# 替换模板变量(使用 replace 避免与 bash 变量冲突)
content = template.replace('{base_dir}', global_config['base_dir'])
content = content.replace('{python_path}', global_config['python_path'])
content = content.replace('{device_defs}', device_defs)
output_file = 'control.sh'
with open(output_file, 'w', encoding='utf-8') as f:
f.write(content)
@@ -383,15 +390,15 @@ def main():
print("\n[生成配置文件]")
generated_files.append(generate_crontab(config['devices'], global_config))
# 4. 生成启动脚本
generated_files.append(generate_start_script(devices, global_config))
# 4. 生成控制脚本
generated_files.append(generate_control_script(devices, global_config))
print("\n" + "=" * 50)
print(f"[✓] 代码生成完成!共生成 {len(generated_files)} 个文件")
print("=" * 50)
print(f"\n部署目录: {global_config['base_dir']}")
print("\n使用方法:")
print(f" 1. 启动服务: ./{generated_files[-1]}")
print(f" 1. 控制服务: ./{generated_files[-1]} {{start|stop|restart|status}}")
print(f" 2. 配置 crontab: crontab crontab.txt")
print("\n支持的协议:")
protocols = set(d.get('protocol', 'tcp').upper() for d in devices)