#!/bin/bash
#********************************************************#
# Get Shell Input Argument #
# 2011-08-03 #
# Usage : ./download_files.sh sequence control_file #
# Exam : download_files.sh 1 ./servers1.conf #
# Means : 从./servers1.conf中定义的工作站获取数据 #
# 第一个参数用于识别进程,如果已经有进程运行则退出 #
# 第二个参数定义了所有的工作站信息,见举例 #
# #
#********************************************************#
#********************************************************#
# Get Shell Input Argument #
# 2011-08-03 #
# Usage : ./download_files.sh sequence control_file #
# Exam : download_files.sh 1 ./servers1.conf #
# Means : 从./servers1.conf中定义的工作站获取数据 #
# 第一个参数用于识别进程,如果已经有进程运行则退出 #
# 第二个参数定义了所有的工作站信息,见举例 #
# #
#********************************************************#
export BASE_HOME=/home/oracle/admin/getfile
export BIN_HOME=$BASE_HOME/bin
PID_FILE=/var/run/${0##*/}$1.pid
E_RETURN=65
export BIN_HOME=$BASE_HOME/bin
PID_FILE=/var/run/${0##*/}$1.pid
E_RETURN=65
#********************************************************#
# #
# 检查进程是否存在,不允许重复执行,用第一个参数识别 #
# #
#********************************************************#
# #
# 检查进程是否存在,不允许重复执行,用第一个参数识别 #
# #
#********************************************************#
check_pid () {
if [ -s "$PID_FILE" ]; then
echo "PID file exists. Checking ..."
PID=$(/bin/egrep -o "^[[:digit:]]+" $PID_FILE)
echo $PID
if /bin/ps --pid $PID &>/dev/null; then
echo "Process $PID found. ${0##*/} seems to be running!($PID_FILE)"
/usr/bin/logger -t ${0##*/} \
"Process $PID found. ${0##*/} seems to be running!($PID_FILE)"
exit $E_RETURN
fi
echo "Process $PID not found. Start new process $$. . ."
fi
}
#********************************************************#
# #
# 将当前进程PID记录到临时文件 #
# #
#********************************************************#
write_lock () {
echo $$ > $PID_FILE || {
echo "Can't write to pid file $PID_FILE"
exit $E_RETURN
}
}
#********************************************************#
# 功能 : 第二个参数文件中定义的工作站获取数据 #
# 第一个参数用于识别进程,如果已经有进程运行则退出 #
# 第二个参数定义了所有的工作站信息,见举例 #
# #
#********************************************************#
getfile ()
{
JOB_ID=$1
if [ -s "$PID_FILE" ]; then
echo "PID file exists. Checking ..."
PID=$(/bin/egrep -o "^[[:digit:]]+" $PID_FILE)
echo $PID
if /bin/ps --pid $PID &>/dev/null; then
echo "Process $PID found. ${0##*/} seems to be running!($PID_FILE)"
/usr/bin/logger -t ${0##*/} \
"Process $PID found. ${0##*/} seems to be running!($PID_FILE)"
exit $E_RETURN
fi
echo "Process $PID not found. Start new process $$. . ."
fi
}
#********************************************************#
# #
# 将当前进程PID记录到临时文件 #
# #
#********************************************************#
write_lock () {
echo $$ > $PID_FILE || {
echo "Can't write to pid file $PID_FILE"
exit $E_RETURN
}
}
#********************************************************#
# 功能 : 第二个参数文件中定义的工作站获取数据 #
# 第一个参数用于识别进程,如果已经有进程运行则退出 #
# 第二个参数定义了所有的工作站信息,见举例 #
# #
#********************************************************#
getfile ()
{
JOB_ID=$1
for servers in `cat $2`
do
L_TELCOM=`echo $servers |cut -f 1 -d:`
L_STATION_NAME=`echo $servers |cut -f 2 -d:`
L_STATION_IP=`echo $servers |cut -f 3 -d:`
L_FILE_PATH=`echo $servers |cut -f 4 -d:`
do
L_TELCOM=`echo $servers |cut -f 1 -d:`
L_STATION_NAME=`echo $servers |cut -f 2 -d:`
L_STATION_IP=`echo $servers |cut -f 3 -d:`
L_FILE_PATH=`echo $servers |cut -f 4 -d:`
echo "${JOB_ID}:starting copy from ${L_TELCOM} ${L_STATION_NAME} $L_STATION_IP ${L_FILE_PATH}/"
#for file_name in `ssh jbosslog@$L_STATION_IP "cd ${L_FILE_PATH};ls *log"`
for file_name in `ssh jbosslog@$L_STATION_IP "ls ${L_FILE_PATH}"`
do
export L_START_DATE=`date "+%Y-%m-%d %H:%M:%S"`
ssh jbosslog@${L_STATION_IP} "cd ${L_FILE_PATH} ; md5sum ${file_name} > ${file_name}.md5"
sudo -u jboss touch /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up
#sudo -u jboss touch /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up
scp -q -C jbosslog@${L_STATION_IP}:${L_FILE_PATH}/$file_name /$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up
scp -q -C jbosslog@${L_STATION_IP}:${L_FILE_PATH}/$file_name.md5 /$L_TELCOM/$L_STATION_NAME/upload/
export L_END_DATE=`date "+%Y-%m-%d %H:%M:%S"`
cd /$L_TELCOM/$L_STATION_NAME/upload/
mv ${file_name}.up ${file_name}
md5sum --status -c ${file_name}.md5
if [ $? -eq 0 ]; then
echo "${JOB_ID}:${L_START_DATE}-${L_END_DATE}:${L_STATION_IP}:${L_FILE_PATH}/$file_name SUCCESS;"
ssh jbosslog@${L_STATION_IP} "cd ${L_FILE_PATH} ;rm ${file_name}.md5 ;rm -f ${file_name}"
sudo -u jboss mv /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}
else
echo "${JOB_ID}:${L_START_DATE}-${L_END_DATE}:${L_STATION_IP}:${L_FILE_PATH}/$file_name FAILED;"
ssh jbosslog@${L_STATION_IP} "cd ${L_FILE_PATH} ;rm ${file_name}.md5"
cd /$L_TELCOM/$L_STATION_NAME/upload/
rm ${file_name}.md5
rm ${file_name}
sudo -u jboss rm /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up
fi
#####联调使用,将该省份的数据更改成海南的数据##############上线后请删除WARN WARN WARN WARN WARN WARN WARN WARN WA
##########################end
#for file_name in `ssh jbosslog@$L_STATION_IP "cd ${L_FILE_PATH};ls *log"`
for file_name in `ssh jbosslog@$L_STATION_IP "ls ${L_FILE_PATH}"`
do
export L_START_DATE=`date "+%Y-%m-%d %H:%M:%S"`
ssh jbosslog@${L_STATION_IP} "cd ${L_FILE_PATH} ; md5sum ${file_name} > ${file_name}.md5"
sudo -u jboss touch /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up
#sudo -u jboss touch /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up
scp -q -C jbosslog@${L_STATION_IP}:${L_FILE_PATH}/$file_name /$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up
scp -q -C jbosslog@${L_STATION_IP}:${L_FILE_PATH}/$file_name.md5 /$L_TELCOM/$L_STATION_NAME/upload/
export L_END_DATE=`date "+%Y-%m-%d %H:%M:%S"`
cd /$L_TELCOM/$L_STATION_NAME/upload/
mv ${file_name}.up ${file_name}
md5sum --status -c ${file_name}.md5
if [ $? -eq 0 ]; then
echo "${JOB_ID}:${L_START_DATE}-${L_END_DATE}:${L_STATION_IP}:${L_FILE_PATH}/$file_name SUCCESS;"
ssh jbosslog@${L_STATION_IP} "cd ${L_FILE_PATH} ;rm ${file_name}.md5 ;rm -f ${file_name}"
sudo -u jboss mv /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}
else
echo "${JOB_ID}:${L_START_DATE}-${L_END_DATE}:${L_STATION_IP}:${L_FILE_PATH}/$file_name FAILED;"
ssh jbosslog@${L_STATION_IP} "cd ${L_FILE_PATH} ;rm ${file_name}.md5"
cd /$L_TELCOM/$L_STATION_NAME/upload/
rm ${file_name}.md5
rm ${file_name}
sudo -u jboss rm /logstate/$L_TELCOM/$L_STATION_NAME/upload/${file_name}.up
fi
#####联调使用,将该省份的数据更改成海南的数据##############上线后请删除WARN WARN WARN WARN WARN WARN WARN WARN WA
##########################end
done
done
}
########################正文###############################
check_pid
write_lock
done
}
########################正文###############################
check_pid
write_lock
while true
do
echo `date +%Y%m%d%H`
getfile $1 $2
echo "sleep 900"
sleep 900
done
do
echo `date +%Y%m%d%H`
getfile $1 $2
echo "sleep 900"
sleep 900
done
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27042095/viewspace-754624/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27042095/viewspace-754624/