Python tftp handling error: "No options found in OACK"
Python tftp handling error: "No options found in OACK"
我正在使用 python 3 的模块 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 OACK
如何让我的 python 项目忽略 OACK/发送不包含 OACK 的新请求数据包?
免责声明:这是我第一次尝试使用 TFTP 数据包,所以我还是个新手。如果我提出的问题不是正确的处理方式,我该怎么办?
有关该问题的更多数据:
- 我正在使用被编程为忽略 OACK 数据包选项的外部芯片。
- 当我使用 C# 和 TFTP.Net 包时,传输有效,所以我认为这不是我的 TFTP 服务器的问题。但是,由于我们的主要应用程序基于 python,我希望能够通过 python 处理此通信 3.
- 我是运行宁python3.8.5
- 在我的服务器端,它说它收到了一个错误代码为 8 的数据包。
python 脚本:
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]
此变通解决方案归功于@ewong
在初始化客户端时添加选项后,即使我不需要它们,代码也能正常工作。我将在@https://github.com/msoulier/tftpy 提交一个问题,看看这是一个需要解决的错误还是一个有意的选择。
解决方案代码:
import tftpy
client = tftpy.TftpClient('192.168.0.42', 69, options={'blksize': 8})
client.download('triplog.txt', 'faultlog.txt', packethook=None, timeout=5)
我正在使用 python 3 的模块 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 OACK
如何让我的 python 项目忽略 OACK/发送不包含 OACK 的新请求数据包?
免责声明:这是我第一次尝试使用 TFTP 数据包,所以我还是个新手。如果我提出的问题不是正确的处理方式,我该怎么办?
有关该问题的更多数据:
- 我正在使用被编程为忽略 OACK 数据包选项的外部芯片。
- 当我使用 C# 和 TFTP.Net 包时,传输有效,所以我认为这不是我的 TFTP 服务器的问题。但是,由于我们的主要应用程序基于 python,我希望能够通过 python 处理此通信 3.
- 我是运行宁python3.8.5
- 在我的服务器端,它说它收到了一个错误代码为 8 的数据包。
python 脚本:
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]
此变通解决方案归功于@ewong
在初始化客户端时添加选项后,即使我不需要它们,代码也能正常工作。我将在@https://github.com/msoulier/tftpy 提交一个问题,看看这是一个需要解决的错误还是一个有意的选择。
解决方案代码:
import tftpy
client = tftpy.TftpClient('192.168.0.42', 69, options={'blksize': 8})
client.download('triplog.txt', 'faultlog.txt', packethook=None, timeout=5)