过滤一下今天的流程linux
肯定了去把另一台服务器上的日志加到当前的服务器,当时想的是那货直接把服务器的帐号和密码直接给个我,我来搞定,结果发现仍是我太单纯了。。。apache
一、人家直接给我一个公钥,通过查找资料得出的结论有如下的几种
a、直接在本机生成公钥和私钥,而后把本身客户端的公钥传到服务器上的id_rsa.pub中,这里须要注意的是一个服务器可能运行多个主机来无密码登录,因此注意不要把服务器上的那个文件直接给替换了,看下里面有内容的话最好是直接添加到后面便可;centos
b、直接给了个私钥。。。不知道怎么处理,通过询问,听说使用一下的方式直接能够生成pub文件,而后根据这两个文件登录就行:
若是给过来的是一个.pem文件,利用私钥直接生成一个公钥:
key.pem
ssh-keygen -e -f key.pem >> key.pem.pubtomcat
c、直接给个私钥过来,今天最终的处理方式就是给了私钥,而后根据私钥的登录公式直接的登录,偶尔能成功,可是没有搞清楚登录不成功的缘由,登录成功的公式以下:
ssh -i /Users/project/LoginKey/xyl_wuyabin/key_22.22.222.122_22.pem centos@22.22.222.122服务器
临时性的处理了服务器登录的问题,接下来就是要把当前服务器上的日志对应的扔到S3上去,在当前的服务上须要装上s3工具,而后写个脚本,定时的复制到s3服务器便可:ssh
一、在当前的服务器直接的安装s3cmd, 最想见的就是wget直接下载到本地,而后根据绝对地址的方式使用命令,经常使用到的命令就是查看、上传和下载
s3cmd ls -l / #注意这里有坑 有的版本不支持这种的写法
s3cmd put a.avi s3://xxx/xxx/xxx/a.avi #注意这里,有文件直接上传,以前想先建立一个桶而后扔进去,结果失败了,最终的处理方式是不用创建桶,直接扔的时候回本身建桶
s3cmd get s3://xxx/xxx/xxx/a.avi 直接get到本地工具
二、开始写脚本了,mac上的脚本和Linux上的部分不同,这里是个坑,知道就行,测试的时候最好是用vagant上的linux服务器去测是,否则会累死的,参考写的基本以下:
#!/bin/sh
####################
#put log to s3
#Author Lcm
#date 2016-10-27
###################
dateYMD=`date -d yesterday +%Y-%m-%d`
dateYM=`date -d yesterday +%Y-%m`
dateMD=`date -d yesterday +%m-%d`测试
OLD_LOG_PATH='/home/centos/tools/apache-tomcat-8080/igp_logs/reg1/'$dateYM'/reg1-'$dateMD'*.log'
NEW_LOG_PATH='/home/centos/tools/s3/s3cmd/s3cmddata/reglog'$dateMD'.log'
TAR_LOG_PATH='/home/centos/tools/s3/s3cmd/s3cmddata/reglog'$dateMD'.gz'
cat $OLD_LOG_PATH > $NEW_LOG_PATH
if [ -f "$NEW_LOG_PATH" ];then
gzip -c $NEW_LOG_PATH >$TAR_LOG_PATH
/home/centos/tools/s3/s3cmd/s3cmd put $TAR_LOG_PATH 's3://ngemobi/logs/igp_logs/reg/dt='$dateYMD'/reglog'$dateMD'.gz'
rm $NEW_LOG_PATH
rm $TAR_LOG_PATH
fi
这种脚本基本是流水帐形式的写法,思路清晰的话直接安装流水帐的流程写就好了spa
三、使用Crontab -e 的形式添加自动执行的脚本
2 10 12 * * * /bin/sh /Users/project/play/test.sh日志
结束