Python tftp处理错误:";在“OACK”中找不到选项;
我正在使用Python3的模块tftpy来尝试处理tftp风格的文件下载。但是,当我运行应用程序时,会出现以下错误:Python tftp处理错误:";在“OACK”中找不到选项;,python,python-3.x,file-transfer,packet,tftp,Python,Python 3.x,File Transfer,Packet,Tftp,我正在使用Python3的模块tftpy来尝试处理tftp风格的文件下载。但是,当我运行应用程序时,会出现以下错误: \Python38\site-packages\tftpy\TftpStates.py", line 53, in handleOACK raise TftpException("No options found in OACK") tftpy.TftpShared.TftpException: No options found in OAC
\Python38\site-packages\tftpy\TftpStates.py", line 53, in handleOACK
raise TftpException("No options found in OACK")
tftpy.TftpShared.TftpException: No options found in OACK
如何让python项目忽略OACK/发送不包含OACK的新请求包
免责声明:这是我第一次尝试使用TFTP数据包,所以我还是个新手。如果我提出的问题不是恰当的处理方式,我应该怎么做
有关该问题的更多数据:
import tftpy
client = tftpy.TftpClient('192.168.0.42', 69)
client.download('triplog.txt', 'faultlog.txt', packethook=None, timeout=5)
完全回溯:
Failed to negotiate options: No options found in OACK
Traceback (most recent call last):
File "C:\Users\selena\Documents\PythonScripts\TFTP\TFTPTestScript.py", line 23, in <module>
client.download('triplog.txt', 'faultlog.txt', packethook=None, timeout=5)
File "C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\tftpy\TftpClient.py", line 58, in download
self.context.start()
File "C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\tftpy\TftpContexts.py", line 402, in start
self.cycle()
File "C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\tftpy\TftpContexts.py", line 202, in cycle
self.state = self.state.handle(recvpkt, raddress, rport)
File "C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\tftpy\TftpStates.py", line 566, in handle
self.handleOACK(pkt)
File "C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\tftpy\TftpStates.py", line 53, in handleOACK
raise TftpException("No options found in OACK")
tftpy.TftpShared.TftpException: No options found in OACK
[Finished in 0.7s with exit code 1]
协商选项失败:在OACK中找不到选项
回溯(最近一次呼叫最后一次):
文件“C:\Users\selena\Documents\PythonScripts\TFTP\TFTPTestScript.py”,第23行,在
client.download('triplog.txt','faultlog.txt',packethook=None,timeout=5)
文件“C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8\u qbz5n2kfra8p0\LocalCache\Local Packages\Python38\site Packages\tftpy\TftpClient.py”,下载第58行
self.context.start()
文件“C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8\u qbz5n2kfra8p0\LocalCache\Local Packages\Python38\site Packages\tftpy\TftpContexts.py”,第402行,开始
self.cycle()
文件“C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\Local Packages\Python38\site Packages\tftpy\TftpContexts.py”,循环中的第202行
self.state=self.state.handle(recvpkt、raddress、rport)
文件“C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8\u qbz5n2kfra8p0\LocalCache\Local Packages\Python38\site Packages\tftpy\TftpStates.py”,第566行,位于句柄中
自动扶手(pkt)
handleOACK中的文件“C:\Users\selena\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8\u qbz5n2kfra8p0\LocalCache\Local Packages\Python38\site Packages\tftpy\TftpStates.py”第53行
引发TftpException(“在OACK中找不到选项”)
tftpy.TftpShared.TftpException:在OACK中找不到选项
[在0.7秒内完成,退出代码为1]
将此解决方案归功于@ewong
在初始化客户机时添加选项后,即使我不需要这些选项,代码仍然有效。我将提出一个问题@https://github.com/msoulier/tftpy 看看这是一个需要解决的bug还是一个深思熟虑的选择
解决方案代码:
import tftpy
client = tftpy.TftpClient('192.168.0.42', 69, options={'blksize': 8})
client.download('triplog.txt', 'faultlog.txt', packethook=None, timeout=5)
这是您提供的完整回溯吗?@E感谢您的帮助,我已将完整回溯和服务器随后收到的错误数据包的说明添加到原始帖子中。我一直在查看tftp代码,似乎tftp希望在
client=tftp.TftpClient..
行中设置选项。请尝试client=tftp.TftpClient('192.168.0.42',69,options={'blksize':8})
这可能是代码中的问题。。试着提出一个问题@