一..开发背景 因时势所逼,需要对服务器的文件系统实行监控.虽然linux下有不少入侵检测和防窜改系统,但都比较麻烦,用起来也不是很称手.自己琢磨着也不需要什么多复杂的功能,写个脚本应该就可以满足基本需求.于是整理了一下思路,编写了一个简单的文件完整性检测程序. 二.实现功能 1.能监测多个不同目录中文件的增删改变化. 2.允许监测的特定类型文件,并可根据具体情况设定是否需要生成摘要等. 3.对于变动的文件,新增或修改的可以生成摘要.删除的文件要有日志记录. 4.当监测到文件发生变动时,能生成简…
比如有如下文件test.txt 1  134.102.173.43 2  134.102.173.43 3  134.102.171.42 4  134.102.170.9 要统计出现次数最多的IP可以利用以下shell脚本: cat test.txt | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 1…
背景是这样的:网站一开始访问量比较小,大家就把所有的图片文件上传到一个目录下(比如是/data/images/).后来访问量大了,图片也多了,这样就影响读取效率.所以有个这样的需求,把这些个图片文件移动到多个目录下,这个目录是图片的上传日期(就是文件属性中的修改日期filemtime)组成的.比如2012-12-20的修改日期,那么现在就该放在/data/images/2012/12/20的目录下. php有很容易的操作文件的函数,可以方便完成.当然也可以利用shell脚本完成. 程序思路:遍历…
2013.05.10  mytask 1.2 主程序休眠时间分成若干小的时间片断分段休眠,避免长时间的休眠不能及时响应系统信号. 2013.05.07 mytask 1.1 昨天发布了mytask1.0 版后(利用shell脚本实现计划任务功能),一直在想着如何解决那个最后的遗留问题"每个任务脚本中声明的函数名必须唯一不能重复,否则会导致任务函数覆盖.",无意间自问了一句为什么不能像crontab那样直接调用脚本和命令呢?这一问才让自己回忆起来,之所以用function封装任务是因为早…
现有需求:将oracle数据库中的数据准实时同步至某ftp服务器中,以便前端应用能定时从ftp服务器目录中取增量数据 方法:将加工脚本写为存储过程,然后利用shell脚本执行该存储过程并将增量数据导出为txt文件并传送到ftp服务器,利用crontab定时每5分钟执行一次shell脚本,从而实现oracle库中数据持续增量刷新到ftp服务器 其中crontab以及ftp和存储过程的编写并没有难度,shell脚本的功能稍稍复杂,现在将脚本记录下以备后查…
shell脚本中文件测试 author:headsen chen  2017-10-17  14:35:19 个人原创,转载请注明作者,否则 依法追究法律责任 [ -f  filename  ]   ,文件filename存在且为普通文件时,返回真(0) [ -d  filename ]  ,文件存在且为目录,返回真. [ -L filename  ],文件存在且为链接文件时,返回真 [ -e  filename ] , 文件或目录存在,返回真. [ -x  filename  ], 文件或目录…
Shell脚本统计文件行数 转自 http://www.jb51.net/article/61943.htm    示例:row_count.sh文件 awk '{print NR}' row_count.sh | tail -n1 awk 'END{print NR}' row_count.sh grep -n "" row_count.sh|awk -F: '{print '} | tail -n1 sed -n '$=' row_count.sh wc -l row_count.…
shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一下的文件测试操作符. 更多的参数可以help test或者man bash 二.字符串测试操作符: 字符串测试操作符的作用:比较两个字符串是否相同.字符长度是否为0,字符串是否为null(注:bash区分长度字符串和空字符串) “=”比较两个字符串是否相同,与“==”等价,如:if [“$a”=“$…
shell  脚本大文件处理 字符串处理 s='{"_id":{"$oid":"59b73d80930c17474f9f050d"},"address":"01ny.cn/xinxi/17571162.html"}' s_sub='{"_id":{"$oid":"59b73d80930c17474f9f050d"},"address&qu…
#! /bin/bash幸运28源码搭建下载Q[115288oo99]logintool=/home/yx/server/mysql/mysql/bin/mysqldumptool=/home/yx/server/mysql/mysql/bin/mysqldumpusername=rootpasswd=`cat /home/yx/stt/shellmysql/dumpsql/.passwd`socketfile=/var/run/mysqld/mysqld.sockstorepath=/home…
利用shell脚本可以个性化运行jar任务,废话不多说,直接上代码: #!/bin/bash APP_PATH=/root/bigdata/jars/data_migration_from_sqlserver APP_NAME=data_migration_from_sqlserver.jar usage() { echo "case: sh run.sh [start|stop|restart|status]" exit 1 } # 判断当前服务是否已经启动的函数 is_exist(…
shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mysql中 jerry -- male mike -- female tracy -- male kobe -- male allen -- female curry -- male tom -- female # 创建表结构和student一样结构的student1表 MariaDB [school]…
一.我们先看看编写的shell脚本的内容,该shell的作用主要是实现监控某个程序崩溃之后就自动重启该进程. while true do procnum=` ps -ef|grep "test"|grep -v grep|wc -l` if [ $procnum -eq 0 ]; then /home/test& fi sleep 30 done -eq意思是等于0,用于判断该test是否还在运行状态.监控/home/test这个程序是否运行. 二.由于该程序是window上的…
1. 项目背景 以往我们在开发基于webservice的项目中,我们总习惯于直接使用webservice的一些框架,如Axis,axis2和Xfire等.框架的好处是将webservice所涉及到的soap协议.wsdl以及uddi都封装起来,我们只需要直接调用方法传值并执行请求就可以.但框架也有缺陷,比如axis2要基于java工程,哪怕只是一个简单的功能我们都要搭建一个java web项目去实现它.这样做的后果就是: 1. 占用服务器磁盘资源(一个java web项目至少也要几M); 2.…
网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链(协议死链.404页面)进行提交,可快速删除死链,帮助网站SEO优化.在提交死链的文件中逐个手动填写死链的话太麻烦,工作中我们提倡复杂自动化,所以本文我们一起交流分享Apache服务中通过shell脚本整理网站死链,便于我们提交. 1.配置Apache记录搜索引擎 Apache是目前网站建设最为主流的…
在shell脚本设置了环境变量,如export LIBRARY_PATH=./lib/,执行了此脚本后, 在执行生成的可执行文件,提示错误 error while loading shared libraries: libww.so: cannot open shared object file: No such file or directory 但是如果把export那句话单独在命令行运行,在gcc编译代码后不会出现问题 怎么也想不通,为什么脚本执行了,设置了环境变量,但是运行可执行文件总是…
本文需要实现的功能如下:某文件夹下具有由按数字编号命名的文件夹,需要删除除最大编码外的文件. 具体实现 大致思路:循环遍历该文件夹下所有文件,正则匹配出最大编码文件:然后循环文件,删除除最大编码外的文件. 实现代码如下: #!/bin/bash function getdir(){ max= DATEPATTERN="^[0-9]*$" ` do if [[ "$element" =~ $DATEPATTERN ]] then ] then max=$element…
本来直接用crontab -e 就可以打开vim,输入要执行的任务保存退出就可以添加任务直接启动运行了.但是今天组长说能不能写个shell不用打开vi就能添加到crontab的. 最先想到的是怎么在shell脚本里面如何使用vi的命令,网上找了好多,要么格式太乱,要么没明白意思直接告诉vi的使用方法,所以只好舍弃了. 下面说我的方法吧 test.sh :里面写的是要执行的具体任务. call.sh是交个人直接双击就能实现添加crontab任务的:内容如下: #!/bin/sh echo "*/5…
一.AIDE的概念 AIDE:Advanced Intrusion Detection Environment,是一款入侵检测工具,主要用途是检查文档的完整性.AIDE在本地构造了一个基准的数据库,一旦操作系统被入侵,可以通过对比基准数据库而获取文件变更记录,使用aide.conf作为其配置文档.AIDE数据库能够保存文档的各种属性,包括:权限(permission).索引节点序号(inode number).所属用户(user).所属用户组(group).文档大小.最后修改时间(mtime).…
跟着RUNOOB网站的教程学习的笔记 和其他语言一样,shell也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件.shell文件包含的语法有两种形式 . filename  #也就是一个英文句号后面跟着想要包含的文件名,注意中间有一个空格分开 source filename 实验的时候遇到一个问题,第二种文件包含的形式在sh中不能用,而这两种文件包含形式在bash中是都可以使用的 实例 创建两个shell脚本文件 test1.sh代码如下: #!/bin/bash # a…
前言 之前手机里管理密码的脚本,都是直接编写进纯文本然后进行多次归档及压缩来实现不明文存储,一直觉得不太安全,于是昨天晚上编写脚本实现了简单的文件对称加密. 网上文章都利用 openssl 来进行文件加解密,这不符合在手机上运行的需要,所以必须自己编写文件的对称加密. 核心原理解析 对称加密的加密过程使用秘钥将明文转换成密文,而解密过程则使用同个秘钥将密文转换成明文,而最简单的实现就是利用位运算中的亦或运算. 例如下面是一字节明文数据 src 利用一字节秘钥 key 进行亦或运算,生成一字节密文…
Nginx 是一个非常轻量的 Web 服务器,体积小.性能高.速度快等诸多优点.但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量非常大,不便于管理.当然了,我们也不希望看到这么庞大的一个访问日志文件,那需要手动对这个文件进行切割. 在 Linux 平台上 Shell 脚本丰富,使用 Shell 脚本加 crontab 命令能非常方便地进行切割,但在 Windows 平台上就麻烦一些了,刚才弄了好长时间,就在这里记录整理一下.…
springbot开发api接口服务,生产环境中一般都是运行独立的jar,在部署过程中涉及到服务的优雅启动,关闭, springboot官方文档给出的有两种方式, 1.使用http shutdown 2.注册为系统服务  https://docs.spring.io/spring-boot/docs/1.5.3.RELEASE/reference/htmlsingle/#deployment-service 第一种不方便,麻烦,需要配置各种安全策略,无法集成自动化部署工具 第二种需要建立软连接,…
ui测试后生成测试报告,把报告保存在某一个固定路径 shell脚本把这个报告上传 #!/bin/bash -ile #svn下载文件 #svn checkout http://svn.xxx.com/svn/xxxx/trunk/UI/report --username xxx --password dsdfsdf; svn checkout http://svn.xxx.com.cn/svn/xxxx/trunk/UI/report cd report pwd #是否存在report 文件,如…
有时我们需要将一个文件夹覆盖到我们的工作目录,但需要自动备份已经存在的文件,一个一个去备份太麻烦了,全部备份又没有必要.shell脚本可以很好滴完成这个任务.原文链接http://back.zhizhi123.com/?p=85 #!/bin/sh upload_dir=/alidata/www/sh/useful-shell-script/upload/ www_dir=/alidata/www/sh/useful-shell-script/www/ backexist() { filelis…
我们平时查日志,在测试环境,日志文件只有几个的情况下,我们可以通过找时间接近的文件然后根据关键词定位报错位置,大不了都查一遍,这都可以忍受.但是在实际的生产环境下,服务器集群部署,每天的日志非常多非常多,每台机器都会有几十个甚至多达上百个.数百个日志文件产生.遇到问题需要查询日志时,你会发现如果一个个文件去查,你会崩溃掉.因为这是很费时的重复性工作,而且也不一定能查到. 为了解决这种问题,大多数人会去编写shell脚本,用来检索日志文件,这样能筛掉很多无用文件,减轻查日志的工作量.服务器集群部署…
转至: 最近需求要求定期从一个[定期更新的文件] 中解析员工信息 ,插入到数据库中. 按理来说很简单,  无非就是io流读文件,然后crud balalalala..... 其实不是的, 我我写的这个接口 ,要实现从远程服务器上获取文件然后入库操作 . . . 问题来了,  我怎么去读文件. 这样就用到了linux的命令了 ,大致来说 , 从远程服务器上获取文件有好几种方式 , scp快速获取 sftp建立ssh连接 ,lftp连接  好像还有个rsync什么的,这个没记住 .... 大致命令为…
1.在linux操作系统上手动备份数据库 mysqldump -h 服务器IP地址 -u root -p数据库密码 --databases 所要备份的数据库名称 > /路径/数据库.sql(自定义要生成的sql名称) 2.在linux操作系统上手动还原数据库 mysql -uroot -p密码 < 数据库.sql(如果不是在当前目录下要进行添加具体路径)我是在当前目录下存储运行的 记得要查生成的sql文件,可以进行更改的(不建议进行修改库名,但是大多数可以在表中进行造数据) 3.在linux操…
脚本如下: #!/bin/bash mysql -s -phello test >.log <<EOF desc t1; EOF lines="concat_ws(','," count=`.log|wc -l` linenum= while read line do coloumname=`echo $line |awk '{print $1}'` let linenum=linenum+ ];then lines=$lines"concat_ws(':'…
前言 我们经常看到github上面有很多CHANGELOG.MD包含版本的更新信息,如果我们的git提交能遵循一定的规范,那么使用gitlog就能很方便的生成它 生成结果  shell脚本 https://github.com/LinkinStars/springBootTemplate/blob/master/gitlog.sh 将脚本放在项目的根目录,然后给与权限,然后运行后,就能生成和上面差不多的CHANGELOG.md git提交规范 当然如果你和上面不一样也正常,需要你git提交的m…