update start.sh

This commit is contained in:
mshe 2026-06-08 16:09:36 +08:00
parent 647eb3797b
commit d750ca9f17
5 changed files with 66 additions and 21 deletions

64
app.py
View File

@ -31,9 +31,9 @@ async def start_vnc_server(index: int) -> str:
index: VNC 显示编号
"""
try:
# 调用外部 start_vnc.sh 脚本,传入 index 作为参数
# 调用外部 start_vnc_server.sh 脚本,传入 index 作为参数
process = await asyncio.create_subprocess_exec(
"/home/dgs/vnc-server/start_vnc.sh",
"/home/dgs/vnc-server/start_vnc_server.sh",
str(index),
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE
@ -47,22 +47,58 @@ async def start_vnc_server(index: int) -> str:
return f"❌ 执行出错: {str(e)}"
@mcp.tool()
async def stop_vnc_server(index: int, username: str = None) -> str:
"""停止 VNC 服务器"""
async def start_vnc_server(spider_code: str) -> str:
"""启动爬虫
if username is None:
username = f"user{index}"
result = subprocess.run(
f'sudo su - {username} -c "vncserver -kill :{index}"',
shell=True,
capture_output=True,
text=True
Args:
spider_code: 爬虫代码
"""
try:
# 调用外部 start_spider.sh 脚本,传入 spider_code 作为参数
process = await asyncio.create_subprocess_exec(
"/home/dgs/vnc-server/bin/start_spider.sh",
spider_code,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE
)
return f"VNC 服务器已停止: {result.stdout}"
stdout, stderr = await process.communicate()
if process.returncode == 0:
return f"✅ 爬虫启动成功\n输出:\n{stdout.decode()}"
else:
return f"❌ 爬虫启动失败\n错误:\n{stderr.decode()}"
except Exception as e:
return f"❌ 执行出错: {str(e)}"
@mcp.tool()
async def close_vnc_server(index: int) -> str:
"""关闭 VNC 服务
Args:
index: VNC 显示编号
"""
try:
# 调用外部 stop_vnc_server.sh 脚本,传入 index 作为参数
process = await asyncio.create_subprocess_exec(
"/home/dgs/vnc-server/stop_vnc_server.sh",
str(index),
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE
)
stdout, stderr = await process.communicate()
if process.returncode == 0:
return f"✅ VNC服务关闭成功\n输出:\n{stdout.decode()}"
else:
return f"❌ VNC服务关闭失败\n错误:\n{stderr.decode()}"
except Exception as e:
return f"❌ 执行出错: {str(e)}"
# 单参数模板
@mcp.resource("data://spider_code")
def get_spider_code_list() -> str:
return f'''[
{"spider_code": "01","name": "阳光采购爬虫"},
{"spider_code": "02","name": "QQ邮箱爬虫"},
]'''
# 运行服务器
if __name__ == "__main__":
mcp.run(transport="sse")

View File

@ -5,17 +5,17 @@
GIT_DOMAIN=https://git.nps.crabapples.cn
echo "清理旧脚本..."
rm -rf ./install.sh ./start_vnc.sh ./close_vnc.sh ./start_spider.sh ./update.sh ./uninstall.sh
rm -rf ./install.sh ./start_vnc_server.sh ./close_vnc_server.sh ./start_spider.sh ./update.sh ./uninstall.sh
echo "开始下载..."
echo "下载安装脚本..."
wget -q --show-progress $GIT_DOMAIN/crabapples/learn-spider/raw/branch/main/bin/install.sh && chmod +x install.sh
echo "下载启动VNC脚本..."
wget -q --show-progress $GIT_DOMAIN/crabapples/learn-spider/raw/branch/main/bin/start_vnc.sh && chmod +x start_vnc.sh
wget -q --show-progress $GIT_DOMAIN/crabapples/learn-spider/raw/branch/main/bin/start_vnc_server.sh && chmod +x start_vnc_server.sh
echo "下载关闭VNC脚本..."
wget -q --show-progress $GIT_DOMAIN/crabapples/learn-spider/raw/branch/main/bin/close_vnc.sh && chmod +x close_vnc.sh
wget -q --show-progress $GIT_DOMAIN/crabapples/learn-spider/raw/branch/main/bin/close_vnc_server.sh && chmod +x close_vnc_server.sh
echo "下载启动爬虫脚本..."
wget -q --show-progress $GIT_DOMAIN/crabapples/learn-spider/raw/branch/main/bin/start_spider.sh && chmod +x start_spider.sh

View File

@ -3,11 +3,20 @@ spider_code=$1
PUBLIC_DIR="${2:-/shared}"
start_spider(){
cd $PUBLIC_DIR/learn-spider
echo "$PUBLIC_DIR/learn-spider"
echo "正在启动爬虫$spider_code"
sudo -E ./start_spider.sh $spider_code # -E 保留当前环境变量
if [ "$spider_code" = "01" ]; then
spider_name="china_net.py"
elif [ "$spider_code" = "02" ]; then
spider_name="mail_qq.py"
else
echo "爬虫名称错误"
exit -1
fi
echo "爬虫名称:$spider_name"
.venv/bin/python3.12 "spider/$spider_name"
}
echo "启动爬虫"
cd $PUBLIC_DIR/learn-spider
echo "$PUBLIC_DIR/learn-spider"
start_spider