从一台Windows服务器,我有一个连接到远程Linux主机的python脚本,并通过SSH / SCP传输一些数据。该脚本计划每天早上通过本地服务器的WindowsTaskScheduler执行。
我遇到的问题是,有时(并不总是奇怪的是,并且这种情况经常发生的最后几天)执行永远不会完成,因为我收到连接超时错误。从脚本日志中:
*Traceback (most recent call last):
File "D:\App\Anaconda3\lib\site-packages\paramiko\channel.py", line 665, in recv out = self.in_buffer.read(nbytes, self.timeout)
File "D:\App\Anaconda3\lib\site-packages\paramiko\buffered_pipe.py", line160, in read raise PipeTimeout() paramiko.buffered_pipe.PipeTimeout
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\App\Anaconda3\lib\site-packages\scp.py", line 314, in _recv_confirm
msg = self.channel.recv(512)
File "D:\App\Anaconda3\lib\site-packages\paramiko\channel.py", line 667, in recv
raise socket.timeout()socket.timeout
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "script.py", line 235, in <module>
copy_file_to_remote(LOCAL_FOLDER, file_path, DESTINATION_FOLDER, ssh)
File "script.py", line 184, in copy_file_to_remote
scp.put(win_path, linux_path)
File "D:\App\Anaconda3\lib\site-packages\scp.py", line 154, in put
self._send_files(files)
File "D:\App\Anaconda3\lib\site-packages\scp.py", line 255, in _send_files
self._recv_confirm()
File "D:\App\Anaconda3\lib\site-packages\scp.py", line 316, in _recv_confirm
raise SCPException('Timout waiting for scp response')
scp.SCPException: Timout waiting for scp response*
我的问题是,是否可以在脚本中使用的ssh / scp函数中最大化连接超时限制,或者一般来说如何使我的脚本重新建立连接,使用keepalive或类似的东西保持打开状态。
如果有方法可以知道连接的哪一侧存在问题,本地服务器或远程机器,那也不错。这可以帮助解决很多问题。任何想法/帮助非常感谢!