通过teln上传文件

2024-09-28 20:46:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python scrpit来将文件上载到我的文件服务器:

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可以自己完成吗?还是我该这么做?在

谨致问候


Tags: 文件dev服务器hostreadbodyopentelnet
2条回答

我认为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)    
...

也许telnet不是最好的解决方案,最好使用FTP或HTTP。 telnet协议不适合传输文件,它有一些控制流过程,使得文件和特殊字符的传输变得困难。 如果您想使用非标准协议,那么最好使用socket模块,对于sockets,0a不会出现这种问题

相关问题 更多 >