1. 程式人生 > >Python作FTP上傳指令碼、檔案切割壓縮上傳指令碼、迴圈啟動程式指令碼

Python作FTP上傳指令碼、檔案切割壓縮上傳指令碼、迴圈啟動程式指令碼

  1. python上傳FTP指令碼
#auther:Dennie
#time:2018-08-09
#first is ftp path second is fold path third is filename
#-*-coding=utf-8-*-
from ftplib import FTP
import os,time,datetime
import sys
remotepath=sys.argv[1]
path=sys.argv[2]
fileName=sys.argv[3]
ftp=FTP()
ftp.set_debuglevel(2)
ftp.connect("*.*.*.*", "21") #連結ftp伺服器
ftp.login("user","123456")#輸入使用者名稱密碼
print ftp.getwelcome()
ftp.cwd(remotepath)
bufsize=1024
filename=fileName
newFilePath=path+fileName
fp = open(newFilePath, 'rb')
ftp.storbinary('STOR %s' % filename, fp, bufsize)
ftp.set_debuglevel(0)
ftp.quit()
  1. 檔案切割壓縮上傳指令碼
#!/bin/bash
#created by Dennie
#path : /app/nfs_data05/table_data/xbTest/
#fileName : user_info_01.gz
#ftpPath : tyxb/finish/
source /home/was/.bash_profile
path=$1
fileName=$2
ftpPath=$3
newfilename=${fileName}"."
cd $path
#以800w行做切割檔案,壓縮後,呼叫上面指令碼執行
split -l 8000000 -d -a 2 ${fileName} ${newfilename}
gzip ${newfilename}*
for file in $( ls -l|grep gz|grep ${newfilename}|awk '{print $9}')
do 
echo "" >> /app/nfs_data05/shell/log.log
echo "[$(date +'%Y-%m-%d %H:%M:%S')]開始上傳${fileName}!" >> /app/nfs_data05/shell/log.log 
cd /app/nfs_data05/shell/

python ftpPut.py ${ftpPath} ${path} ${file}
done
if [ $? -eq 0 ];then
echo "[$(date +'%Y-%m-%d %H:%M:%S')]上傳成功${fileName}"  >> /app/nfs_data05/shell/log.log
else
echo "[$(date +'%Y-%m-%d %H:%M:%S')]上傳失敗${fileName}!"  >> /app/nfs_data05/shell/log.log
fi
  1. 迴圈啟動程式指令碼
#!/bin/bash
#auther Dennie
#批量追資料用
#開始時間
beg_s=`date -d "$1" +%s`
#結束時間
end_s=`date -d "$2" +%s`
echo "" > a.text
while [ "$beg_s" -le "$end_s" ];do
    day=`date -d @$beg_s +"%Y%m%d"`;
    echo "當前日期:$day" >> a.text
	sh /app/nfs_data05_log/etlshell/pt_deal_order_zsj/pt_deal_order_zsj.sh $day
			sleep 10
			num=1
                         while [ $num -le 40 ]
                          do
                                 num=$((num + 1))

                                  pid=`ps -ef|grep kitchen |grep $day |wc -l`

                                   if [ $pid -eq 0 ]
                                          then

                                        echo $day" end: "  $(date '+%Y-%m-%d %H:%M:%S')   >> a.text
                                         sleep 5
                                          break
                                        else
                                         sleep 10
                                     fi
                         done
    beg_s=$((beg_s+86400));
done

希望覺得對您有幫助