开启左侧

NUC 无显示器部署 OpenClaw:纯命令行远程管理

[复制链接]
米落枫 发表于 3 小时前 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:一键难忘

8.1 创建远程管理脚本
  1. #!/bin/bashLOG_FILE="/var/log/nuc-remote-management.log"ALERT_EMAIL="admin@example.com"log(){echo"[$(date'+%Y-%m-%d %H:%M:%S')] $1">>$LOG_FILE}send_alert(){localsubject=$1localmessage=$2echo"$message"| mail -s "$subject"$ALERT_EMAIL}check_network(){
  2.     log "Checking network connection..."ping -c 48.8.8.8 > /dev/null 2>&1if[$? -eq 0];then
  3.         log "Network connection is normal"return0else
  4.         log "Network connection failed"return1fi}check_ssh(){
  5.     log "Checking SSH service..."if systemctl is-active --quiet ssh;then
  6.         log "SSH service is running"return0else
  7.         log "SSH service is not running"return1fi}check_docker(){
  8.     log "Checking Docker service..."if systemctl is-active --quiet docker;then
  9.         log "Docker service is running"return0else
  10.         log "Docker service is not running"return1fi}check_openclaw(){
  11.     log "Checking OpenClaw service..."cd /opt/openclaw/openclaw
  12.     ifdocker-composeps|grep -q "Up";then
  13.         log "OpenClaw service is running"return0else
  14.         log "OpenClaw service is not running"return1fi}check_database(){
  15.     log "Checking database connection..."ifdockerexec openclaw-postgres pg_isready -U openclaw;then
  16.         log "Database connection is normal"return0else
  17.         log "Database connection failed"return1fi}check_redis(){
  18.     log "Checking Redis connection..."ifdockerexec openclaw-redis redis-cli ping|grep -q PONG;then
  19.         log "Redis connection is normal"return0else
  20.         log "Redis connection failed"return1fi}check_api(){
  21.     log "Checking OpenClaw API..."localresponse=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/api/health)if["$response"="200"];then
  22.         log "API is responding normally"return0else
  23.         log "API is not responding (HTTP $response)"return1fi}check_system_resources(){
  24.     log "Checking system resources..."# 检查 CPU 使用率localcpu_usage=$(top -bn1 |grep"Cpu(s)"|awk'{print $2}'|cut -d'%' -f1)
  25.     log "CPU Usage: ${cpu_usage}%"if(( $(echo "$cpu_usage >80" | bc -l)));then
  26.         log "High CPU usage detected: ${cpu_usage}%"
  27.         send_alert "High CPU Usage""CPU usage is ${cpu_usage}% on NUC"fi# 检查内存使用率localmem_usage=$(free|grep Mem |awk'{printf("%.0f"), $3/$2 * 100.0}')
  28.     log "Memory Usage: ${mem_usage}%"if[$mem_usage -gt 80];then
  29.         log "High memory usage detected: ${mem_usage}%"sync&&echo3> /proc/sys/vm/drop_caches
  30.         send_alert "High Memory Usage""Memory usage is ${mem_usage}% on NUC"fi# 检查磁盘使用率localdisk_usage=$(df -h /data |tail -1 |awk'{print $5}'|cut -d'%' -f1)
  31.     log "Disk Usage: ${disk_usage}%"if[$disk_usage -gt 80];then
  32.         log "High disk usage detected: ${disk_usage}%"docker system prune -f
  33.         send_alert "High Disk Usage""Disk usage is ${disk_usage}% on NUC"fi}restart_ssh(){
  34.     log "Restarting SSH service..."sudo systemctl restart sshif systemctl is-active --quiet ssh;then
  35.         log "SSH service restarted successfully"return0else
  36.         log "Failed to restart SSH service"return1fi}restart_docker(){
  37.     log "Restarting Docker service..."sudo systemctl restart dockerif systemctl is-active --quiet docker;then
  38.         log "Docker service restarted successfully"return0else
  39.         log "Failed to restart Docker service"return1fi}restart_openclaw(){
  40.     log "Restarting OpenClaw service..."cd /opt/openclaw/openclaw
  41.     docker-compose restart
  42.     sleep30ifdocker-composeps|grep -q "Up";then
  43.         log "OpenClaw service restarted successfully"return0else
  44.         log "Failed to restart OpenClaw service"return1fi}restart_database(){
  45.     log "Restarting database..."docker restart openclaw-postgres
  46.     sleep10ifdockerexec openclaw-postgres pg_isready -U openclaw;then
  47.         log "Database restarted successfully"return0else
  48.         log "Failed to restart database"return1fi}restart_redis(){
  49.     log "Restarting Redis..."docker restart openclaw-redis
  50.     sleep5ifdockerexec openclaw-redis redis-cli ping|grep -q PONG;then
  51.         log "Redis restarted successfully"return0else
  52.         log "Failed to restart Redis"return1fi}main(){
  53.     log "=== NUC Remote Management Started ==="
  54.    
  55.     check_network
  56.     if[$? -ne 0];then
  57.         log "Network check failed, attempting to fix..."sudo systemctl restart networking
  58.         sleep10
  59.         check_network
  60.     fi
  61.    
  62.     check_ssh
  63.     if[$? -ne 0];then
  64.         log "SSH check failed, restarting..."
  65.         restart_ssh
  66.     fi
  67.    
  68.     check_docker
  69.     if[$? -ne 0];then
  70.         log "Docker check failed, restarting..."
  71.         restart_docker
  72.     fi
  73.    
  74.     check_openclaw
  75.     if[$? -ne 0];then
  76.         log "OpenClaw check failed, restarting..."
  77.         restart_openclaw
  78.     fi
  79.    
  80.     check_database
  81.     if[$? -ne 0];then
  82.         log "Database check failed, restarting..."
  83.         restart_database
  84.     fi
  85.    
  86.     check_redis
  87.     if[$? -ne 0];then
  88.         log "Redis check failed, restarting..."
  89.         restart_redis
  90.     fi
  91.    
  92.     check_api
  93.     if[$? -ne 0];then
  94.         log "API check failed, restarting OpenClaw..."
  95.         restart_openclaw
  96.     fi
  97.    
  98.     check_system_resources
  99.    
  100.     log "=== NUC Remote Management Completed ==="}
  101. main
