היי כתבתי קוד פיטון המעדכן אוטומטי את התיקייה בשרת עם הפרוטוקול
FTP.
הוא מעדכן את מהתיקייה הראשית עד ל"קצה של העץ" תוך כדי השוואה בשמות.
התוצאה הראשונה נפלט מהLocal File.
התוצאה השניה נפלט מהServer File - מה שקוראים מהחיבור
ftp.
לאחר השוואה ככה הוא יודע אם הקובץ קיים או לא.
כתוצאה מבעיה של עברית אני מקבל 2 תוצאות שונות:
אשמח אם תוכלו לעזור לי
קוד: |
#!/usr/bin/env python
# - *- coding: utf- 8 - *-
import ftplib
import time
import os
def LoginUser(host,port,username,password):
ftp = ftplib.FTP()
ftp.connect(host, port)
if "220" in ftp.getwelcome():
print "[+] Connect To Server"
#print (ftp.getwelcome())
try:
ftp.login(username, password)
print "[+] Login Connect to "+host+":"+str(port)+" - "+username
except:
print "[-] Login User and Password Fail"
ftp.encoding='utf-8'
ftp.sendcmd('OPTS UTF8 ON')
return ftp
'''
# List Of Local Files In This Folder
'''
def ListLocalFiles(scriptpath):
#myfileslocal = os.listdir(scriptpath)
myfileslocal = next(os.walk('.'))[1]
myfileslocalFiles = []
for file in os.listdir(scriptpath):
if "." in file:
if file.startswith(".") != 1:
myfileslocalFiles.append(os.path.join("", file))
return myfileslocalFiles
'''
# List Of Local Files In This Folder
'''
def ListLocalFolders():
myfolderslocal = next(os.walk('.'))[1]
return myfolderslocal
'''
# List Of Server Files In This Folder
'''
def ListServerFiles(ftp):
myfilesServerFolder = []
try:
filesOnServer = ftp.nlst()
for file in filesOnServer:
if "." in file:
if file.startswith(".") != 1:
myfilesServerFolder.append(os.path.join("", file))
return myfilesServerFolder
except:
print "Not Login"
'''
# Upload File
'''
def UploadFile(filename,ftp):
ftp.storbinary("STOR " + filename, open(filename, 'rb'))
def Diff(li1, li2):
return (list(set(li1) - set(li2)))
'''
# Vars
'''
path = os.path.dirname(__file__)
ftp = LoginUser("localhost", 21, "user", "pass")
''' ~ Main ~ '''
list1 = ListLocalFolders()
flag = 0
def GetInFolder(x,ftp):
# Get In Folder
try:
ftp.cwd(x)
os.chdir(x)
except:
ftp.mkd(x)
print "Error " + x + " Not Exists"
flag = 1
ftp.cwd(x)
os.chdir(x)
return 1
''' Check Folder And MKDir '''
while 1==1:
for x in list1:
if GetInFolder(x, ftp) == 1:
print "done"
# Get Files List
pathLocal = path + "\\" + x
listLocal = ListLocalFiles(pathLocal)
listServer = ListServerFiles(ftp)
print listLocal
print listServer
# Upload File To Folder
listNeedToMKDir = Diff(listLocal,listServer)
for i in listNeedToMKDir:
#print "------------------------------"
print "Upload:" + i
print "To:" +x
UploadFile(i, ftp)
print os.getcwd()
list2 = ListLocalFolders()
for z in list2:
if GetInFolder(z, ftp) == 1:
print "done"
listLocal2 = ListLocalFiles(pathLocal + "\\" + z)
listServer2 = ListServerFiles(ftp)
# Upload File To Folder
listNeedToMKDir2 = Diff(listLocal2, listServer2)
for z in listNeedToMKDir2:
# print "------------------------------"
print "Upload:" + z
print "To:" + x
UploadFile(z, ftp)
print os.getcwd()
ftp.cwd("..")
os.chdir("..")
time.sleep(5)
ftp.cwd("..")
os.chdir("..")
time.sleep(2)
|