通过Telnet上传文件

2 投票
2 回答
3154 浏览
提问于 2025-04-16 21:45

我正在写一个Python脚本,用来把文件上传到我的文件服务器:

host = "myhost.dev"
tn = telnetlib.Telnet()
tn.open(host, 5202)
print tn.read_until("\n")
fp = "./output"

f = open(fp, "r")
f_body = f.read()

tn.write(f_body)
tn.write("\n")

f.close()

如果文件里面有换行符0a,而这个换行符是gzip文件中的二进制数据的一部分,我该怎么处理它呢?Python的telnetlib能自己处理吗?还是我需要自己处理?

祝好

2 个回答

0

也许用telnet并不是最好的选择,使用FTP或HTTP会更好。telnet协议不太适合传输文件,而且它有一些控制流程,让传输文件和特殊字符变得困难。如果你想用一个非标准的协议,最好使用socket模块,使用sockets就不会遇到0a的问题。

4

我觉得用telnet来传输文件并不是最好的选择,不过如果你还是想用它来上传文件,可以试试下面的方法(我没有试过,但我觉得应该可以用)

#On client side
...
import base64
with open('test.gz','rb') as f:
    content = f.read()

content_serialized = base64.b64encode(content)+'\n'
...
#On server side
...
import base64
content = base64.b64decode(content_serialized.rstrip('\n'))
    with open('test.gz','wb') as f:
        f.write(content)    
...

撰写回答