通过telnet会话下载和上传文件


15

我正在运行一个考勤设备Linux OS。我可以通过telnet会话连接此设备。我要在设备中下载一些文件并上传新文件。我怎样才能做到这一点?我对Linux OS的了解很少。请您帮忙!

在此处输入图片说明


您要传输多少文件?您能否将busybox --helpand ls -l /bin和的输出粘贴到某个地方ls -l /usr/bin
jofel 2014年

实际上,我想更改此考勤设备的桌面背景,并希望将我们的公司徽标上传到该设备中。这些选项在设备菜单中不可用(我已经要求供应商提供此选项)。因此,我通过telnet会话将其连接起来,并在设备中找到了desktop.jpg和其他图像文件。现在,我想在本地系统上获取这些文件。并确认相同后,我会将所需的图像上传到设备中。因此它将根据我想要的图像更新设备图像。我想至少更改设备// mnt / mtdblock / image中可用的桌面映像
PRdeep Kumawat 2014年

如果您下次想添加信息,请编辑问题而不是添加评论。
jofel 2014年

Answers:


12

这取决于客户端设备上安装了哪些工具/内核支持哪些工具。

可能的文件传输方法(无序):

  • ssh / sftp
  • 使用base64 / uuencode将二进制文件编码为可显示的格式,然后从telnet终端窗口复制/复制到telnet终端窗口。
  • 通过简单的tcp连接netcatsocat或或bash和/ dev / tcp
  • 使用Web服务器wgetcurl从Web服务器上载/下载
  • 带有命令行ftp客户端的ftp服务器
  • samba或nfs挂载

阅读“ 简单文件传输”“当您只有串行控制台时如何将文件发送到主机”?为更多的可能性。


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.jpgcp desktop.jpg desktop_orig.jpg)。


我尝试使用WinSCP实用程序,并尝试使用ftp / sftp / scp协议连接设备。但没有建立连接。我能够通过telnet命令连接设备,并能够查看要获取的文件并再次上传到设备中。
PRdeep Kumawat 2014年

您的设备可能没有运行ssh或ftp服务器。
jofel 2014年

好吧,我不知道。还有其他方法可以从该设备获取/上传文件吗?
PRdeep Kumawat 2014年

您也可以使用sz通过终端发送文件。双方都需要它。
slm

@PRdeepKumawat我用一个例子扩展了答案。
jofel 2014年

6

我在设备上没有ssh或ftp(或其他)。

所以,我下一步:

  1. telnet a.b.c.d | tee telnet.log
  2. 登录并转到文件
  3. cat file.txt
  4. 关闭会话(我关闭tmux窗格)
  5. telnet.log从垃圾中清除

编写实用程序以通过telnet下载/上传文件应该很容易


1

尝试使用rcp命令。

使用man rcp的情况下,你要自动传输更多的信息。

顺便说一句,您知道这是非常不安全的,对吧?


1

我刚刚通过串行端口将〜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逐字传递,因为它不是公认的转义序列。因此我们不必加倍反斜杠。


0

@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


0

我现在已经通过以下方法做到了:

在窗口系统上创建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


-1

我使用以下方法通过telnet将小的二进制文件下载到Windows框中:

  1. 执行hexdump -v -e '16 / 1“%02x”'myfile.bin
  2. 从屏幕复制十六进制转储
  3. 将十六进制转储粘贴到此在线工具中以创建二进制文件:http : //tomeko.net/online_tools/hex_to_file.php?lang=en

不确定您在#3中的链接!

3
@Goro在这种情况下,链接不是可以引用的解释,它是答案必不可少的在线工具。对于该任务,最好有一个本地程序。
RalfFriedl

谢谢@RalfFriedl。我编辑了答案以进行澄清。
伊戈尔·塞拉亚
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.