我正在尝试通过 ssh 访问远程计算机并检查连接到特定 COM 端口的设备的型号;我知道那是哪个港口。
我尝试了一些命令,但它们要么不起作用,因为我处于 ssh 连接上,要么我正在访问的计算机没有安装运行此命令的模块。
到目前为止,我已经尝试过:
dmesg
lspci
lsblk
lsusb
被识别为命令的是 dmesg 但它没有给我想要的信息,而 lspci 会打印一堆未知设备消息
老实说,我开始认为这是不可能做到的。另外,我需要在不通过 ssh 连接的机器上安装任何模块的情况下执行此操作。
答案1
好吧,那么 PC 并不重要,重要的是连接到 COM 端口的神秘设备?
不幸的是,COM 端口是一个非常低级的连接,没有自动提供的元数据,因此没有像lsserial
这样的通用工具可以直接告诉您有用的信息,以 100% 置信度地识别设备。
如果您无法识别与其通信的软件(可能通过使用fuser /dev/ttyS*
和获取任何显示的 PID 上的进程信息),并将其用作线索,或者如果没有进程主动使用该设备,那么您必须尝试“交谈”到设备并查看它是否响应常用协议,如 @mosvy 所示。
如果正在使用 COM 端口连接的设备,则很可能安装了某种面向串行端口的终端仿真器,例如cutecom
、minicom
或seyon
类似的。即使是老式的 UUCP 串行端口实用程序也cu
可能有用。如果您可以找到它们已被使用的迹象,或者它们的现有配置文件,您也许能够从中找到使用的串口参数,否则可能需要大量的试验和错误。
调制解调器通常会以“OK”响应“AT Enter”,并且通常会自动检测 COM 端口速度;一旦建立了基本通信,您就可以使用ATI1
Enter其他 ATI 命令以及越来越多的数字来从调制解调器获取基本识别信息。
GPS 时间接收器或 UPS 等设备可能会定期自行输出一些数据,并且可能使用低至 1200 bps 的速度。交换机、路由器和类似的网络硬件可能会显示可识别的登录提示,通常使用 9600 bps、38400 bps 或 115200 bps 等端口速度。另一种变化是是否需要硬件握手(RTS/CTS 和/或 DSR/DTR)。对于位/奇偶校验组合,最常见的是 8n1,即 8 个数据位,无奇偶校验,1 个停止位。
您还可以尝试更间接的方法,例如检查用户的 shell 历史文件root
以查找之前与 COM 端口关联使用的任何特殊命令。
让现场人员实际查看 COM 端口电缆末端的设备,例如拍摄设备的照片,并清晰可见任何识别信息(例如制造商徽标或型号),但我想您不会询问这是否容易做到。
打印机可能是最难通过 COM 端口远程识别的:例如,Epson ESC/P 打印机命令语言似乎根本不包含任何用于状态回读的命令。如果打印机理解 PCL,它也可能理解 PJL。在这种情况下,你可以尝试这样做:
(exec <>/dev/ttySn; stty sane; printf "\e%-12345X@PJL INFO ID\n" >&0; cat)
如果打印机能够识别 PJL,它应该以其型号标识进行响应。通过将单词替换ID
为CONFIG
或VARIABLES
,您可能会从打印机获得更多信息。