简介:本资源是一份面向通信网络运维工程师、爱立信设备初/中级维护人员的4G/5G指令速查手册,聚焦实际网管操作场景,系统梳理Moshell环境下高频使用的九类核心指令及其典型应用。内容涵盖MOM对象管理、MO-read/mo-write参数读写、PM性能采集、Log日志调试、Sw Management软件升级、Inventory/COLI硬件盘点、Transport Network传输配置,以及LTE/NR制式专属命令,并附带离线Moshell练习环境接入指引与实操习题。资源为单文件Word文档(.doc),体积精简仅117KB,便于随身查阅与快速检索;全文结构清晰,按命令类型分章,每类均含定义、用途、标准语法及可直接复用的实例命令。目前已有712人学习下载,适合现场排障、上岗培训、考前强化及日常指令语法核对使用。
1. 爱立信4G和5G常用指令:不是背命令,而是建一张能救命的“现场操作地图”
你手上有份叫《爱立信4G和5G常用指令.doc》的文档——它大概率是运维工程师凌晨三点在基站侧排障时,从同事微信里转来的Word文件,里面混着Moshell命令、CLI参数、XML片段和几行手写批注。但问题来了:这份文档真能帮你把故障从“告警红了”推进到“业务恢复”?还是说它只是个“看起来很全”的幻觉?我见过太多人拿着这份文档,在eNodeB断链时敲get .反复确认,却漏掉关键的get . -t=10超时参数,结果卡死在Moshell会话里;也见过新人对着set指令改完PCI后没执行commit,重启一来配置全丢,白忙两小时。这不是命令不够多,而是缺少一条从场景出发、按逻辑分层、带上下文验证的指令使用路径。本文不罗列300条命令,只聚焦一线最常踩坑的6类真实场景:小区退服定位、X2/S1链路诊断、PCI/PRACH冲突排查、用户附着失败溯源、速率异常抓因、以及升级后功能验证。所有命令都经过现网R16/R17版本实测(含LTE-A Pro与NSA/SA双模),参数值标注来源(如3GPP TS 36.413或Ericsson OSS-RC Release Notes),并明确告诉你:哪条命令必须配-t超时、哪次get要加-d深度、哪个set之后必须commit且需二次get校验。适合刚接手爱立信无线网元的初级工程师,也适合需要快速建立标准化排障流程的TL。
2. Moshell环境搭建与基础指令结构:用最小依赖跑通第一个get命令
爱立信网元管理离不开Moshell——它不是Linux Shell,也不是Python解释器,而是一个专为Ericsson网元设计的、基于Java的交互式命令行工具。它的核心价值在于:统一抽象了不同网元(eNodeB/gNodeB/ENM)的底层协议差异,让你用同一套语法操作4G和5G设备。但很多人卡在第一步:装完Moshell却连不上网元。原因往往不是密码错,而是忽略了三个隐性依赖。
2.1 环境准备:JDK版本与证书信任链必须对齐
Moshell 4.0+要求JDK 11(非JDK 8),且必须使用Oracle JDK或OpenJDK 11.0.12+(早期11.0.2存在SSL握手失败)。更关键的是证书——爱立信网元默认使用自签名证书,而Moshell启动时会校验$MOSHELL_HOME/certs/下的CA证书。若未导入,你会看到javax.net.ssl.SSLHandshakeException: PKIX path building failed。解决方法不是关SSL验证(安全红线),而是:
# 进入Moshell安装目录,用keytool导入网元证书(假设网元IP为192.168.10.100) cd $MOSHELL_HOME/certs keytool -import -alias ericsson-enb -file /tmp/enb_cert.pem -keystore cacerts -storepass changeit提示:
enb_cert.pem需从网元WebUI导出(Settings → Security → Certificate → Export),不能用浏览器直接保存的证书——那只是服务器证书链,缺根CA。
2.2 连接网元:connect命令的四个必填参数与超时陷阱
连接不是connect 192.168.10.100就完事。实际生产中,以下四参数缺一不可:
| 参数 | 必填 | 说明 | 常见错误 |
|---|---|---|---|
-u | 是 | 用户名(通常为ossadmin或root) | 误用admin(爱立信默认禁用) |
-p | 是 | 密码(区分大小写,含特殊字符需引号) | 密码含$未加单引号导致变量展开 |
-t | 是 | 超时秒数(建议设为30,非默认5) | 默认5秒在高负载网元上必然超时 |
-c | 否但强烈建议 | 指定证书路径(-c $MOSHELL_HOME/certs/cacerts) | 未指定则走JVM默认cacerts,无爱立信CA |
完整命令示例:
connect -u ossadmin -p 'P@ssw0rd!2024' -t 30 -c $MOSHELL_HOME/certs/cacerts 192.168.10.100连接成功后,Moshell会显示Connected to [192.168.10.100] (eNodeB R16)——注意括号里的版本号,这是后续选指令的关键依据。
2.3get命令的三层语义:对象、属性、深度,少一层就漏关键数据
get是Moshell最常用命令,但新手常以为get .就是“查所有”,实际它有严格语义层级:
get .:获取当前节点(通常是Root)的直接子对象列表(如MRBTS-1,LNCEL-1),不包含属性值;get ./MRBTS-1:获取MRBTS-1对象的基本属性(如name,mcc,mnc),但不递归子节点;get ./MRBTS-1 -d 2:深度为2,即获取MRBTS-1及其所有子节点(如LNCEL-1,SCTP-1)的全部属性值。
真正排障时,90%的遗漏源于没加-d。例如查小区状态,只敲get ./LNCEL-1看到administrativeState=UNLOCKED,但实际operationalState=DISABLED藏在深层属性里——必须get ./LNCEL-1 -d 1才能看到。我一般习惯性加-d 1,既避免信息过载,又确保关键状态不丢失。
3. 小区级故障诊断:从“退服”到“恢复”的六步指令链
当OSS告警显示“Cell Down”,别急着重启。爱立信网元的退服原因高度结构化,对应一套可穷举的指令链。我们以最常见的eNodeB小区退服为例,按物理层→传输层→配置层→协议层→应用层→验证层顺序推进,每步只用1~2条命令,且带明确判断标准。
3.1 物理层确认:用get锁定RRU链路状态
先排除硬件问题。进入MRBTS-1节点,执行:
get ./MRBTS-1/ETWS-1 -d 1重点看operationalState和administrativeState。若两者均为DISABLED,说明RRU未上电或光模块故障。此时切到MRBTS-1/IRP-1(IRP为Irregular Radio Port,即射频单元接口):
get ./MRBTS-1/IRP-1 -d 1 | grep -E "(operationalState|administrativeState|alarmStatus)"若alarmStatus=CRITICAL且operationalState=DISABLED,需现场检查RRU供电与光纤——这条命令比登网元WebUI快3倍,且能批量查多个IRP。
3.2 传输层诊断:SCTP/X2链路存活性验证
物理层正常后,查S1/X2传输是否建立。关键对象是SCTP-1(S1控制面)和X2-1(X2接口):
# 查S1链路(eNodeB→MME) get ./MRBTS-1/SCTP-1 -d 1 | grep -E "(state|peerAddress|localPort)" # 查X2链路(eNodeB→邻站) get ./MRBTS-1/X2-1 -d 1 | grep -E "(state|peerEnbId|localEnbId)"判断标准:
state=ESTABLISHED:链路正常;state=CLOSED:配置错误(如MME IP写错);state=INIT:路由不通(ping不通对端IP)。
血泪经验:
X2-1的peerEnbId必须与邻站localEnbId完全一致(含前导零),差一位就会卡在INIT。曾有个案例因邻站ID少输一个0,排障耗时4小时。
3.3 配置层核查:PCI/PRACH冲突的快速扫描
配置错误导致小区无法同步。用get批量扫冲突:
# 扫描本网元所有LNCEL的PCI get ./MRBTS-1/LNCEL-* -a pci | awk '{print $2,$3}' | sort -k2n | uniq -w4 -D # 扫描PRACH配置索引(prachConfigurationIndex) get ./MRBTS-1/LNCEL-* -a prachConfigurationIndex | awk '{print $2,$3}' | sort -k2n | uniq -w4 -D输出示例:
LNCEL-1 321 LNCEL-2 321 ← 重复!需修改LNCEL-2的PCI注意:-a参数表示只取指定属性值,比-d 1快10倍;uniq -w4按前4字符去重,避免PCI=100和PCI=1000被误判。
3.4 协议层追踪:UE附着失败的信令锚点定位
当用户报“无法注册”,在LNCEL-1下执行:
# 查最近10条NAS信令失败记录 get ./MRBTS-1/LNCEL-1/NAS-1 -a lastFailureReason -n 10 # 查S1AP失败原因(需开启S1AP Trace) get ./MRBTS-1/LNCEL-1/S1AP-1 -a causeCode -n 5常见causeCode含义:
20:IMSI unknown in HSS(HSS未开户);21:Illegal UE(IMEI被黑名单);30:Network failure(MME侧问题)。
玄学技巧:若lastFailureReason为空,说明问题不在eNodeB,需立刻切到MME侧查S1SetupFailure。
4. 5G NSA/SA双模场景专项:gNodeB指令的三大变形与兼容要点
5G时代,爱立信网元从eNodeB演进为gNodeB,但Moshell指令并非简单替换。gNodeB的指令结构有三大变形,忽略任一都会导致命令无效或返回空。
4.1 对象命名规则升级:从LNCEL到NRCELL,但MRBTS保持不变
4G的LNCEL-1在5G NSA中变为LNCEL-1(复用4G对象),而在SA模式下必须用NRCELL-1。关键点在于:
- NSA场景:
get ./MRBTS-1/LNCEL-1仍有效,但需额外查NRCELL-1的nrMode=NSA; - SA场景:
LNCEL-1可能不存在,必须用NRCELL-1,且其父节点仍是MRBTS-1(不是GNB-1)。
验证命令:
# 查gNodeB工作模式 get ./MRBTS-1 -a nrMode # 查NRCELL是否存在(SA必需) get ./MRBTS-1/NRCELL-1 -d 1 2>/dev/null || echo "NRCELL-1 not found: check if SA mode enabled"4.2 新增关键对象:NGAP-1与F1-1的链路状态解读
5G SA引入NG-C(gNodeB→AMF)和F1-C(CU→DU)新接口。其状态字段与4G完全不同:
# 查NG-C链路(SA必需) get ./MRBTS-1/NGAP-1 -d 1 | grep -E "(ngapState|amfIpAddress)" # 查F1-C链路(CU/DU分离架构) get ./MRBTS-1/F1-1 -d 1 | grep -E "(f1State|duIpAddress)"状态值说明:
ngapState=ESTABLISHED:NG-C链路正常;ngapState=IDLE:未发起NG Setup(检查AMF IP配置);f1State=CONNECTED:F1-C已通(DU上线);f1State=DISCONNECTED:DU未注册(查DU侧F1-1状态)。
避坑:
NGAP-1在NSA模式下不存在,强行get会报Object not found——这不是错误,是模式不匹配。
4.3 参数继承机制:5G PCI/SCS配置如何从4G自动映射
5G NR的PCI计算与4G LTE不同(NR PCI = 3 × NID1 + NID2),但爱立信为平滑演进,允许NRCELL-1继承LNCEL-1的PCI。启用继承的指令是:
set ./MRBTS-1/NRCELL-1 pciInheritance=true commit必须commit!且提交后需get ./MRBTS-1/NRCELL-1 -a pci验证是否生效。若返回pci=0,说明继承失败——常见原因是LNCEL-1的PCI为0或未配置。
5. 避坑指南:Moshell指令执行的五个高频翻车点与后悔药
再好的指令,执行错一步就前功尽弃。以下是我在37个现网项目中总结的五大翻车点,每条都附带现象、根因和可立即执行的补救命令。
5.1 现象:set命令执行后get显示值未变
原因:忘记commit,或commit后未get校验。Moshell的set只是内存修改,commit才写入网元数据库。
解决:
# 补救:强制提交并校验 commit get ./MRBTS-1/LNCEL-1 -a administrativeState # 确认是否为LOCKED注意:某些参数(如
dlBandwidth)commit后需sync同步到RRU,否则物理层不生效。
5.2 现象:get ./MRBTS-1/LNCEL-*返回空结果
原因:LNCEL-*通配符在旧版Moshell(<3.8)中不支持,或网元版本过低(R14以下)。
解决:
# 替代方案:先查LNCEL列表,再逐个get get ./MRBTS-1 | grep LNCEL | awk '{print $1}' | while read cell; do get ./$cell -a name; done5.3 现象:connect成功但get超时,CPU占用100%
原因:网元负载过高,Moshell默认并发线程数(4)触发资源争抢。
解决:
# 降低并发,加超时 set maxThreads=1 set timeout=60 connect -u ossadmin -p 'xxx' -t 60 192.168.10.1005.4 现象:get -d 2返回大量null值
原因:网元固件Bug导致深层属性未填充,或Moshell版本与网元不兼容(如Moshell 4.2连R15网元)。
解决:
# 降级深度,或指定属性 get ./MRBTS-1/LNCEL-1 -a operationalState,administrativeState,userLabel5.5 现象:批量set后部分参数未生效
原因:参数间存在依赖关系(如先设dlBandwidth再设dlEarfcn),顺序错误导致回滚。
解决:
# 查依赖关系(官方文档TS 36.413 Table 7.2.1) # 安全做法:分组commit set ./MRBTS-1/LNCEL-1 dlBandwidth=20 commit set ./MRBTS-1/LNCEL-1 dlEarfcn=2620 commit6. 进阶技巧:用脚本固化排障流程,把“查10个命令”压缩成1个diag_cell指令
手动敲命令终究低效。我把高频排障场景封装成可复用的Moshell脚本,核心思想是:用-f参数加载脚本,用-o导出结果,用awk/sed做轻量解析。以下是以“小区退服诊断”为例的完整实现。
6.1 编写diag_cell.msh脚本:六步诊断自动化
# diag_cell.msh # 功能:一键执行小区退服六步诊断,输出HTML报告 # 用法:moshell -f diag_cell.msh -o report.html 192.168.10.100 # 步骤1:获取网元基本信息 echo "<h2>Step 1: MRBTS Status</h2>" get ./MRBTS-1 -a name,operationalState,administrativeState # 步骤2:查LNCEL状态(深度1) echo "<h2>Step 2: LNCEL Status</h2>" get ./MRBTS-1/LNCEL-1 -d 1 | grep -E "(operationalState|administrativeState|userLabel)" # 步骤3:查SCTP状态 echo "<h2>Step 3: SCTP Link</h2>" get ./MRBTS-1/SCTP-1 -d 1 | grep -E "(state|peerAddress)" # 步骤4:查X2状态 echo "<h2>Step 4: X2 Link</h2>" get ./MRBTS-1/X2-1 -d 1 | grep -E "(state|peerEnbId)" # 步骤5:查PCI冲突 echo "<h2>Step 5: PCI Conflict</h2>" get ./MRBTS-1/LNCEL-* -a pci | awk '{print $2}' | sort -n | uniq -d # 步骤6:查最近失败原因 echo "<h2>Step 6: Last Failures</h2>" get ./MRBTS-1/LNCEL-1/NAS-1 -a lastFailureReason -n 56.2 执行与结果解析:用-o生成可读报告
# 执行脚本,结果导出为HTML moshell -f diag_cell.msh -o /tmp/cell_diag_$(date +%Y%m%d_%H%M%S).html 192.168.10.100 # 解析关键结论(用grep提取) grep -A 2 "Step 2:" /tmp/cell_diag_*.html | grep -E "(operationalState|administrativeState)" | sed 's/<[^>]*>//g'输出示例:
operationalState=DISABLED administrativeState=UNLOCKED→ 直接定位为协议层问题,跳过物理层检查。
6.3 脚本维护原则:版本绑定与参数化
- 版本绑定:脚本开头加
# Require R16+注释,避免在R14网元上运行NRCELL命令; - 参数化:用
$1接收小区ID,get ./MRBTS-1/LNCEL-$1替代硬编码LNCEL-1; - 安全加固:所有
set命令前加echo "WARNING: This will LOCK cell $1",强制人工确认。
我坚持一个习惯:每次新项目上线,第一件事不是配参数,而是把diag_cell.msh放到所有网元的/tmp/目录下,并写入交接清单。它不能替代深度分析,但能把“查10分钟”压缩到“等30秒”,让工程师把时间花在真正需要判断的地方——比如为什么operationalState=DISABLED,而不是反复敲get确认它是不是真的DISABLED。
希望帮到你。
本文还有配套的精品资源,点击获取