shell脚本

6月16日 · 2017年

Python远程控制模块paramiko遇到的问题及解决记录

14
最近一直在开发自动化运维发布平台,底层命令行、文件通道主要基于 paramiko 模块,使用过程中遇到各种各样的问题,本文主要用于收集问题及解决记录,以备后续使用。 一、Error reading SSH protocol banner 连接错误 这个关键词,在百度、谷歌一搜一大把的提问,也有少部分给出了解决方案,但是最终都无法解决,我经过不断尝试和解读 paramiko 源码,终于搞定了这个问题,在此记录分享下。 1、具体报错信息: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "build/bdist.linux-x86_64/egg/paramiko/client.py", line 307, in connect File "build/bdist.linux-x86_64/egg/paramiko/transport.py", line 465, in start_client…
11月8日 · 2015年

分享一个入门级可控多线程shell脚本方案

12
说到 shell 可控多线程,网上分享的大部分是管道控制的方案。这种方案,张戈博客也曾经实战并分享过一次:《Shell+Curl 网站健康状态检查脚本,抓出中国博客联盟失联站点》,感兴趣的朋友可以看看。 下面张戈博客再分享另一种更容易理解的入门级可控多线程 shell 脚本方案:任务切割、各个击破。 先来 1 段场景描述: 某日,在鹅厂接到了这个任务,需要在 Linux 服务器中,对几千个 IP 进行一次 Ping 检测,只要取得 ping 可达的 IP 就好。如果单个 IP 去 ping 测试,虽然也可以完成任务,几千个 IP 还好了,如果更多呢? 鉴于这个 case 简单程度,第一时间先放弃了以前用过的管道方案,而是采用了各个击破的思想。 简单思路: 按照任务切割的“战略思想”,我先将这几千 IP 存入一个 iplist 文件,然后写一个分割函数,将这个文件分成多份临时…
8月19日 · 2015年

解决dos2unix/unix2dos报错,并在家目录下生成u2dtmp*文件问题

3
最近接到一个 case:大数据分析那边反馈我们这边推送的数据同比去年同期少了很多。这是很不正常的,因为业务一直在增长。 于是,我开始顺藤摸瓜的跟进。一开始就发现一个小问题:scp 推送文件脚本执行后居然会报错: [[email protected] :/data]# sh pushdata.sh dos2unix: converting file pushdata.log to UNIX format … dos2unix: problems renaming ‘./u2dtmp8jwsge’ to ‘pushdata.log’ output file remains in ‘./u2dtmp8jwsge’ dos2unix: problems converting file pushdata.log 原来是将生成的日志转换成 Unix 格式。按理说应该不会影响数据的推送,不过还是顺手处理下。 奇怪的是,人工去执行…
8月13日 · 2015年

Linux在批量服务器管理中实用的PS1命令提示符格式

5
作为一个大公司的运维,手头管理了成百上千的服务器是家常便饭,甚至更多。而我们一般都是用跳板机登陆,由于这些机器一般都是克隆或者虚拟化出来的,所以登陆后的命令行提示符几乎是一个模子刻出来的,比如都是:[[email protected] ~]# 这时,我们肯定会经常遇到这样一个困扰:操作服务器时因某事中断,回头继续操作的时候肯定会 ifconfg 确认下是否是我要操作的服务器,因为无法从表象识别。 所以,我们很有必要将这个 PS1 命令行提示符优化一下。每个运维攻城狮肯定都有自己的习惯,不过我还是推荐一个服务器批量管理中比较使用的 PS1 格式吧! PS1 是神马?PS1 是 linux 里头的一个默认的环境变量,至于当前系统的 PS1 是如何设置的,你可以使用命令“env|grep PS1”来查看 。 其实 PS1 就是用来设置命令提示符格式的环境变量。 下面贴一下 PS1 的配置参数: \d :代表日期,格式为 weekday month date,例如:"Mon Aug 1" \H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是 fc4.linux \h…
6月4日 · 2015年

Linux下的mongodb服务脚本,以备不时之需

8
前些天,一位开发同事找到我,说他测试环境的 mongodb 经常挂掉,要我写一个监控或复活的脚本。我觉得很奇怪,测试环境又没啥负载,经常挂掉肯定有非常规原因。 跑过去看了一下日志,发现存在 stop 记录,我就纳闷了,没人操作他还会自己 stop。这明显不是挂掉了,于是到 history 中看了下同事的启动命令: /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/data/mongodb.log --logappend & 原来如此!因为他没有用 nohup 启动,所以只要他的终端离线或者关闭,mongodb 就会自动退出了!解决办法很简单,如下启动即可: nohup /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/data/mongodb.log --logappend >/dev/null 2>&1 & 这样敲命令也着实苦逼,所以从网上找了一个 mongodb 服务脚本就舒服多了: #!/bin/sh # #mongod - Startup script for…
5月3日 · 2015年

SEO技巧:Shell脚本自动提交网站404死链到搜索引擎

73
最近在折腾博客主题,通常来说大多数人认为换主题会影响 SEO,实际上只要你把工作都做到位了,是没有任何问题的。比如,换主题后你得仔细检查标题和描述等内容是否发生改变、换主题后是否带来了大量的 404 页面等。当然,更细微的可能是换主题之后,网站的内链网络也发生了微妙的改变,但是整体的影响较小。 总之,张戈博客这次更换主题基本上没有看到明显的 SEO 影响,反而出现几个新的关键词。好了,题外话到此结束,下面分享一下从 Nginx 日志分析并生成能提交到搜索引擎的死链文件的 Shell 脚本。 一、前因后果 今天在看百度站长平台的抓取频次的时候,发现最近抓取次数有所下滑,并且平均响应时间也有所上升,感觉和最近频繁折腾主题以及访问量增加有所关系: 这个问题倒是好解决,等主题稳定了,页面静态缓存文件也就不会频繁被手工删除,整个网站的抓取响应时间应该就能回到正常水平。 再往下看,却发现网站抓取中出现的 404 数据也呈上升趋势: 实际上,张戈博客以前是手动提交过死链文件的,但后来没时间也就没去搭理更新了。看来这个工作还得重新做起来,并且实现自动化才行了。 二、Shell 脚本 说做就做,简单的写了个 Shell 脚本就搞定了! 脚本名称:网站死链生成脚本 脚本功能:每天定时分析网站前一天的 nginx 日志, 然后提取状态码为 404 并且 UA 为百度蜘蛛的抓取路径,并写入到网站根目录下的 death.txt 文件,用于提交百度死链。 脚本代码: #!/bin/bash…