日度归档:2011 年 07 月 02 日

从登录FTP或SSH一段时间后无响应断开引发的思考

经常懒得登录ftp更新文件,每次登录后,过一段时间就发现连接无响应断开了。
于是写了个脚本,不用每次手动登录ftp,运行就自动实现文件同步功能了。

from ftplib import FTP
import traceback, time

def upload(ftp, target, file):
    print "Storing", file, "=>", target
    ftp.storbinary("STOR " + target, open(file, "rb"))

if __name__ == "__main__":
    try:
        ftp = FTP('xiaoxia.org')
        ftp.login('xiaoxia', '********')
        ftp.cwd("sysroot/lab")
        upload(ftp, "package.zip", "package.zip")
        upload(ftp, "server.py", "server/server.py")
        ftp.quit()
        print "Finished!"
    except:
        print "Error", traceback.format_exc()
    time.sleep(3.0)

具体原因不清楚,但做过实验,本机跟国外的服务器建立一个TCP连接,不传输什么数据,大概10分钟或者半小时后,使用这个TCP连接发送信息会提示超时,发送不成功。奇怪的是,服务器那边没有断开,还在接收。具体原因不清楚,至少局域网里不会这样!不知道大家登录SSH的时候,一段时间之后,发现SSH冻结了,发送不出任何信息,然后提示网络错误?
继续阅读