Найти - Пользователи
Полная версия: Архивирование логов в python
Начало » Python для новичков » Архивирование логов в python
1
emil_rustam
Доброе время суток!

Есть такая проблема.

Были shell скрипты, которые надо перевести на python.

Последовательность работы shell скрипта:

1.Перейти в заданную папку согласно полученным параметрам (папка, где хранятся логи и папка, куда логи должны быть заархивированы)
2.Идет поиск логов, которые подлежат архивации ()

Вот условие поиска:

'ls | grep -xv app.log | grep -xv InfoNP.log | grep -xv InfoSP.log | grep -xv archive | grep -xv arc | wc -l'

3.Должно быть сжатие файлов из выборки.

4.Сжатые файлы должны быть перемещены в задданную папку.


Теперь о проблеме.

На шаге 2 использую такую команду:

Использую такую команду:

z=subprocess.call(,shell=True)

В ответ получаю 11 и 0. Так понимаю что 11 - это количество файлов из поиска, а 0 - response of subprocess.

Мне нужно заглушить response of subprocess, сжать файлы из выборки и переместить их заданную папку.

Буду очень признателен, если сможете помочь.

Вот shell скрипт, который сейчас это делает:

#!/bin/bash

#Initial variables
host_name=$(hostname -s)

scriptDir=“$( cd ”$( dirname "${BASH_SOURCE}“ )” && pwd )“
scriptFile=`basename ”$0“`
logFile=$scriptDir'/'”${scriptFile%.*}“'_'$(date +\%Y-\%m-\%d)'.log'

DO_log_folder=”/d01/tomcat/tomcat-7.0.47-Dealer-Online/logs“
DO_log_archive_folder=”/d01/logsarchive/logs/Dealer-Online/“
DO_logstore_folder=”/$host_name/tomcat-7.0.47-Dealer-Online“
LP_log_folder=”/d01/tomcat/apache-tomcat-8.0.35-LandingPage/logs“
LP_log_archive_folder=”/d01/logsarchive/logs/LandingPage/“
LP_logstore_folder=”/$host_name/apache-tomcat-8.0.35-LandingPage“
DOMHM_log_folder=”/d01/tomcat/DealerOnlineMHM_tomcat8/logs“
DOMHM_log_archive_folder=”/d01/logsarchive/logs/DealerOnlineMHM/“
DOMNP_log_folder=”/d01/tomcat/tomcat-7.0.47-Dealer-Online/logs/dealerOnlineMNP/“
DOMNP_archive_folder=”/d01/logsarchive/logs/DOMNP/“

#Procedures
printDate() {
echo `date +'%d/%m/%Y %H:%M:%S'`
}

ArchiveLogs(){
echo ”`printDate` START Archiving logs from $1 to $2"
cd $1

d=`date +'%Y-%m-%d'`

for i in `find *log* | grep -v $d | grep -v Catalina.out | grep -xv landing.log | grep -xv online.log`; do
tar -cjf $2/$i.bz2 $i –remove-files
if ; then
echo “`printDate` $i file was archived SUCCESSFULLY”;
else
echo “`printDate` $i file archiving”;
fi
done;
echo “`printDate` FINISH Archiving logs from $1 to $2”
}


#Main block
echo “———————————————-”
echo “`printDate` Archiving process started”


ArchiveLogs $DO_log_folder $DO_log_archive_folder
ArchiveLogs $LP_log_folder $LP_log_archive_folder
ArchiveLogs $DOMHM_log_folder $DOMHM_log_archive_folder
ArchiveLogs $DOMNP_log_folder $DOMNP_archive_folder

errorCount=`grep -i “error:\|failed\|exception” $logFile | wc -l`
if ; then
echo -e “Error found in log file $logFile\n Error count: $errorCount” | mail -s “ERROR during $(hostname) archiving process” “tdpso@azercell.com
echo “Mail was sent about errors at `printDate`”
fi


echo “Archiving process finished at `printDate`”
echo “———————————————-”


Rodegast
Зачем тебе subprocess? Всё это включая сжатие можно сделать средствами python-а.
emil_rustam
Я хочу сделать это максимально быстро и минимальными затратами.

Если поможешь так сделать, буду тебе благодарен.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB