Linux自动化运维笔记
本节主要讲解将命令写入脚本中用于实现自动化运维
shell脚本
1、$意义
2、检查语法错误
3、字体颜色改变
4、快捷键使用
5、if else表达式
6、for循环
7、seq遍历
8、将文件复制到远程服务器上
9、数据库定时备份脚本
10、··符号的使用
11、crontab定时使用
12、while循环
14、req命令的使用
13、学会使用脚本自动化执行
$0 #获取当前脚本名称
$1~9 #获取对应参数
$* #获取所有参数
$? #获取上一条命令执行过程
$$ #获取shell脚本ID
UP|chmod 777 file
bash -n shell.sh 检查语法错误
sh shell.sh|./shell.sh
echo(写入输出) -e(转义) "\033[...\033[.."
格式: echo -e "\033[字背景颜色;字体颜色m 字符串\033[0m"
http://blog.csdn.net/panpan639944806/article/details/23930553
yyp复制粘贴
dd删除一行
gg 将光标定位到文件第一行起始位置;
G 将光标定位到文件最后一行起始位置;
NG或Ngg 将光标定位到第 N 行的起始位置
linux shell中 if else以及大于、小于、等于逻辑表达式介绍
if ....; then
....
elif ....; then
....
else
....
fi
http://www.jb51.net/article/34332.htm
vim 常用快捷键
http://blog.csdn.net/u014015972/article/details/50708360
shell中各种括号的作用()、(())、[]、[[]]、{}
http://blog.csdn.net/taiyang1987912/article/details/39551385
seq 遍历
#!/bin/bash
#echo $0 #获取当前脚本名称
#echo $1 #1-9获取对应参数 $*获取所有参数 $?获取上一条命令执行过程 $$获取shell脚本ID
echo -e "\033[41;32m please select menu:\033[0m"
echo "1)创建目录"
echo "2)安装Mysql5"
echo "3)安装Nginx"
echo "4)安装Php5"
read index
#判断用户选择的任务
if [[ $index == 1 ]]; then
echo "请输入要创建的目录路径:"
read dname
mkdir -p $dname
echo "sucess!">>"$dname/b.txt"
else
echo "00"
fi
将本机文件复制到远程服务器上
#scp /home/administrator/news.txt
[email protected]:/etc/squid
/home/administrator/ 本地文件的绝对路径
news.txt 要复制到服务器上的本地文件
root 通过root用户登录到远程服务器(也可以使用其他拥有同等权限的用户)
192.168.6.129 远程服务器的ip地址(也可以使用域名或机器名)
/etc/squid 将本地文件复制到位于远程服务器上的路径
https://www.cnblogs.com/wanqieddy/archive/2012/08/02/2619928.html
数据库定时备份
which mysqldump找
https://www.cnblogs.com/xcxc/archive/2013/01/30/2882840.html
$UID:输出执行当前shell用户id,id=0为root
#!/bin/bash
##mysql backup shell
##年月日 时间毫秒
BACKUP_DIR=/data/backup-mysql/`data + %Y%m%d%s`
MYSQLDB=mysql
#!/bin/bash
##mysql backup shell
##年月日 时间毫秒
BACKUP_DIR=/data/backup-mysql/`data + %Y%m%d%s`
MYSQLDB=mysql
MYSQL=root
MYSQLPWD=123456
MYSQLCMD=/usr/bin/mysqldump
#1、检测当前是否为root用户
if [[ $UID -ne 0 ]];then
echo "must be root"
exit
fi
#2、检测目录是否存在
if [[ ! -d $BACKUP_DIR ]];then
mkdir -p $BACKUP_DIR
echo "目录创建成功"
else
echo "目录已存在"
fi
#3、开始备份数据库
$MYSQLCMD -u$MYSQLUSER -p$MYSQLPWD $MYSQLDB > $BACKUP_DIR/$MYSQLDB.sql
#4、结果输出
if [[ $? -eq 0 ]];then
echo "Mysql backup success!"
else
echo "backup error!"
fi
定时
crontab -e:分时日月周
0 0 * * * /bin/bash /opt/shell3.sh
1 * * * * ll
crontab -l -u root
列出root用户定时任务
https://www.cnblogs.com/longjshz/p/5779215.html
while用法
#!/bin/bash
while read line
do
echo "读取ip:$line"
done < /opt/iplist.txt
例如下面脚本自动执行mariadb和php安装
#!/bin/bash
echo "是否安装mariadb(y/n)"
read yes_or_no
if [[ $yes_or_no == 'y' ]];then
yum -y install php
echo "Mariadb安装成功!"
else
echo "不进行Mariadb安装!"
echo "是否进行PHP安装(y/n)"
read yn
if [[ $yn == 'y' ]];then
yum -y install php
echo "php安装成功!"
else
echo "不进行php安装"
fi
fi
sed命令的使用
sed -i '1,$d' file
http://blog.csdn.net/xifeijian/article/details/9209655