自编shell脚本合集(完善中)
1.数据库备份
#!/bin/bash
user="root"
psword="root"
bakdir="/data/mysqlbak"
Date=$(date +%F)
dbnames=$(mysql -u root -proot -e "show databases" | sed 1d | egrep -v "(schema$|mysql)")
#删除3天之前的备份
find $bakdir -ctime + -name \*.sql | xargs rm -f
#备份数据库
for dbname in $dbnames
do
mysqldump -u$user -p$psword --databases $dbname > $bakdir/${dbname}-${Date}.sql
done
2.自动安装apache php mysql (利用本地网络源)
#!/bin/bash
#Date :--
#Author :高鹏
#Function :本脚本用于centos6/7使用自带源安装httpd、mysql、php
#Version :0.2
#Update :--
grep -i "centos" /etc/redhat-release > /dev/null
if [[ $? -ne ]];then
echo "NOT CentOS" && exit
fi OS=$(awk -F . '{print $1}' /etc/redhat-release | grep -o [-] )
function package_version(){
yum list | egrep "(^httpd.x86_64|^php.x86_64|^mysql.x86_64|^mariadb.x86_64)" | awk -F "-" '{print $1}'| awk 'BEGIN{printf("pachage\t\tversion\n")} {print$1"\t"$2}'
} function package_info(){
Apache=$(httpd -v > /dev/null | egrep -o '[0-9]\.[0-9]\.[0-9]') && echo "Apache Version : $Apache" || echo "Apache Version : uninstalled"
Mysql=$(mysql -V > /dev/null| egrep -o '[0-9]\.[0-9]\.[0-9]') && echo "MySQL/MariaDB : $Mysql" || echo "MySQL/MariaDB :uninstalled"
PHP=$(php -v > /dev/null | sed -n 1p | egrep -o '[0-9]\.[0-9]\.[0-9]') && echo "PHP Version : $PHP" || echo "PHP Version :uninstalled"
} function install(){
[[ $OS -eq ]] && yum install -y httpd php mariadb-server
[[ $OS -eq ]] && yum install -y httpd php mysql-server mysql mysql-devel
} function start_server(){
[[ $OS -eq ]] && systemctl start mariadb httpd > /dev/null
[[ $OS -eq ]] && service mysqld start && service httpd start
}
function main(){ echo "################################"
echo "########## installed ###########"
package_info
echo "################################"
package_version read -p "If install?(Y/N) :" yn
case $yn in
Y|y|yes|YES )
read -p "pelease input mysql psword(default:root) :" mysql_psword
mysql_ps=${mysql_psword:=root}
install;;
N|n|no|NO )
exit;;
*)
echo "invalid input" && exit;;
esac
start_server
/usr/bin/mysqladmin -u root -h localhost.localdomain password "$mysql_ps" }
main &&
echo “install complete”
3.获取本机或远程主机信息
#!/bin/bash
#localinfo.sh
#本地信息
clear
#判断是否为root用户
if [[ $(id -u) -ne ]];then
echo "Please execute as root."
exit
fi #获取版本号
if [[ -f /etc/redhat-release ]]; then
Version=$(cat /etc/redhat-release)
elif [[ -f /etc/issue ]]; then
Version=$(awk '{print $1,$2}' /etc/issue)
fi
#获取磁盘信息
Disk_Info=$(lsblk -l | awk 'BEGIN{printf("Disk\t\tSize\n")} /disk/ {print $1"\t\t"$4}')
#获取IP信息
IP_Addr=$(
ETH=$(awk -F ":" 'NR>2{print $1}' /proc/net/dev)&&
for eth in $ETH;do
echo -e "$eth\t\t$(ifconfig $eth | awk '/inet/ {print $2}' | egrep -o "[-]{,}\.[-]{,}\.[-]{,}\.[-]{,}")"
done
)
#获取端口及服务信息
Port=$( netstat -lntup | awk -F / '/LISTEN/ {print $1,$2}' | awk '{print $4"\t\t"$8}' | egrep -o '[0-9]{1,5}'$'\t\t''[a-z]*' | sort | uniq)
#获取内存信息
Mem_Info=$(free -h | egrep "(Mem|Swap)" | awk '{print $1"\t\t"$2}')
#获取 CPU信息
Cpu=$(grep "physical id" /proc/cpuinfo | uniq | wc -l)
Core=$(grep "core id" /proc/cpuinfo | wc -l)
function main(){
echo -e "
###########################################
DATE : $(date "+%F %r")
############## SYSTEM INFO ################
HOSTNAME : $(hostname)
VERSION : $Version
ARCH : $(uname -m)
############## IP INFO ################
$IP_Addr
############## DISK INFO ################
$Disk_Info
############## CPU INFO ################
NUM OF CPU : $Cpu
NUM OF CORE : $Core
############## MEM INFO ################
$Mem_Info
############## PORT SERVER ################
PORT\t\tSERVER
$Port
############## END ################"
}
main
远程信息(调用localinfo.sh)
#!/bin/bash
if [[ -z $ ]];then
echo "USE: $0 IP_ADDRESS [PORT]"&&exit
else
PORT=$
PORT=${PORT:=}
ssh root@$ -p $PORT 'bash -s' < LocalInfo.sh
fi
4带颜色输出字符
#!/bin/bash
#closr
#Black red green yellow blue violet and bluish white
function Echo_Black(){
echo -e "\033[30m${1}\033[0m"
}
function Echo_Red(){
echo -e "\033[31m${1}\033[0m"
}
function Echo_Green(){
echo -e "\033[32m${1}\033[0m"
}
function Echo_Yellow(){
echo -e "\033[33m${1}\033[0m"
}
function Echo_Blue(){
echo -e "\033[34m${1}\033[0m"
}
function Echo_Violet(){
echo -e "\033[35m${1}\033[0m"
}
function Echo_Bluish(){
echo -e "\033[36m${1}\033[0m"
}
function Echo_White(){
echo -e "\033[37m${1}\033[0m"
自编shell脚本合集(完善中)的更多相关文章
- Shell 脚本合集
0. 说明 Shell 脚本合集 1. xcall.sh xcall.sh 编写为了为了同时对多台服务器进行操作,编写完成之后,将其发送到 /usr/local/bin 下 #!/bin/bash ...
- C# 调用windows api 操作鼠标、键盘、窗体合集...更新中
鼠标操作window窗体合集...更新中 1.根据句柄查找窗体 引自http://www.2cto.com/kf/201410/343342.html 使用SPY++工具获取窗体 首先打开spy+ ...
- 【shell】shell基础脚本合集
1.向脚本传递参数 #!/bin/bash #功能:打印文件名与输入参数 #作者:OLIVER echo $0 #打印文件名 echo $1 #打印输入参数 执行结果: 2.在脚本中使用参数 #!/b ...
- 利用Shell脚本将MySQL表中的数据转化为json格式
脚本如下: #!/bin/bash mysql -s -phello test >.log <<EOF desc t1; EOF lines="concat_ws(',', ...
- 通过Shell脚本读取properties文件中的参数时遇到\r换行符的问题
今天在编写微服务程序启动脚本的时候,遇到一个比较奇葩的问题,下面给出具体描述: 目标:通过读取maven插件打包时生成的pom.properties文件,获取里面的应用名称和应用版本号,然后拼接得到s ...
- 【shell】Shell命令合集(0)
Ccat zdd 浏览文件zdd的内容cat zdd1 zdd2 浏览多个文件的内容cat -n zdd浏览文件zdd的内容并显示行号 cd 回到起始目录,也即刚登陆到系统的目录,cd后面无参数cd ...
- 利用shell脚本将Oracle服务器中数据定时增量刷新到ftp服务器中
现有需求:将oracle数据库中的数据准实时同步至某ftp服务器中,以便前端应用能定时从ftp服务器目录中取增量数据 方法:将加工脚本写为存储过程,然后利用shell脚本执行该存储过程并将增量数据导出 ...
- shell脚本练习题(更新中...)
练习题(这里贴的是自己写的代码, 网上给的题目代码我会附加在最下面) 1. 编写shell脚本,计算1-100的和: #!/bin/bash #caculate the to `; do sum=$[ ...
- (原创)Windows下编译的Shell脚本不能再Linux中运行的解决办法
一.原理 Windows编译的文件和Linux编译的文件格式不太一样,导致在Linux运行Shell脚本的时候会提示:/bin/bash^M: bad interpreter: 没有那个文件或目录. ...
随机推荐
- YouCompleteMe报错可能是第三方库没有
git submodule update --init --recursive 到YouCompleteMe安装目录下,执行上面的命令
- c++求中位数
#include <iostream> #include <cassert> #include <stack> #include <math.h> us ...
- 51nod 1605:棋盘问题
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1605 题目中最有用的点其实还是x必为奇数 #include& ...
- uiautomator python版本
摘要: 利用jsonrpc技术直接包装uiautomator,调用uiautomator的api在本地直接编写脚本,然后运行测试case,这样比用Java写,然后再打包,runcase要简单的多,关键 ...
- 关于iphone设置显示模式为标准模式和放大模式时的区别
参考来自:https://www.jianshu.com/p/5f61d914114b CGFloat scale = [[UIScreen mainScreen] scale]; CGFloat n ...
- 【Linux】【Kibana】解决Kibana启动失败:Data too large问题
今天重启Kibana容器,结果启动不了,一看日志发现是Data数据量太大报错. FATAL [circuit_breaking_exception] [parent] Data too large, ...
- k-近邻算法(kNN)测试算法:作为完整程序验证分类器
#测试算法:作为完整程序验证分类器 def datingClassTest(): hoRatio = 0.10 #设置测试集比重,前10%作为测试集,后90%作为训练集 datingDataMat,d ...
- [CSP-S模拟测试]:蔬菜(二维莫队)
题目描述 小$C$在家中开垦了一块菜地,可以抽象成一个$r\times c$大小的矩形区域,菜地的每个位置都种着一种蔬菜.秋天到了,小$C$家的菜地丰收了. 小$C$拟定了$q$种采摘蔬菜的计划,计划 ...
- 微信网页开发调用微信jssdk接口遇到的坑以及最终解决方法 (持续更新)
1.微信网页开发调用jssdk时报permission denied 大致是两个原因 (1)首先注册时未将你所调用的接口名字添加至jsApiList (2)第二个就是你的这个公众号没有权限使用这个ap ...
- mysql 一条sql完成saveOrUpdate 存在即更新
关键字 on duplicate key update <pre name="code" class="sql"> insert into tabl ...