最近一直在Mac上写公司代码,有时候需要在服务器上去拉取报文(一些xml文件),一直坚持着能少装软件就少装软件,所以就用Mac自带的终端咯,然后自己写了一个脚本用于从服务器上去拉取文件
集群的服务器上如何集中报文
需要使用rsync命令,直接上脚本了:
#!/bin/sh
if [ $# -lt 2 ];then
echo '[Usage]: tools/collect_pkts.sh $company $session_id'
echo 'e.g.: tools/collect_pkts.sh tianan b3e11ccae69643df8630faabb2cc40c0'
exit
fi
basedir=/app/web/car_ins_server/pkts
SESSION_ID=$2
COMPANY=$1
if [ ! -d "$basedir/$COMPANY" ]; then
mkdir $basedir/$COMPANY
fi
#echo "company:$COMPANY, session_id:$SESSION_ID"
for host in `cat /app/web/car_ins_server/tools/tomcat_servers`; do
rsync -avz $host:/app/web/car_ins_server/pkts/$COMPANY/*$SESSION_ID* $basedir/$COMPANY/ 2> /dev/null
done
cd $basedir
tar -czf $COMPANY.tar.gz $COMPANY
rm -rf $COMPANY
脚本的作用:采用遍历的方式搜寻每台服务器上指定文件夹下的 文件名包含 $SESSION_ID的文件,找到之后把它同步到中心服务器,然后打压成一个gz包
本地与服务器上文件同步
#!/bin/bash
if [ $# -lt 2 ];then
echo '[Usage]: ./get_pkts.sh $company $session_id'
echo 'e.g.: ./get_pkts.sh tian b3e11ccae69643df8630faabb2cc40c0'
exit
fi
pktsdir=~/Documents/work/pkts/
if [ ! -d "$pktsdir"]; then
mkdir "$pktsdir"
fi
echo "start collecting......"
SESSION_ID=$2
COMPANY=$1
echo "### company:$COMPANY, session_id:$SESSION_ID ###"
ssh -t web@121.41.109.204 "/app/web/car_ins_server/tools/collect_pkts.sh $COMPANY $SESSION_ID"
scp web@121.41.109.204:/app/web/car_ins_server/pkts/$COMPANY.tar.gz ~/Documents/work/pkts/
ssh -t web@121.41.109.204 "rm -f /app/web/car_ins_server/pkts/$COMPANY.tar.gz"
echo "end collecting......"
cd ~/Documents/work/pkts/
tar -zvxf $COMPANY.tar.gz
#rm -f $COMPANY.tar.gz
脚本作用:通过ssh去执行远端服务器上的脚本,然后通过scp命令把上一步中得到的gz包复制到本地,再解压。
注意
我的Mac的公钥已经加到服务器的公钥库了,否则上面脚本的ssh命令是无法连接到服务器的.