检查paramiko SCP连接是否仍处于活动状态

2024-06-09 23:30:54 发布

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

我正在为我的RaspberryPi编写一个Python3 timelapse脚本,该脚本应该每小时拍摄一张照片,然后使用SCP将其上传到我的服务器

到目前为止,我让Pi每小时拍摄一次快照,一切似乎都正常。然而,当我建立SCP连接时,我得到了错误

File "/home/pi/timelapse.py", line 62, in upload_photo scp.close() UnboundLocalError: local variable 'scp' referenced before assignment

这对我来说毫无意义,因为scp.close()函数只在try块内调用,在scp变量初始化之后,只在之前的行中调用。换句话说,如果在该行之前发生异常,我将已经进入exception块,并且我不应该来到这一行。在我看来,每当我来到这一行时,都必须定义变量“SCP”,但我怀疑情况可能并非如此

我用来上传照片的代码如下:

def upload_photo(filename):
    try:
            uploaded = False
            ssh = SSHClient()
            ssh.load_system_host_keys()
            ssh.connect('my.server', username="myUsername" password="myPass")

            scp = SCPClient(ssh.get_transport())

            scp.put(filename, remote_path="~/snaps")
            uploaded = True
            scp.close()
            ssh.close()
    except Exception as err:
            send_error_mail(err, filename)
    finally:
            if uploaded:
                    os.system("rm " + filename)
            else:
                    os.system("mv " + filename + " picturecache")

如果有人以前遇到过这个错误,并且知道如何解决它,我将非常感谢您回答我的问题!提前谢谢


Tags: 脚本close错误filenamesystemssh照片timelapse