add udp and manager
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user