尝试使用ftplib(jenkins作业)将文件从远程服务器复制到另一台服务器时出现以下错误。在我的本地服务器上,它工作正常。
在Python代码中,我正在将文本文件下载到数据仓库服务器并处理该文件,在下载该文件时遇到权限问题。有没有办法处理TEXT文件中的数据并插入将该数据保存到仓库数据库而无需下载它。如果可以,可以解决此错误。
1)还提到了python代码的一部分,任何人都可以让我知道如何解决这个问题,我对TEXT文件所在的源服务器具有FTP访问权限,对目标数据具有SSh根访问权限仓库服务器(没有物理访问权限)。 由于两者都是不同的服务器,并且我在jenkins中将其作为作业运行,因此我不知道需要检查哪个权限,哪个用户? 如何通过FTP和SSH访问进行确认?
2)如果有人可以指导如何提及服务器,用户名和密码而无需在脚本中进行硬编码,这也将非常有帮助。
Python代码:
def getFile(ftp, filename):
try:
local_filename = os.path.join(r"/Users/linu/Downloads/", filename)
#local_filename = os.path.join(r"/home/etl/bi/csv_imports/", filename)
lf = open(local_filename, "wb")
ftp.retrbinary("RETR " + filename ,lf.write)
print("file copied")
except (Exception, psycopg2.Error) as error:
print ("Error: {}".format(error))
try:
filePath='''/Users/linu/Downloads/log'''
table='staging.stock_dump'
SQL="""DROP TABLE IF EXISTS """+ table + """;CREATE TABLE """+ table + """
(created_date TEXT, product_sku TEXT, previous_stock TEXT, current_stock TEXT );"""
cur_psql.execute(SQL)
cnx_psql.commit()
try:
ftp = FTP('server.com','username','password')
print("FTP connection succesful")
ftp.cwd('/stockitem/')
except (Exception, psycopg2.Error) as error:
print ("Error: {}".format(error))
getFile(ftp,'log')
错误:
12:33:00 [EnvInject] - Loading node environment variables.
12:33:00 Building in workspace /var/lib/jenkins/jobs/log_porting_from_magento/workspace
12:33:00 [workspace] $ /bin/sh -xe /tmp/jenkins34559567899962487.sh
12:33:00 + export PYTHONPATH=/home/etl/bi/
12:33:00 + cd /home/etl/bi/crm
12:33:00 + python3 -u log_porting.py
12:33:00 DWH Connected
12:33:00 Table staging.stock_dump Created at DWH
12:33:01 FTP connection succesful
12:33:01 Error occured while copying file from source to destination
12:33:01 Error: [Errno 13] Permission denied: '/home/etl/bi/csv_imports/log'
12:33:01 Finished: SUCCESS