update start.sh
This commit is contained in:
parent
647eb3797b
commit
d750ca9f17
64
app.py
64
app.py
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Loading…
Reference in New Issue