Netbox 4.7 常用 CLI 命令与工具详解
Netbox 4.7.3 命令行运维全集:manage.py 全套管理命令(nbshell/migrate/rqworker/dumpdata 等)实测回显、systemd 与 journalctl 服务排查、pg_dump 备份升级流程,含 housekeeping 移除等实测发现。
Netbox 4.7 常用 CLI 命令与工具详解
目标:把 Netbox 4.7.3 日常运维要用到的全部命令行工具一次讲透——
manage.py全套管理命令(nbshell、migrate、rqworker、dumpdata 等)、systemd 服务管理、日志排查与数据库备份升级实操。全部命令与回显均在 Ubuntu 24.04.5 LTS + Netbox 4.7.3(Django 6.1.2 / Python 3.12.3)环境实测逐条采集;参数默认值以manage.py help <子命令>实测输出为准。
一、环境信息
- 操作系统:Ubuntu 24.04.5 LTS(x86_64)
- Netbox:v4.7.3(Django 6.1.2 / Python 3.12.3 / gunicorn 26.2.0 / django-rq 4.2.0 / RQ 2.12.0)
- 部署形态:官方 Release Archive + venv(
/opt/netbox-4.7.3/,软链/opt/netbox)+ gunicorn/systemd + nginx,安装过程见本系列《Ubuntu 24.04 安装 Netbox 4.7 指南》 - systemd 单元:
netbox.service(Web WSGI)、netbox-rq.service(后台队列 worker)、postgresql、redis-server、nginx - 演示账号:
admin/q1w2e3r4(超级用户) - venv 路径:
/opt/netbox/venv/;manage.py 路径:/opt/netbox/netbox/manage.py
二、工具概览
Netbox 的 CLI 体系分三层:manage.py 管理命令(应用层,跑在 venv 里)、systemd/journalctl(进程与日志层)、PostgreSQL/Redis 客户端(数据层)。python3 manage.py help 的完整子命令清单实测如下(v4.7.3 全量,按所属 app 分组):
[auth]
changepassword
createsuperuser
[contenttypes]
remove_stale_contenttypes
[core]
makemigrations
nbshell
rqworker
syncdatasource
upgrade
[dcim]
buildschema
trace_paths
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
migrate
optimizemigration
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
[django_rq]
rqcron
rqenqueue
rqresume
rqscheduler
rqstats
rqsuspend
rqworker-pool
[drf_spectacular]
spectacular
[extras]
populate_image_sizes
rebuild_config_context_cache
reindex
renaturalize
runscript
webhook_receiver
[ipam]
rebuild_prefixes
[rest_framework]
generateschema
[sessions]
clearsessions
[social_django]
clearsocial
[staticfiles]
collectstatic
findstatic
runserver
[strawberry_django]
export_schema
[taggit]
deduplicate_tags
remove_orphaned_tags
[thumbnail]
thumbnail
[utilities]
calculate_cached_counts
rebuild_ltree_paths
💡 技术拓展:
manage.py是 Django 的管理入口(django.core.management),所以[django]组的子命令对一切 Django 项目通用;[core]/[dcim]/[extras]/[ipam]等组才是 Netbox 自有命令。shell与nbshell的区别:shell是裸 Django shell(需自己 import 模型),nbshell预导入全部 Netbox 模型并提供lsapps()/lsmodels()帮助函数——日常运维一律用 nbshell。
命令运行的标准前置(每次都要):
source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
python3 manage.py <命令>
三、前置条件
- 已按安装指南完成部署,两个 systemd 服务运行中(否则部分命令如 rqstats 拿不到 worker 数据):
systemctl is-active netbox netbox-rq
active
active
- venv 已就绪且 migrate 已执行(本文所有命令实测库内迁移记录 812 条);
- 交互式命令(nbshell/dbshell/changepassword)在 SSH 终端运行;脚本/CI 场景注意第四章标注的非交互限制。
四、manage.py 核心管理命令详解
4.1 nbshell:Netbox 专用交互式 Shell
nbshell 预导入全部 Netbox 模型,是排查数据、批量修正、做小实验的首选工具。实测启动横幅与建删对象:
echo "from dcim.models import Site
Site.objects.all().delete()
print('sites after delete:', Site.objects.count())
s, created = Site.objects.get_or_create(name='dc-01', defaults={'slug': 'dc-01', 'status': 'active'})
print('created:', created, '| site:', s.name, s.slug, '| status:', s.status)
print('total sites:', Site.objects.count())
exit" | python3 manage.py nbshell
实测回显(首建场景):
### NetBox interactive shell (netbox-server)
### Python v3.12.3 | Django v6.1.2 | NetBox Community v4.7.3
### lsapps() & lsmodels() will show available models. Use help(<model>) for more info.
>>> >>> (1, {'dcim.Site': 1})
>>> sites after delete: 0
>>> >>> created: True | site: dc-01 dc-01 | status: active
>>> total sites: 1
>>> Use exit() or Ctrl-D (i.e. EOF) to exit
>>>
now exiting InteractiveConsole...
要点:
- 横幅即"自检":确认实例名(netbox-server)、Python/Django/Netbox 三层版本;
Site.objects.all().delete()返回(1, {'dcim.Site': 1})——删除对象时 Django 同步报告各模型删除数量,删站点会级联带出设备等(本例库内仅此一个站点);lsapps()列出全部已装 app,实测:
circuits - Circuits
core - Core
dcim - DCIM
extras - Extras
ipam - IPAM
tenancy - Tenancy
users - Users
virtualization - Virtualization
vpn - VPN
⚠️ 排障实录:在管道/脚本里给 nbshell 喂多行 Python 时,
try/except、for等块语句结束后必须补一个空行,否则报runsource/compile类语法错误——交互式控制台靠空行判断块结束。脚本场景更推荐把逻辑写成manage.py shell -c "<单行>"或自定义脚本文件。
4.2 createsuperuser / changepassword:账号管理
创建超级用户——交互终端直接运行,按提示输入用户名/邮箱/密码即可。非交互(脚本/CI)必须加 --noinput 并用环境变量传密码:
DJANGO_SUPERUSER_PASSWORD=q1w2e3r4 python3 manage.py createsuperuser --noinput --username admin --email admin@example.com
实测回显:
Superuser created successfully.
⚠️ 非交互环境漏掉
--noinput会得到Superuser creation skipped due to not running in a TTY.(实测报错原文)——Django 的 TTY 保护,不是故障。
修改密码——changepassword 需输两遍;管道喂入时 Django 会警告密码回显(仅测试环境可接受):
printf "q1w2e3r4\nq1w2e3r4\n" | python3 manage.py changepassword testop
实测回显:
/usr/lib/python3.12/getpass.py:91: GetPassWarning: Can not control echo on the terminal.
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
Password:
Warning: Password input may be echoed.
Password (again):
Changing password for user 'testop'
Password changed successfully for user 'testop'
4.3 migrate / showmigrations:数据库模式管理
showmigrations 查看迁移应用状态([X] 已应用),实测尾部:
[X] 0020_alter_wirelesslan__region_and_more
[X] 0021_ltree_paths
[X] 0022_denormalization_triggers
[X] 0023_wirelesslangroup_drop_unique_constraint
[X] 0024_fix_ltree_cascade_triggers
migrate --check 校验"是否有未应用迁移",有未应用迁移时退出码非 0——监控/升级前置检查的标准用法:
python3 manage.py migrate --check
echo "rc=$?"
实测回显:
rc=0
migrate 正式应用迁移(升级后由 upgrade.sh 自动调用);手动执行形式:
python3 manage.py migrate
新装/升级时典型输出(实测节选):
Applying ipam.0001_squashed... OK
Applying virtualization.0001_squashed_0022... OK
Applying extras.0002_squashed_0059...
💡 说明:跨版本升级永远走官方
upgrade.sh(见 5.4 节),它会按依赖顺序执行 migrate + trace_paths + clearsessions + collectstatic,不要单独裸跑 migrate 跳过其他步骤。
4.4 dbshell:直连 PostgreSQL
dbshell 按 DATABASES 配置自动连库(等效 psql,无需手动带密码)。实测看表清单与迁移记录数:
echo "\dt" | python3 manage.py dbshell 2>&1 | head -8
实测回显:
List of relations
Schema | Name | Type | Owner
--------+-----------------------------------------+-------+--------
public | auth_group | table | netbox
public | auth_group_permissions | table | netbox
public | auth_permission | table | netbox
public | circuits_circuit | table | netbox
public | circuits_circuitgroup | table | netbox
echo "SELECT count(*) FROM django_migrations;" | python3 manage.py dbshell
实测回显:
count
-------
812
(1 row)
4.5 dumpdata:数据导出(JSON)
按 app 或模型导出 JSON,用于小规模数据迁移、备份抽查、跨实例对照:
python3 manage.py dumpdata dcim.Site --indent 2 | head -22
实测回显:
[
{
"model": "dcim.site",
"pk": 4,
"fields": {
"created": "2026-10-22T11:00:42.690Z",
"last_updated": "2026-10-22T11:00:42.690Z",
"custom_field_data": {},
"owner": null,
"description": "",
"comments": "",
"name": "dc-01",
"slug": "dc-01",
"status": "active",
"region": null,
"group": null,
"tenant": null,
"facility": "",
"time_zone": null,
"physical_address": "",
"shipping_address": "",
"latitude": null,
"longitude": null,
"asns": []
💡 说明:dumpdata 适合业务数据的轻量导出;全库备份用 pg_dump(见 5.3 节),前者不含迁移状态与序列信息,后者才是完整恢复单元。
4.6 check / diffsettings:配置体检
check 校验配置合法性与系统完整性,改 configuration.py 后必跑:
python3 manage.py check
实测回显:
System check identified no issues (0 silenced).
diffsettings 对比 Django 默认列出全部生效配置(### 标记差异行),核对配置是否真正生效:
python3 manage.py diffsettings | head -8
实测回显(节选):
ALLOWED_HOSTS = ['*']
API_TOKEN_PEPPERS = {1: 'UwJKwgp%SpYB+&s8RXB4_#BE7Sa@fftR%WafsYAFc2w_GSWbmq'} ###
AUTHENTICATION_BACKENDS = ['netbox.authentication.RemoteUserBackend', 'netbox.authentication.ObjectPermissionBackend']
AUTH_USER_MODEL = 'users.User'
BASE_DIR = '/opt/netbox-4.7.3/netbox' ###
BASE_PATH = '' ###
BULK_UPDATE_CHUNK_SIZE = 5000 ###
CACHES = {'default': {'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://localhost:6379/1', 'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient', 'USERNAME': '', 'PASSWORD': ''}}}
参数含义的逐项解读见本系列《Netbox 4.7 配置参数详解》第三章。
4.7 rqworker / rqstats:后台任务队列族
Netbox 的 Webhook、报表、自定义脚本、批量操作都走 RQ 队列(Redis 队列),由 netbox-rq 服务常驻消费。手动调试用的核心命令:
rqstats 队列全景(实测):
python3 manage.py rqstats
Django RQ CLI Dashboard
------------------------------------------------------------------------------------------
| Name | Queued | Active | Deferred | Finished | Failed | Workers |
------------------------------------------------------------------------------------------
| default | 0 | 0 | 0 | 2 | 0 | 1 |
| high | 0 | 0 | 0 | 0 | 0 | 1 |
| low | 0 | 0 | 0 | 0 | 0 | 1 |
------------------------------------------------------------------------------------------
三队列(high/default/low)与 systemd 里 worker 的消费顺序一致。
rqworker 手动启动 worker(参数实测自 manage.py help rqworker):
timeout 8 python3 manage.py rqworker high default low
实测回显(8 秒后外部超时,worker 优雅退出):
11:05:23 Worker c27802443dc74af9a68d09e4292933c4: started with PID 5126, version 2.12.0
11:05:23 Worker c27802443dc74af9a68d09e4292933c4: subscribing to channel rq:pubsub:c27802443dc74af9a68d09e4292933c4
11:05:23 *** Listening on high, default, low...
11:05:23 Worker c27802443dc74af9a68d09e4292933c4: cleaning registries for queue: high
11:05:23 Worker c27802443dc74af9a68d09e4292933c4: cleaning registries for queue: default
11:05:23 Worker c27802443dc74af9a68d09e4292933c4: cleaning registries for queue: low
11:05:28 Worker c27802443dc74af9a68d09e4292933c4 [PID 5126]: warm shut down requested
11:05:28 Worker c27802443dc74af9a68d09e4292933c4: unsubscribing from channel rq:pubsub:c27802443dc74af9a68d09e4292933c4
关键参数(manage.py help rqworker 实测节选):
usage: manage.py rqworker [-h] [--worker-class WORKER_CLASS] [--pid PID]
[--burst] [--with-scheduler] [--name NAME]
[--queue-class QUEUE_CLASS] [--job-class JOB_CLASS]
[--worker-ttl WORKER_TTL] [--max-jobs MAX_JOBS]
[--max-idle-time MAX_IDLE_TIME]
[--serializer SERIALIZER] [--version] [-v {0,1,2,3}]
...
args The queues to work on, separated by space
--burst Run worker in burst mode
args:要消费的队列名,空格分隔(与 netbox-rq.service 的rqworker high default low一致);--burst:清空现有积压后退出,积压治理利器(systemd 常驻之外临时开一个跑积压)。
同族命令速查:rqsuspend/rqresume(暂停/恢复队列处理,升级窗口用)、rqenqueue(手动投递任务)、rqworker-pool(多进程池 worker)、rqcron(注册周期任务)、rqscheduler(调度器)。
⚠️ 排障实录:rqstats 显示 Workers=0 而页面后台任务一直排队 →
systemctl status netbox-rq看服务是否 active;若频繁重启,journalctl -eu netbox-rq查 worker 崩溃原因(常见为 Redis 密码不匹配或 tasks 库被误 flush)。
4.8 trace_paths / clearsessions:数据一致性维护对
这组命令由官方 upgrade.sh 在每次升级时自动执行(脚本原文实测:COMMAND="python3 netbox/manage.py trace_paths --no-input" 与 COMMAND="python3 netbox/manage.py clearsessions"),也可手动跑:
trace_paths 检查并补全线缆/电源路径的缓存(实测空库场景):
python3 manage.py trace_paths --no-input
实测回显:
Found no missing power feed paths; skipping
Found no missing power outlet paths; skipping
Found no missing power port paths; skipping
Finished.
clearsessions 清理过期会话(幂等,可进 cron):
python3 manage.py clearsessions
echo "rc=$?"
实测回显:
rc=0
4.9 collectstatic:静态资源收集
upgrade.sh 已自动执行;重复执行是幂等的(对照实测):
python3 manage.py collectstatic --noinput
实测回显(第二次运行):
0 static files copied to '/opt/netbox-4.7.3/netbox/static', 543 unmodified.
4.10 housekeeping 命令已移除
老版本(v4.2 之前)资料里常见的 manage.py housekeeping 在 v4.7.3 实测已不存在:
python3 manage.py housekeeping
实测回显:
Unknown command: 'housekeeping'
Type 'manage.py help' for usage.
其历史职责已被拆分承接:过期会话清理并入 clearsessions(upgrade.sh 每次升级都会调用,实测脚本原文 Removing expired user sessions (python3 netbox/manage.py clearsessions)...),周期性后台任务由 [django_rq] 组的 rqcron/rqscheduler 体系接管。旧文档遇到 housekeeping 一律按此映射替换。
五、服务器运维命令
5.1 systemd 服务管理
Netbox 生产形态共 5 个服务单元,逐个管理(每个单元单独一条命令):
systemctl is-active netbox netbox-rq
systemctl is-enabled netbox netbox-rq
systemctl status netbox
systemctl status netbox 实测回显:
● netbox.service - NetBox WSGI Service
Loaded: loaded (/etc/systemd/system/netbox.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-10-22 10:29:49 UTC; 6s ago
Docs: https://docs.netbox.dev/
Main PID: 7133 (gunicorn)
Tasks: 6 (limit: 94371)
Memory: 1.0G (peak: 1.0G)
CPU: 19.058s
CGroup: /system.slice/netbox.service
├─7133 /opt/netbox-4.7.3/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
├─7136 /opt/netbox-4.7.3/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
├─7137 /opt/netbox-4.7.3/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
├─7138 /opt/netbox-4.7.3/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
├─7139 /opt/netbox-4.7.3/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
常用节奏:改配置后 systemctl restart netbox netbox-rq;只改 nginx 后 systemctl reload nginx;确认自启 systemctl is-enabled <单元>。
5.2 journalctl 日志排查
Web 服务日志(gunicorn 输出经 systemd 收集):
journalctl -u netbox -n 6 --no-pager
实测回显(含两个真实故障样本):
Oct 22 10:32:01 netbox-server gunicorn[82]: [2026-10-22 10:32:01 +0000] [82] [ERROR] Control server error: [Errno 13] Permission denied: '/nonexistent'
Oct 22 10:52:22 netbox-server gunicorn[82]: [2026-10-22 10:52:22 +0000] [82] [CRITICAL] WORKER TIMEOUT (pid:201)
Oct 22 10:52:22 netbox-server gunicorn[82]: [2026-10-22 10:52:22 +0000] [201] [INFO] Worker exiting (pid: 201)
Oct 22 10:52:25 netbox-server gunicorn[82]: [2026-10-22 10:52:25 +0000] [82] [ERROR] Worker (pid:201) exited with code 1.
Oct 22 10:52:25 netbox-server gunicorn[1549]: [2026-10-22 10:52:25 +0000] [1549] [INFO] Booting worker with pid: 1549
Oct 22 10:52:25 netbox-server gunicorn[82]: [2026-10-22 10:52:25 +0000] [82] [ERROR] Control server error: [Errno 13] Permission denied: '/nonexistent'
WORKER TIMEOUT (pid:201)→ Worker exiting → Booting worker:某请求超过 gunicorntimeout=120被强杀并自动重生,gunicorn 自愈但该请求失败;处置见安装指南 FAQ Q5;Permission denied: '/nonexistent':systemd 用户无家目录导致的控制服务器噪音报错,不影响服务,消除方式见安装指南 FAQ Q6。
队列 worker 日志:journalctl -u netbox-rq -n 20 --no-pager;配置合法性错误会在启动瞬间出现 Python 堆栈,journalctl -eu netbox 直接看最后一条。
5.3 PostgreSQL 备份与恢复
全库逻辑备份(含全部表结构、数据与迁移状态):
sudo -u postgres pg_dump netbox > /var/backups/netbox-$(date +%F).sql
ls -lh /var/backups/netbox-*.sql | tail -1
实测回显(本实例刚完成初始化、仅少量演示数据时的体积供参考):
-rw-r--r-- 1 root root 944K Oct 22 11:17 /var/backups/netbox-2026-10-22.sql
备份文件头实测:
--
-- PostgreSQL database dump
--
规模参考:空库即含 208 张表(grep -c '^CREATE TABLE' 实测),随资产数据增长备份体积近似线性增长,建议生产环境每日 cron + 保留 7~30 天。
恢复(先建空库再灌入):
sudo -u postgres psql -c 'CREATE DATABASE netbox_restore OWNER netbox;'
sudo -u postgres psql -d netbox_restore -f /var/backups/netbox-2026-10-22.sql
⚠️ 注意:恢复目标是空库;官方升级文档特别提醒不要把备份恢复到已初始化的新版本库上(v4.7.1 曾修复"从 v4.7.0 dump 恢复导致层级路径触发器缺失"的问题,见官方 release notes)。
5.4 升级流程:upgrade.sh
官方升级三步(以小版本升级为例):
cd /opt
wget https://github.com/netbox-community/netbox/archive/refs/tags/v4.7.4.tar.gz
tar -xzf v4.7.4.tar.gz
ln -sfn /opt/netbox-4.7.4/ /opt/netbox
/opt/netbox/upgrade.sh
upgrade.sh 依次自动完成:venv 依赖更新(pip)→ manage.py migrate → trace_paths --no-input → clearsessions → 离线文档构建 → collectstatic。实测尾部输出(升级后必看):
WARNING: No existing virtual environment was detected. A new one has
been created. Update your systemd service files to reflect the new
Python and gunicorn executables. (If this is a new installation,
this warning can be ignored.)
netbox.service ExecStart:
/opt/netbox-4.7.3/venv/bin/gunicorn
netbox-rq.service ExecStart:
/opt/netbox-4.7.3/venv/bin/python
After modifying these files, reload the systemctl daemon:
> systemctl daemon-reload
--------------------------------------------------------------------
Upgrade complete! Don't forget to restart the NetBox services:
> sudo systemctl restart netbox netbox-rq
升级完成后重启服务并复核版本:
systemctl restart netbox netbox-rq
curl -sk https://127.0.0.1/api/status/ | python3 -m json.tool | grep netbox-version
实测回显:
"netbox-version": "4.7.3",
💡 说明:
/api/status/是免认证端点,返回 netbox-version / python-version / django-version / rq-workers-running 等运行时事实(实测rq-workers-running: 2),是升级后健康检查的第一站。
六、注意事项
- manage.py 必须在 venv 里跑:
source /opt/netbox/venv/bin/activate后再执行,否则要么找不到依赖、要么把包装进系统 Python 污染环境; - 改配置 = 改文件 + check + 重启双服务,漏掉重启是"配置不生效"的第一大原因(详见《Netbox 4.7 配置参数详解》第三章);
- 不要用 runserver 对外服务:
manage.py runserver仅限开发调试(官方明确 Not for production use),生产一律 gunicorn + systemd; - 跨版本升级只走 upgrade.sh:手动裸跑 migrate 会漏掉静态资源、路径缓存与会话清理;
- dumpdata/pg_dump 分工:业务数据抽查/搬迁用 dumpdata,整机备份恢复用 pg_dump;
- rqworker 手动调试记得退出:
--burst模式清完积压自动退出;前台调试用timeout N包裹,避免占用队列 worker 名额。
七、常见问题(FAQ)
Q1:manage.py 报 ModuleNotFoundError 或 command not found: python3 之外的奇怪依赖错误
没进 venv。先 source /opt/netbox/venv/bin/activate && cd /opt/netbox/netbox。
Q2:createsuperuser 提示 skipped due to not running in a TTY
见 4.2 节:非交互环境用 DJANGO_SUPERUSER_PASSWORD=<密码> createsuperuser --noinput --username <u> --email <e>。
Q3:changepassword 报 GetPassWarning 且密码明文回显 管道喂密码的正常现象(终端无法关闭回显),仅限受控环境使用;交互 SSH 下运行则无此警告。
Q4:页面后台任务一直"排队"不执行
python3 manage.py rqstats 看 Workers 列:0 说明 netbox-rq 服务死了 → systemctl status netbox-rq + journalctl -eu netbox-rq;有 worker 但 Queued 持续增长 → 看 Failed 列与 worker 日志中的任务异常堆栈。
Q5:housekeeping 报 Unknown command
v4.7.3 已移除该命令(4.10 节实测),改用 clearsessions + rqcron 体系。
Q6:journalctl 里出现 WORKER TIMEOUT
gunicorn 超时强杀慢请求(默认 120 秒),worker 自动重生。排查慢请求来源(报表/批量导出),必要时调大 /opt/netbox/gunicorn.py 的 timeout 后 systemctl restart netbox。
Q7:migrate --check 在监控里告警
说明有未应用的迁移——多半是升级时没跑 upgrade.sh 或跑了一半。补跑 /opt/netbox/upgrade.sh(幂等)后恢复 rc=0。
Q8:dbshell 提示对等连接失败/认证失败
dbshell 读 configuration.py 的 DATABASES;报错时先核对 python3 manage.py diffsettings | grep ^DATABASES 与 2.2 节建库信息一致(用户名/密码/主机)。
八、参考链接
- 官方管理命令文档:https://netbox.readthedocs.io/en/stable/administration/management-commands/
- NetBox Shell 文档:https://netbox.readthedocs.io/en/stable/administration/netbox-shell/
- 升级指南:https://netbox.readthedocs.io/en/stable/installation/upgrading/
- RQ 队列说明:https://netbox.readthedocs.io/en/stable/configuration/miscellaneous/#rq
本系列其他文档:《Ubuntu 24.04 安装 Netbox 4.7 指南》(部署实测)、《Netbox 4.7 配置参数详解》(参数手册)、《Netbox 介绍与选型指南》(认知与选型)。