复制代码
添加执行权限:
  1. sudochmod +x /usr/local/bin/nuc-remote-management.sh
复制代码
配置定时任务:
  1. crontab -e
  2. # 添加每 10 分钟执行一次管理
  3. */10 * * * * /usr/local/bin/nuc-remote-management.sh
复制代码
九、故障排查

9.1 网络连接问题
  1. # 检查网络接口ip addr show
  2. # 检查网络连接ping8.8.8.8
  3. # 检查 DNS 解析nslookup google.com
  4. # 重启网络服务sudo systemctl restart networking
  5. # 检查路由表ip route show
复制代码
9.2 SSH 连接问题
  1. # 检查 SSH 服务状态sudo systemctl status ssh# 查看 SSH 日志sudo journalctl -u ssh -n 50# 重启 SSH 服务sudo systemctl restart ssh# 检查 SSH 配置sudo sshd -t
  2. # 检查防火墙sudo ufw status
复制代码
9.3 Docker 服务问题
  1. # 检查 Docker 服务状态sudo systemctl status docker# 查看 Docker 日志sudo journalctl -u docker -n 50# 重启 Docker 服务sudo systemctl restart docker# 检查 Docker 版本docker --version
  2. # 测试 Dockerdocker run hello-world
复制代码
9.4 OpenClaw 服务问题
  1. # 检查 OpenClaw 服务状态cd /opt/openclaw/openclaw
  2. docker-composeps# 查看 OpenClaw 日志docker-compose logs -f
  3. # 重启 OpenClaw 服务docker-compose restart
  4. # 重新构建 OpenClawdocker-compose up -d --build
  5. # 检查容器资源使用docker stats
复制代码
十、总结

通过以上步骤,我们成功实现了 NUC 无显示器部署 OpenClaw,并通过纯命令行远程管理。
10.1 主要优势

    成本低廉:无需购买显示器节省空间:NUC 体积小,易于放置易于管理:通过 SSH 远程管理稳定可靠:Linux 系统稳定节能环保:功耗低,适合长期运行
10.2 注意事项

    定期检查网络连接定期备份重要数据定期更新系统和软件定期监控系统资源定期清理日志和缓存
10.3 后续扩展

可以进一步扩展功能:
    添加 Web 管理界面添加监控告警系统添加自动化运维脚本添加内网穿透服务添加更多 AI 模型
希望这篇教程能帮助大家成功实现 NUC 无显示器部署 OpenClaw,并通过纯命令行远程管理!
NUC 无显示器部署 OpenClaw:纯命令行远程管理-1.jpeg





原文地址:https://blog.csdn.net/weixin_52908342/article/details/158184078
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )