1. 设置ssh、scp命令的认证

运行一次脚本后,以后再使用ssh或scp命令登录远程机器时不再提示输入密码

-----------------setkey.sh开始-------------------------

OLDDIR=`pwd`

if [ -z "$1" ]; then

echo Need user@host info;

exit;

fi;

cd $HOME;

if [ -e "./.ssh/id_rsa.pub" ]; then

cat ./.ssh/id_rsa.pub | ssh $1 'mkdir -p .ssh;cat >> .ssh/authorized_keys';

else

ssh-keygen -t rsa;

cat ./.ssh/id_rsa.pub | ssh $1 'mkdir -p .ssh;cat >> .ssh/authorized_keys';

fi;

cd $OLDDIR

-----------------setkey.sh结束-------------------------

用法:setkey.sh [用户名]@[要登录的目标机IP地址]

2. 进程监控程序

定时检查进程,发现进程挂掉时重启进程

-----------------loopcheck.sh开始-------------------------

#!/bin/sh

predir=`pwd`

filedir=`dirname $0`

cd "${filedir}"

curdir=`pwd`

logfilename=./loopcheck.log

#-----------------------------------

# 函数: CheckProcess

# 功能: 检查一个进程是否存在

# 参数: $1 --- 要检查的进程名称

# 返回: 如果存在返回0, 否则返回1.

#---------------------------------------

checkprocess()

{

if [ "$1" = "" ]; then

return 1

fi

# $PROCESS_NUM获取指定进程名的数目,为1返回0,表示正常,不为1返回1,表示有错误,需要重新启动

process_num=`ps -ef |grep "$1" |grep -v "grep" |wc -l`

if [ $process_num -eq 1 ]; then

return 0

else

return 1

fi

}

# 启动C++进程

startBinProcessByName()

{

/bin/$1  > "log.${1}.txt" &

echo "`date` [startBinProcessByName]restart $1 ok" >> ${logfilename}

}

# 主逻辑

while [ 1 ]; do

# 对C++进程进行检查

tblBins=("gamesvr.bin" "dbsvr.bin")

for tblBin in "${tblBins[@]}";do

checkprocess "${tblBin} server${serverNo}"

check_result=$?

if [ $check_result -eq 1 ]; then

echo "`date` error ${tblBin}" >> ${logfilename}

startBinProcessByName "${tblBin}"

fi

done

# 每隔10秒执行一次

sleep 60

echo "`date` check ok" >> ${logfilename}

done

cd ${predir}

-----------------loopcheck.sh结束-------------------------

3. mysql数据库表自动修复脚本

-----------------checkdbtable.sh开始-------------------------

#!/bin/sh

mysql_host=localhost

mysql_user=star

mysql_pass=star

database=starcraft27

tables=$(mysql -h$mysql_host -u$mysql_user -p$mysql_pass $database -A -Bse "show tables")

for arg in $tables; do

check_status=$(mysql -h$mysql_host -u$mysql_user -p$mysql_pass $database -A -Bse "check table $arg"  | awk '{ print $4 }')

if [ "$check_status" = "OK" ]

then

echo "$arg is ok"

else

echo $(mysql -h$mysql_host -u$mysql_user -p$mysql_pass $database -A -Bse "repair table $arg")

fi

# echo $(mysql -h$mysql_host -u$mysql_user -p$mysql_pass $database -A -Bse "optimize table $arg")

done

-----------------checkdbtable.sh结束-------------------------

4. mysql数据库备份脚本

-----------------backupdb.sh开始-------------------------

#!/bin/bash

predir=`pwd`

dir=`dirname $0`

cd "${dir}"

DB_DATABASE=databasename

DB_USR=username

DB_PWD=userpassword

BACKDIR=../backup/db

LOG_PATH=../backup/log

DATE=`date +%Y.%m.%d.%H.%M.%S`

targetFile=$BACKDIR/db.$DATE.tar.gz

if [ $# = 1 ];then

targetFile=$1

fi

mkdir -p $LOG_PATH

echo "backupdb begin">>${LOG_PATH}/dailyMaintenace.log

mkdir -p $BACKDIR

mysqldump -u"${DB_USR}" -p"${DB_PWD}" $DB_DATABASE >$DB_DATABASE.$DATE.sql

tar -zcf $targetFile $DB_DATABASE.$DATE.sql

rm -rf $DB_DATABASE.$DATE.sql

echo "backupdb done">>${LOG_PATH}/dailyMaintenace.log

cd "${predir}"

-----------------backupdb.sh结束-------------------------

5. mysql数据库备份恢复脚本

-----------------recoverdb.sh开始-------------------------

#!/bin/bash

predir=`pwd`

dir=`dirname $0`

cd "${dir}"

if [ $# = 0 ];then

echo please specified the source sql file for recover

exit 0

fi

if [ ! -e $1 ];then

echo "there isn't the file $1"

exit 0

fi

DB_DATABASE=databasename

DB_USR=username

DB_PWD=userpassword

RECOVERDIRTEMP=../backup/db/recovertmp

echo recovering...

mkdir -p $RECOVERDIRTEMP

rm -rf $RECOVERDIRTEMP/*

tar -xzf $1 -C $RECOVERDIRTEMP/

if [ $# = 2 ];then

mysql  -u"${DB_USR}" -p"${DB_PWD}"  -e "drop database  if exists ${DB_DATABASE};create database ${DB_DATABASE};"

fi

mysql -u"${DB_USR}" -p"${DB_PWD}" $DB_DATABASE < $RECOVERDIRTEMP/*.sql

rm -f $RECOVERDIRTEMP/*.sql

echo done

cd "${predir}"

-----------------recoverdb.sh结束-------------------------

6. mysql数据库结果分析输出csv文件脚本

-----------------export_userinfo.sh开始-------------------------

#!/bin/bash

rm -rf export_out.csv

var=0

records=()

map=""

date

while read line

do

key=`echo $line | awk -F ' ' '{print $1}'`

#echo $key

result=(`mysql rxsg2_$1 --skip-column-names -e"select p.passport, u.name, u.level, o.total_online, u.vip from mem_passport p left join (mem_user u left join mem_user_online o on o.uid=u.uid) on u.uid=p.uid where p.passport='$key'"`)

len=${#result[@]}

if [ $len -ne 5 ]; then

records[$var]="$key"

else

records[$var]="${result[0]},${result[1]},${result[2]},${result[3]},${result[4]}"

fi

#echo ${records[$var]};

var=`expr $var + 1`

#if [ $var -eq 5 ]; then

#break;

#fi

done < export_in.txt

outstr="";

echo "over";

#echo ${records[*]} > export_result.txt

for ((i=0;i

do

echo ${records[$i]} >> export_out.csv

#outstr=$outstr`echo ${map[$i]}``echo "\n"`

done

#echo $outstr > export_result.txt

date

-----------------export_userinfo.sh结束-------------------------

【参考】

http://www.cnblogs.com/end/archive/2011/07/20/2111888.html

linux中常用的shell脚本,Linux常用shell脚本相关推荐

  1. 19. linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解

    linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解 文章目录 Linux权限位 读写执行 三种权限真正含义和作用 权限对文件的作用 权限对目录的作用 示例 chmod 使用数 ...

  2. linux取证教程,Linux中的取证(Forensics in Linux)

    Linux中的取证(Forensics in Linux) 数字调查的主要问题是通过加密或任何其他格式保护重要证据或数据. 基本示例是存储密码. 因此,有必要了解Linux操作系统在数字取证实施中的使 ...

  3. centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国

    Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为.-- Magesh Maruthamuthu Lin ...

  4. linux中_Linux基础知识(Linux系统、Linux中的链表)

    Linux系统简介 Linux系统的结构及特点 Linux系统的结构图如下图所示: 从上图可以看出,Linux是一个典型的宏内核(一体化内核)结构.硬件系统上面时硬件抽象层,在硬件抽象层上面时内核服务 ...

  5. linux中的改变bin级别,Linux常用命令

    关机命令:shutdown -h now / shutdown -r now / reboot 切换图形化界面:startx      切换到命令行:注销即可 添加用户:useradd xiaomin ...

  6. linux中代码挂上n,Linux系统常用命令nl详解(示例代码)

    nl命令在linux系统中用来计算文件中行号.nl可以将输出的文件内容自动的加上行号!其默认的结果与cat -n有点不太一样,nl可以将行号做比较多的显示设计,包括位数与是否自动补齐0等等的功能.本文 ...

  7. shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?

    每个 Linux 管理员都可能听到过 shell 这个词.你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗? Linux 中有多少个 shell 可用? -- Ma ...

  8. linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释

    摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...

  9. linux fish颜色配置,如何在 Linux 中安装、配置和使用 Fish Shell?

    (给Linux爱好者加星标,提升Linux技能) 英文:Magesh Maruthamuthu,翻译:Linux中国/MK linux.cn/article-10622-1.html 每个 Linux ...

  10. 解释linux中的三种重定向,Linux重定向及反弹shell详解

    这里说Linux重定向的原因主要还是为了详细了解一下Linux中的反弹shell 目录 0x01 文件描述符 0x02 重定向 0x03 反弹shell 0x04 交互重定向 0x05 命令变形 0x ...

最新文章

  1. js new 运算符到底做了什么?
  2. 人体姿态跟踪--Pose Flow: Efficient Online Pose Tracking
  3. 网络编程学习笔记(getservbyname和getservbyport函数)
  4. 用Python实现每秒处理120万次HTTP请求
  5. 我不是码神!Serverless真的可以为所欲为?
  6. Adobe illustrator 粉色背景字体是为什么 - 连载19
  7. matlab语言转化为python语言_matlab语言转译成python
  8. Mounting A Windows Share On AIX Using CIFS
  9. 补:关于man关于SEE ALSO(参见)中代号与vim下常用命令
  10. 【优化算法】多目标利希滕贝格算法(MOLA)【含Matlab源码 1434期】
  11. Tess4J和TesseractOCR简易使用教程
  12. 统一批量修改word页眉页脚
  13. python实现排列组合
  14. mysql 商品库存表设计_库存数据库表设计
  15. 用 js 开启本地服务器,实现短信发送
  16. Latex脚注加超链接
  17. 跟我学c++中级篇——concepts的几个应用
  18. plt.scatter 中cmap参数详解
  19. 抢占智能家居市场,海尔迎来多个竞争对手
  20. 视频质量诊断视频质量分析

热门文章

  1. TabLayout中的Tab.setCustomView左右有空隙,TabLayout下划线间隙设置,下划线长度设置
  2. git clone远程仓库时,输错密码如何解决?
  3. 实验16 编写包含多个功能子程序的中断例程
  4. 数据库笔记(数据库操作)
  5. html怎样调取css,css怎么调用?
  6. 面试题:移动数组的元素
  7. web---SSL/TSL
  8. [NLP-CNN] Convolutional Neural Networks for Sentence Classification -2014-EMNLP
  9. com.alibaba.fastjson.JSONObject cannot be cast to XXX异常解决
  10. Mybatis入门---一对多、多对多