简介:NetTerm5.4绿色版是一款面向网络运维人员、Unix主机使用者及编程开发者的远程登录工具合集,免安装即可运行,适合在本地网或拨号入网环境下连接远程主机、管理站点与传输文件。其功能覆盖Telnet远程登录、内置FTP服务器、IP地址分辨与网址监控,并支持从Unix主机进行全透明打印;借助透射功能,可将本地Unix页面文件上传至主机再回传计算机,方便程序员在本地编辑主机文件,避开主机端简陋的Unix编辑器。压缩包体约1.87MB,文件总数与类型明细上游暂未提供,解压后以绿色版程序及配套组件为主,具体以实际内容为准。已有143人学习下载,适合需要轻量级远程终端与文件传输方案、希望减少安装部署步骤的读者参考使用。
1. NetTerm5.4 绿色版:免安装,拷进U盘就能连的旧式终端
上周帮一个朋友处理遗留系统,对方给的是台不让装任何软件的 Windows Server,机器上只有系统自带的东西,连个像样的终端都没有。手上能用的只有一个几十兆的压缩包——NetTerm5.4 绿色版,解压双击就能跑,不用管理员权限,不用写安装目录,连注册表都尽量少碰。它是一款出现得比很多读者入行还早的 Windows 终端仿真工具,会话类型覆盖 Telnet、rlogin、串口,5.x 之后也带了 SSH,终端仿真从 VT52/VT100/VT220 一路到 ANSI、TN3270、TN5250 都有,文件传输支持 Zmodem、Xmodem、Kermit 这一套老协议。它适合两类人:一类是被授权和安装权限卡住、只能拿便携工具去连老设备的人;另一类是还在维护工控机、路由器、交换机、老 Unix 主机,需要一台能记住几十个会话、能开日志、能把配置随身带走的工具的人。绿色版这个形态解决的正是“换机器就重配一遍”的问题。
2. 解压即用:目录结构、会话建立与配置固化
拿到压缩包之后第一件事不要急着双击主程序,先看清楚它是怎么“绿色”的。绿色版的本质是把安装版散落在系统各处的状态收敛到程序目录里,如果这一步没搞明白,后面换台机器会发现会话全没了,或者更糟——配置写进了注册表,卸载时清理不干净。
2.1 绿色版和安装版差在哪:配置到底落在哪个文件
安装版的行为是把程序文件和用户配置分开:程序装进 Program Files,会话列表、字体、颜色、终端类型这些偏好写进 HKEY_CURRENT_USER 下的用户配置项。这样做的好处是多用户隔离,坏处是拷走程序目录并不等于拷走了配置。
绿色版的常见做法有两种。第一种是程序启动时读取同目录下的 ini 类配置文件,退出时写回,完全不碰系统;第二种是仍然读写注册表,但附带一个导入导出的小工具或脚本,启动前把 reg 文件导进去,退出后清理掉。这两种在压缩包里表现为不同的文件组合,我一般先按下面的顺序确认。
| 观察点 | 说明 | 对应结论 |
|---|---|---|
| 目录里有 ini/cfg 类文件 | 打开看有没有主机地址、字体名这类字段 | 走配置文件的便携形态 |
| 目录里有 reg/bat 文件 | 看 bat 里是不是 reg import 命令 | 注册表导入型便携形态 |
| 首次运行后目录多出文件 | 对比运行前后的文件列表 | 确认写入位置 |
| 换一个 Windows 账户运行 | 会话列表是否还在 | 判断是否绑定当前用户 |
确认方式很直接:运行一次程序,随便改个设置,退出,然后对比程序目录的文件修改时间。如果目录里没有任何文件变动,而设置确实被记住了,那它就是在写注册表。这一步值得花两分钟,因为后面的备份策略完全取决于这个结论。
提示:把程序放在含空格或中文的路径下容易出问题,尤其是配套的批处理脚本在拼接路径时会断掉。我一般固定放在
D:\tools\netterm54这种纯英文短路径下。
2.2 建会话的四要素:主机、端口、终端类型、字符集
会话建立这一步,新手最容易只填主机地址就点连接,连上之后发现界面全是花屏,然后开始怀疑软件有问题。实际上该填的东西有四样,缺一样就可能在特定场景下出症状。
第一步是会话类型。Telnet 走 23 端口,SSH 走 22,rlogin 走 513,串口则要指定 COM 口号、波特率、数据位、停止位、校验位。串口场景里波特率填错的表现是满屏乱码,而不是连不上,这点和网络会话不一样,别被误导。
第二步是主机与端口。老设备的端口经常被改过,23 端口不一定开着,有的运维为了省事会把 Telnet 挪到 2323 这类高位端口上。不确定的时候先做一次连通性探测再进软件,比在软件里反复试要快得多。
# 先探端口,再进软件建会话,能省掉一半的"连不上"排查时间 $h = '10.20.30.40' # 目标主机,换成实际地址 $p = 23 # Telnet 默认 23,改过端口的换成实际值 Test-NetConnection -ComputerName $h -Port $p -InformationLevel Detailed这段的意义在于把“网络层通不通”和“终端配置对不对”两件事拆开。如果TcpTestSucceeded是 False,那问题在路由、防火墙或服务没起,跟 NetTerm 一点关系都没有;如果是 True 但软件里还是连不上,才轮到会话参数、终端类型、认证方式这些层面。参数上,-InformationLevel Detailed会把解析到的 IP 和每一跳的耗时打出来,比只返回一个布尔值有用。
第三步是终端类型。这一项决定了程序怎么解释服务端发回来的控制序列,选错了不会连不上,但会出现菜单错位、方向键乱跳、清屏失效这类“看着能用其实很别扭”的问题,具体放在第 3 章展开。
第四步是字符集与字体。中文环境下的坑几乎全在这里,同样留到第 3 章细说。
建会话的顺序建议是:先探测端口,再建会话,再调终端类型,最后调字体和颜色。每改一项就断开重连一次看效果,不要一口气改五六项,否则出问题不知道是哪一项引起的。
2.3 固化与迁移:把会话清单变成一份可拷贝的资产
会话配好之后,真正的价值在于下次换机器能一把搬走。这里分两种情况处理。
如果第 2.1 步确认了它是配置文件形态,直接打包整个程序目录即可,但要把日志和临时文件排除掉,否则备份会越滚越大。如果是注册表形态,就得先导出再打包。下面这段批处理做的是目录打包,配合前面判断结果使用。
@echo off rem 备份 NetTerm 便携目录,排除日志与临时文件 set SRC=D:\tools\netterm54\ set STAMP=%date:~0,4%%date:~5,2%%date:~8,2% set DST=E:\backup\netterm54_%STAMP%\ if not exist "%DST%" mkdir "%DST%" robocopy "%SRC%" "%DST%" /E /XD log temp cache /XF *.log *.tmp /R:1 /W:1 echo done: %DST% pause参数上,/E表示包含空子目录,/XD排除指定目录名,/XF排除指定文件名模式,/R:1 /W:1把重试次数和等待时间压到最低,避免网络盘不可写时卡在那里。这里有个血泪经验:%date%的输出格式受系统区域设置影响,在中文简体和英文系统上取到的子串位置不同,%date:~0,4%在部分环境下会截出错乱的目录名。如果备份脚本要长期用,建议换成 PowerShell 的Get-Date -Format yyyyMMdd,不受区域设置干扰。
迁移到新机器后,还有一步不能省:核对会话列表的条数和主机地址。我见过压缩包里带的配置文件是别人用过的,里面几十条会话指向早已下线的地址,照着点会浪费很多时间。常见做法是把不用的会话删掉或改名加前缀,只留当前环境用得上的那几条。
3. 终端仿真参数:VT100、VT220 与 ANSI 的选型与中文显示
终端类型和字符集是 NetTerm5.4 这类工具里最容易被忽略、又最容易出症状的两组参数。它们不影响连通性,只影响“连上以后好不好用”,所以排查时总被排在最后,实际用起来又天天碰见。
3.1 四种仿真模式对照:从症状反推该选哪个
不同仿真模式对控制序列的解释规则不一样。选型的时候不用背规范,用症状反推更快。
| 仿真类型 | 典型适用场景 | 选错后的表现 |
|---|---|---|
| VT100 | 老 Unix 主机、路由器、交换机 | 全屏程序边框用字符画出来错位,颜色全丢 |
| VT220 | 需要功能键和多字符集的老系统 | 功能键发出去是乱码,退格行为异常 |
| ANSI | 早期的 BBS、部分工控菜单 | 清屏不清、光标定位偏移 |
| TN3270 / TN5250 | 大机、AS/400 类系统 | 整屏字段结构错乱,根本无法操作 |
VT100 是最保守的选择,兼容面最广,代价是没有颜色和部分扩展功能。VT220 在 VT100 基础上补了功能键和字符集切换,很多老一代的 Unix 应用默认按 VT220 设计,方向键和 F1-F12 能正常工作。ANSI 更接近 DOS 时代的终端,用在一些自研的字符界面管理程序上。
我一般的做法是:连上去先看应用是什么类型。如果只是敲命令看输出,VT100 就够,越简单越少出问题;如果要在里面跑全屏的菜单程序、编辑器,先试 VT220,不行再试 ANSI。切换之后必须断开重连,很多程序在会话建立时读取一次终端类型就缓存住了,不断开改了也不生效。
还有一层容易被忽略:服务端那边的TERM环境变量要和本地选的一致。本地选 VT220、服务端TERM还是dumb,全屏程序照样不认。连上之后用echo $TERM看一眼,对不上就在 shell 配置文件里改,或者登录时手动设。
3.2 中文字符集:半个汉字的成因与规避
中文显示出问题,表现通常有三类:全是问号或方块、汉字变成两个乱码字符、汉字和英文混排时列宽对不齐。第一类多半是字体没选对,第二类是字符集不匹配,第三类是双字节字符的宽度计算问题。
字符集这块,老系统绝大多数是 GBK 或 GB2312,新的 Linux 发行版多是 UTF-8。NetTerm5.4 这类工具的年代,默认字符集通常按单字节处理,需要手动把它切到中文脚本或中文代码页上,否则服务端发过来两个字节表示一个汉字,本地按两个独立字符渲染,屏幕上就会出现两个风马牛不相及的符号——也就是俗称的“半个汉字”。
具体操作上,进入字体设置,把字体族选成中文字体(宋体、新宋体这类等宽中文字体),字符集选中文对应项。这一步的关键不是字体好看,而是等宽。中文字体如果不是等宽的,一个汉字占的像素宽度和两个英文字符对不上,表格和菜单一定歪。常见做法是选“新宋体”这类等宽字体,字号设在 12 到 14 之间,配合 80 列的行宽,正好铺满一个常规窗口。
如果服务端是 UTF-8 而工具只支持本地代码页,那就没法完整显示中文,这是工具年代决定的边界,不是配置能解决的。这种情况下退一步:把服务端的 locale 临时切成 GBK 用一次,或者改用别的工具处理这批主机,别在这上面耗太久。
注意:改完字符集之后,连接是断开重连一次还是直接生效,取决于程序是否在会话建立时缓存了编码设置。稳妥起见,每次都重连。
3.3 行列数与自动换行:让全屏程序不乱版
行列数这个参数看起来无关紧要,实际影响很大。默认 80 列 24 行是几十年前定下来的行业惯例,绝大多数老程序按这个尺寸排版。但有些自研的管理程序按 132 列设计,还有些把行数写死成 43 行。本地设小了,程序画出来的右边框会被挤到下一行;设大了,程序画不满,下面留一片空白,光标定位也跟着偏。
调整的方法是双边的:本地把行列数改成程序期望的值,同时让服务端知道这个尺寸。服务端不知道的话,vi打开一个文件只会显示前 24 行,翻页逻辑也会错。登录之后用stty size看一眼当前识别的尺寸,对不上就手动设。
# 登录后在服务端执行,让 shell 知道当前终端的真实尺寸 stty rows 43 cols 132 # 校验一下是否生效 stty size这两行不是万能的,stty只影响当前会话,重新登录就没了。要长期生效得写进 shell 的启动配置里,或者在会话建立后由工具自动发送一段初始化字符串——NetTerm 这类工具通常支持配置登录后自动执行的命令序列,把stty塞进去,以后每次连上都自动对齐,省得每次手敲。
另一个相关参数是自动换行开关。关掉之后超长行不会折到下一行,而是横向延伸,适合看日志和长命令;打开之后按窗口宽度折行,适合看文档。两种模式各有适用场景,我一般是默认打开,需要看长行的时候临时切一下。
4. 键盘映射、文件传输与日志:把重复配置固化成习惯
会话能连、界面能看之后,剩下的就是手感问题。手感问题的特点是:不影响功能,但每天都会让你多按几次键,累积起来很烦。
4.1 Backspace、Delete 与方向键的映射
退格键是最经典的翻车点。本地按一下退格,屏幕上显示^H而不是删掉一个字符,原因是本地发出去的字符码和服务端期望的不一致。老系统期望收到 ASCII 8(BS)或 ASCII 127(DEL),不同系统不一样。NetTerm 的键盘映射里可以给 Backspace 指定发送内容,常见可选项有 BS、DEL、以及发送一段转义序列。
判断该发哪个的方法很简单:登录之后敲几个字符再按退格,如果显示^H,说明服务端收到的是 BS 但它的终端驱动期望 DEL,或者是反过来。改一个值试一次,两步之内就能定。
方向键的问题类似但更麻烦。方向键发出去的是一段转义序列,VT100 和 VT220 的序列不一样,vi和less认的也不完全一样。表现是按上下键屏幕上出现^[[A这类字符。这种基本就是终端类型选错了,回到第 3.1 节换仿真模式,而不是去改键盘映射——方向键的映射通常是跟着仿真模式走的,单独改容易按下葫芦浮起瓢。
Delete 键在小键盘区和主键区行为可能不同,老工具默认只映射一个。如果用的程序需要另一个,得去映射表里单独指定。这块我的建议是:先用默认值,碰到具体问题再改,不要一上来就把整张映射表重写一遍,改乱了很难恢复。
4.2 Zmodem 收发:接收目录与超时
用 Zmodem 传文件的场景现在不多了,但在隔离环境和老设备上还是常规操作。要设的东西就三个:本地接收目录、是否自动接收、超时时间。
接收目录默认可能指向程序目录,传几个大文件就把工具目录塞满了,还影响备份。我一般单独建一个D:\tools\netterm54\recv目录,在设置里指过去,并且定期清理。自动接收要不要开,看使用习惯:开了省事,但别人往你这边推文件时会静默落盘,安全上不理想;关掉的话每次都要手动确认,麻烦但可控。生产环境我倾向于关掉。
超时时间是另一个坑。链路慢的时候,几十兆的文件传到一半超时断开,得从头再来。把超时调大一点,或者干脆用支持断点续传的方式。Zmodem 本身在某些实现里带续传能力,但要看两端是否都支持,别想当然。
发送方向的注意点在于文件名。中文文件名在老协议里经常传丢或变成乱码,稳妥做法是先改成英文名再传,落地之后再改回来。这个习惯听着土,但省下的是反复重传的时间。
4.3 按钮条、快捷命令与会话日志
按钮条这个东西,第一次看到会觉得是上世纪的产物,用熟了之后真香。它能把一长串常用命令绑到一个按钮上,点一下就发出去,还能配置发送前是否需要确认。适合的场景是:每天要执行的几条固定检查命令、需要发送特殊控制字符(比如中断、暂停)的操作、以及需要连续发送多行且中间要停顿的登录流程。
配置的时候注意两点。一是按钮绑定的是字符串,不是脚本,条件判断和循环做不了,复杂的逻辑还是得靠外部脚本。二是带确认的按钮很有必要,尤其是那种发出去就重启服务的命令,加一道确认能挡住手滑。
会话日志是另一个被低估的功能。把日志开关打开,每次连接的输入输出都落到文件里,出问题的时候可以回溯到底发了什么、收到了什么,比凭记忆复述靠谱得多。日志文件的命名建议带上主机名和日期,比如主机名_20240612.log,不然一堆积几个月之后根本分不清哪个是哪个。日志目录同样别放在程序目录下,理由和第 2.3 节一样,会拖累备份。
日志的代价是磁盘占用和敏感信息落盘。密码如果是在会话里明文敲的(Telnet 场景下很常见),会原样写进日志。这点要有意识:日志目录的权限要收紧,定期清理,别把带凭据的日志随手打包发出去。
5. 避坑与排查:五类高频翻车现场
这一节写的都是我实际碰到过的、隔一段时间就会重演一遍的问题。每一条按现象、原因、解决三段来说,照着对号入座基本能覆盖大部分情况。
5.1 中文全是乱码或半截汉字
现象:连上之后中文显示成问号、方块,或者一个汉字被拆成两个不相干的符号,英文部分正常。
原因:字符集不匹配。服务端按 GBK 发双字节,本地按单字节渲染;或者字体选的是纯英文字体,字体里根本没有中文字形。
解决:先把字体换成等宽中文字体,再把字符集切到对应代码页,断开重连验证。如果换完之后英文正常中文还是乱,用echo $LANG看服务端的 locale,和本地设置对齐。对齐之后仍然乱,说明工具本身不支持该编码,这是硬边界,换工具或者临时改服务端 locale。
5.2 退格键打出 ^H,方向键打出 ^[[A
现象:按退格不删字符,屏幕上多出^H;按方向键冒出一串带方括号的字符。
原因:前者是 BS/DEL 的字符码和服务端期望不一致;后者是终端类型选错,方向键发出的转义序列服务端不认识。
解决:退格问题去键盘映射把 Backspace 的发送值在 BS 和 DEL 之间切换,一次一变试两次即可。方向键问题不要动映射表,回到终端仿真设置换 VT100/VT220/ANSI,换完断开重连。两件事都做完还不行,才考虑服务端的TERM变量是否和本地一致。
5.3 换台机器会话全没了
现象:把程序目录拷到另一台机器,打开之后会话列表是空的,或者只剩默认一两条。
原因:绿色版的形态判断错了。前面第 2.1 节说过,有些所谓绿色版仍然读写注册表,只拷目录带不走配置。
解决:回到原机器,确认配置到底落在哪。如果是注册表形态,导出对应用户配置项成一个 reg 文件,一并拷走,在新机器上导入。长期方案是把配置文件形态和注册表形态分开管理,每次换机器前先做一次完整的备份验证——最简单的验证方法是拷到一台干净的机器上打开看一眼,别等到急着用的时候才发现少东西。
5.4 粘贴多行命令被截断或提前执行
现象:从文档里复制一段多行命令粘进窗口,只执行了第一行,后面全丢了;或者某一行被拆成两半,前半截先执行报错。
原因:终端窗口接收粘贴内容时逐字符送入,中间的换行符会触发执行,而缓冲区小的时候后面的内容还没送达就被打断。链路慢、内容长的时候尤其明显。
解决:把长命令拆成多条分别粘,或者先粘到一个本地文本文件再用文件传输送过去执行。另一个办法是粘贴前先进入一个不执行的输入模式(比如打开一个编辑器),粘完再退出执行。我现在的习惯是超过三行的命令一律走文件传输,不直接粘,这个后悔药吃过太多次。
5.5 日志文件巨大或打印机输出乱码
现象:日志目录几个月涨到几个 GB;配置了打印输出之后,打出来的内容缺行或者全是乱码。
原因:日志默认把每次会话的全部输出都记下来,长时间挂着不断开就会一直涨;打印的问题多半是字符集和打印机驱动不一致,或者输出被当成了图形而不是文本。
解决:日志按会话或按天切分,定期清理,不要一个文件从头记到尾。打印这块,如果不是硬需求,我一般直接关掉,用日志代替——需要留档的时候把日志导出来格式化成文本,比调打印省事得多。
6. 进阶:用日志回放和会话清单做交接验收
前面几章讲的都是“自己用着顺手”。真正考验配置质量的是交接——把一台机器、一批会话交给别人,或者隔三个月自己回来接着维护。这时候光有会话列表不够,还得能说清楚每条会话是干什么的、上次连是什么时候、有没有异常。
我的做法是给会话列表加一层命名规范,主机地址只作为标识的一部分,前缀写环境和用途。比如[测试]交换机A-10.20.30.40这种格式,排序之后同环境的会话会聚在一起,找的时候不用一个个点开看。改名这个动作看着琐碎,几十条会话整理下来大概花二十分钟,但下一次找东西省的时间远不止这些。
配合日志,可以做一个很实用的验收动作:交接前把每条会话连一遍,随便执行一条只读的检查命令(who、date、show version这类),确认连通性、确认中文显示正常、确认日志正常落盘。三条会话十分钟,几十条会话一个小时也就完了,换来的是接手的人不用从零排查。
| 验收项 | 检查方法 | 不通过的处置 |
|---|---|---|
| 端口连通 | 用 Test-NetConnection 探一次 | 找网络侧确认,别在终端里死磕 |
| 终端类型 | 跑一次全屏程序看排版 | 换 VT100/VT220 重试 |
| 中文显示 | echo一段中文看有无乱码 | 调字体与字符集 |
| 键盘手感 | 退格、方向键各按一次 | 调映射或换仿真模式 |
| 日志落盘 | 断开后确认日志文件有新内容 | 检查日志目录权限与路径 |
这五项的检查脚本可以自己写一段 Powershell 批量化,把主机清单读进来逐个探端口,输出一张通断表,剩下的人工连一遍。批量探测只解决第一项,后面四项必须真的连上去操作,这点偷不了懒。
最后一个技巧跟日志回放有关:出问题之后,把日志文件按时间戳切成小段来看,比从头翻要快。日志里能同时看到本地发出去的字符和服务端回显的内容,两端一比,是谁的问题一目了然。我处理过一次全屏程序错位,翻日志发现服务端回的是 VT220 的定位序列,本地设的是 VT100,解释不了那串序列就直接当字符打出来了——这种问题靠猜永远猜不到,看日志两分钟就定位了。
从那以后我每次配完一批会话,都会强制走一遍上面的验收表,尤其是中文显示和键盘手感这两项,它们不影响“能不能连”,只影响“连上之后能不能干活”,而恰恰是这两项最容易在交接时被漏掉。希望帮到你。
本文还有配套的精品资源,点击获取