lena萌宝宝

导航

shell脚本视频学习2

 

shell总结:
shell目标:
1.Linux命令熟悉
2.能够自动部署测试环境(mysql/nginx/项目)
3.面试用
shell内容:
变量:变量名=变量值
等号两边不能有空格
变量名不能为数字开头、字母、数字、下划线组成
特殊变量定义:双引号、单引号、反单引号
变量值输出:echo $变量名
变量释放:unset 变量名
输入操作:
read 变量名 变量名 变量名----->变量名之间用空格隔开
read -p “提示信息” 变量名  read -p "请输入用户名:"user

参数传递:向.sh文件传递数据
$1/$2/$3....
$0--->文件名
$@--->所有参数
$#--->参数个数
重定向:
将结果输出到文件中
正确的命令: 用1表示, 命令 1>文件名 ,命令 1>>文件名
错误的命令:用2表示, 命令 2>文件名 ,命令 2>>文件名
程序结构
分支:
if...else分支:注意:if和[之间有空格、条件和中括号之间有空格、条件和条件之间有空格,条件中存在变量,变量名两边使用双引号
逻辑运算符: -a / -o / !
比较运算符:-eq/-ne/-ge/-gt/-le/lt
字符串比较: == !=
test 参数 变量名
参数 变量名
if...elif...else分支
case分支:
第一行最后必须为in
语句结束;;
值:可以字符串、数字、可以是区间范围[0-9]
结束:esac
循环
for循环
seq start size max---->分别表示开始点、步长、结束点
while循环

变量的变化:i=i+1---->表示的形式
多个变量间操作------>表示的形式
函数
定义:函数名(){}
调用:函数名 ----》必须先定义再调用
函数传参:用$n来接收传递的数据
函数的返回值:默认都有一个默认的返回值,正确(无错误命令)的函数---->返回值默认为0,错误的命令--->返回值默认为1,查看函数的返回值:$?

自动化部署实战:oracle的部署过程
涉及知识点:
查看文件中的前n条数据:head -n head -5 passwd|cut -b 1-2,4 取出passwd中前5行的1到2和第四个字母
在文件中查看内容:grep "内容" 文件名  

剪取文件中的内容:cut   grep "dba" /etc/group|cut -d ":"-f 1查找一个文件中有dba的第一个域

cut:
按照字节进行剪取---->空格:1个字节,字母、数字:1个字节,汉字:3个字节-----> 参数 : -b
按照字符剪取----->空格、数字、字母、汉字:1个字符---->参数: -c
按照域剪取-----> -d:表示使用的分隔符, -f:要剪取的第几个域

向文件中插入内容 sed -i "行号a内容"文件名 向文件中插入内容

sed -i "行号a内容" 文件名  
sed -i "行号i内容" 文件名
部署:
通过函数之间的相互调用实现
(先脚本文件时,先流程图,再脚本

 

一。函数

1.函数格式

2.函数传入参数

3.手动输入函数中的参数

  

 

4.函数返回值

成功返回0,失败返回1

 

5.输入一个目录,判断目录是否存在,如果不存在则给出提示,如果存在则提示输入要创建的文件名,判断创建的文件是否存在,如果不存在,则继续创建,否则提示该文件已经存在

 

二。自动化部署实战--先画流程图,把配置封装成一个函数,后面来调用

知识点:cut 截取内容  ;sed 插入内容

cut -b 按照字节剪裁(一个空格和一个字母是一个字节) 。-c表示按照字符截取(一个汉字和一个空格是一个字符)。-d剪去的分隔符  -f截取第几个

head -5 passwd|cut -b 1-2,4 取出passwd中前5行的1到2和第四个字母

pwd|cut -3,3- 截取相同的内容会去重

pwd|cut -c 1-2 截取前2个字符

head -5 passwd|cut -d ":"-f 1按照冒号进行截取,取的第一个域

grep "dba" /etc/group|cut -d ":"-f 1查找一个文件中有dba的第一个域

sed -i "行号a内容"文件名 向文件中插入内容

 

需要完成以下需求:

1、确定当前登录的是超级管理员 root 用户,如下内容都是在 root 下面进行的操作。

依 次执行命令:

 [groupadd  dba]----------------------------------------新建管理组

 [groupadd  oinstall]------------------------------------新建安装组

 [useradd  tester  -g  oinstall  -G  dba]----------新建用户,用户录属于 dba 和 oinstall      [passwd  tester]------------------------------------------修改用户密码

2、继续利用 root 用户建立安装目录并分配权限。分别执行如下命令

[mkdir -p /oracle/product/10.2.0/db_1]-----------------------------------新建 oracle 安装目录 [chown  -R  tester.oinstall  /oracle]---------修改 oracle 安装目录属主和属组

[chmod  755  -R  /oracle]--------------------修改 oracle 安装目录操作权限

如下图所示:

3、注销当前 root 用户(建议注销,不用 su 命令置换),再用刚才新建的 tester 用户登录 系统。进入当前用户的根目录执行命令[vi  ./.bash_profile],打开用户环境变量列表,插入 如下内容:

ORACLE_BASE=/oracle

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

ORACLE_SID=orcl

4、进入文件后,单击[i],开始修改,修改完成后保存退出(ESC---冒号---wq),执行命 令[source  ./.bash_profile],使修改生效,此时你可以利用命令[echo  $ORACLE_BASE]或 [echo  $PATH]命令查看刚才的设置内容

--------------------------------------------------------------------------------------------------------------------

 vi oracle1.sh 部署前准备

#!/bin/bash
editenv()
cd/home/tester
#向文件中插入内容
sed -i "ORACLE_BASE=/oracle"./bash_profile
sed -i "ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1"./bash_profile
source ./bash_profile
if ["$ORACLE_BASE" == "./oracle"]
then
echo"环境变量配置成功"
else
echo"环境变量配置失败"
fi

createdir()
mydir= "/oracle/product/10.2.0/db_1"
mdkir -p $mydir
if [-d "$mydir"] 如果存在目录
then
echo"目录创建成功"1>>/data/lesson2/a.txt #重定向到日志中
chown -R tester.oinstall /oracle
chmod 755 -R /oracle
editenv #调用editenv
else
echo"目录创建失败"2>>/data/lesson2/error.txt
fi
createuser()
useradd tester -g oinstall -G dba
#用户创建成功后会添加到/etc/passwd文件中
finduser = grep "tester" /etc/passwd|cut -d ":" -f 1
if ["finduser" == "tester"]
then
echo"用户创建成功"
passwd tester#修改密码
echo"密码修改成功"
createdir
else
echo"用户创建失败"
fi
creategrp#定义创建组的函数
groupadd dba
finddba= grep "dba" /etc/group|cut -d":" -f 1 #先判断组文件是否有这个用户(cut用于截取文件中的内容),如果有,则已经存在不管,如果没有,则需要创建
if["finddba" == "dba"]
then
echo "管理组创建成功"
groupadd oinstall #创建安装组
findoin= grep "oinstall" /etc/group|cut -d":" -f 1
if["$findoin" == "oinstall"]
then
echo"安装组创建成功"
createuser#调用createuser函数(在前面写)
else
echo"创建失败"
fi
else
ecoo "管理组创建失败"
fi
if ["$USER"=="root"] #判断当前是不是root用户,如果是,则调用新建组的函数,所以上面要先准备好creategrp函数
then
echo "当前用户是root"
creategrp #调用函数
else
echo "当前用户不是root"
fi

 --------------

vi oracle2.sh 开始部署

#!/bin/bash
#定义函数
install()[
cd /tmp
my_file="oracle_10201_database_linux32.zip"
if [-f "$my_file"] 文件是否存在
then
echo"文件存在"
else
echo"文件不存在"
echo"文件正在拷贝中"
cp /mnt/hgfs/share/$my_file/tmp
echo"文件拷贝成功"
fi
echo"文件正在解压中"
unzip $my_file
echo"文件解压成功"
if [-d "database"]
then
echo"文件夹存在"
cd database
./runinstaller #执行
]
else "文件解压失败"
fi

 

 

 

 

 

posted on 2019-06-20 15:43  宝宝萌  阅读(314)  评论(0编辑  收藏  举报