Форум сайта python.su
0
Доброе время суток!
Есть такая проблема.
Были 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 “———————————————-”
Офлайн
186
Зачем тебе subprocess? Всё это включая сжатие можно сделать средствами python-а.
Офлайн
0
Я хочу сделать это максимально быстро и минимальными затратами.
Если поможешь так сделать, буду тебе благодарен.
Офлайн