我正在运行一个考勤设备Linux OS
。我可以通过telnet会话连接此设备。我要在设备中下载一些文件并上传新文件。我怎样才能做到这一点?我对Linux OS的了解很少。请您帮忙!
我正在运行一个考勤设备Linux OS
。我可以通过telnet会话连接此设备。我要在设备中下载一些文件并上传新文件。我怎样才能做到这一点?我对Linux OS的了解很少。请您帮忙!
Answers:
这取决于客户端设备上安装了哪些工具/内核支持哪些工具。
可能的文件传输方法(无序):
netcat
或socat
或或bash
和/ dev / tcpwget
或curl
从Web服务器上载/下载阅读“ 简单文件传输”和“当您只有串行控制台时如何将文件发送到主机”?为更多的可能性。
desktop.jpg
使用netcat / nc方法从设备复制到您的PC:在您的电脑上,暂时禁用(或重新配置)任何防火墙并运行
netcat -l -p 10000 > desktop.jpg
并在设备上
busybox nc A.B.C.D -p 10000 < desktop.jpg
您需要用PC的IP地址替换ABCD的位置。传输成功后,您PC上的netcat进程应自动停止。如果不是,则出了点问题,您可以通过Ctrl+C
对于其他方向,只是交换<
和>
两侧。首先备份原始文件desktop.jpg
(cp desktop.jpg desktop_orig.jpg
)。
sz
通过终端发送文件。双方都需要它。
我刚刚通过串行端口将〜7 Kb固件文件上传到基于BusyBox的Linux嵌入式系统。
没有网络,没有文件传输工具;在设备上没有Base64 utils或任何远程有用的东西。
在主机上,我简单地将固件编码为以下格式:一种由外壳文字和printf
命令组成的十六进制转储:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
基本上是printf
带有解释的\x
转义序列的shell 命令printf
。在设备上,我做了:
device $ cat > firmware.sh
然后使用minicom
的ASCII文件send(Ctrl-AS)将此文件发送到主机。由于数据量很少,我本可以使用复制和粘贴。
然后,标记为可执行并运行printf
脚本:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
使用了BusyBox的经过md5sum
是,firmware.bin
设备上校验和是否与主机上的原始固件映像匹配。
PS Shell双引号语法通过\x
逐字传递,因为它不是公认的转义序列。因此我们不必加倍反斜杠。
@jofel和其他所有人,非常感谢您的帮助。我认为设备已安装了自定义的操作系统,因为它仅识别某些特定的linux命令。设备无法识别netcat。但是今天我成功地使用tftp命令传输了文件。我已使用此命令成功替换了desktop.jpg文件。我所做的是在窗口系统上创建了tftp服务器。通过设备上的telnet登录并运行以下命令:
下载文件tftp -l -p tftp -l desktop.jpg-192.168.0.249 69
上传文件tftp -l desktop.jpg -g 192.168.0.249 69
我现在已经通过以下方法做到了:
在窗口系统上创建ftp服务器(通过安装solerwinds)。通过设备上的telnet登录并运行以下命令:
要下载文件:
tftp -l <FileName> -p <TFTP Server IP> <Port No of TFTP>
例:
tftp -l desktop.jpg -p 192.168.0.249 69
或上传文件:
tftp -l <FileName> -g <TFTP Server IP> <Port No of TFTP>
例:
tftp -l desktop.jpg -g 192.168.0.249 69
tftp文件的默认位置是 C:\TFTP-Root
我使用以下方法通过telnet将小的二进制文件下载到Windows框中:
busybox --help
andls -l /bin
和的输出粘贴到某个地方ls -l /usr/bin
。