混动工程自动化脚本
【摘要】
#!/bin/bash #************输出可执行任务选项************************echo -e "\033[31m\033[1m"echo ""echo "ScriptName:ChaosBlade"echo "ScriptVersion: V1.0"echo ""echo -e "\033[31m\...
-
#!/bin/bash
-
-
#************输出可执行任务选项************************
-
echo -e "\033[31m\033[1m"
-
echo ""
-
echo "ScriptName:ChaosBlade"
-
echo "ScriptVersion: V1.0"
-
echo ""
-
echo -e "\033[31m\033[0m"
-
# 开启选项高亮显示
-
echo -e "\033[40;32m\033[1m"
-
echo " *** 请输入要执行任务的代号 ***"
-
echo " *** 0.退出程序 ***"
-
echo " *** 1.安装chaosblade ***"
-
echo " *** 2.模拟CPU负载 ***"
-
echo " *** 3.模拟IO负载 ***"
-
echo " *** 4.模拟端口不通 ***"
-
echo " *** 5.模拟丢包 ***"
-
echo " *** 6.模拟网络延时 ***"
-
echo " *** 22.恢复CPU负载 ***"
-
echo " *** 33.恢复IO负载 ***"
-
echo " *** 44.恢复端口 ***"
-
echo " *** 55.恢复丢包 ***"
-
echo " *** 66.恢复网络延时 ***"
-
echo " *** 99.查看任务代号 ***"
-
echo -e "\033[40;32m\033[0m"
-
out=99
-
while ((out != 0))
-
do
-
#*************Model层***************************
-
#开启高亮显示
-
echo -e "\033[40;35m\033[1m"
-
read -p "Please select the task execution code:" id
-
function action()
-
{
-
isNumber $id
-
number=$?
-
if [ $number -eq 1 ];then
-
task_id $id
-
echo "Successful submission code is $id"
-
else
-
echo -e "\033[31m\033[1m"
-
echo "ERROR:请输入正确的任务代号!!"
-
echo -e "\033[31m\033[0m"
-
fi
-
-
}
-
-
#关闭高亮显示
-
echo -e "\033[40;35m\033[0m"
-
-
SOURCE=$(cd $(dirname $0); pwd)
-
TARADDRESS=/usr/local/src/
-
SRCADDRESS=/usr/local/chaosblade
-
EXECUTEADDRESS=/usr/local/chaosblade/chaosblade-0.2.0
-
# 校验用户输入的ID是否正确
-
function task_id()
-
{
-
case $1 in
-
0) echo '您选择了退出程序-->程序已正常退出-->期待您的下次使用☺'
-
out=$id
-
exitcb $id
-
;;
-
1) echo '您选择了安装chaosblade'
-
install
-
;;
-
2) echo '您选择了模拟CPU负载'
-
cpu
-
;;
-
3) echo '您选择了模拟IO负载'
-
read -p "请输入模拟IO的size、count、timeout数值[多参数用空格隔开]:" size count timeout
-
io $size $count $timeout
-
;;
-
4) echo '您选择了模拟端口不通'
-
read -p "请输入需要模拟的端口号:" ports
-
port $ports
-
;;
-
5) echo '您选择了模拟模拟丢包'
-
read -p "请输入模拟的网卡名称interface、丢包percent数值[多参数用空格隔开]:" network lostpk
-
lostpackage $network $lostpk
-
;;
-
6) echo '您选择了模拟网络延时'
-
read -p "请输入网卡名称interface、网络延时时间time(ms)[多参数用空格隔开]:" network delay
-
netWorkDelay $network $delay
-
;;
-
22) echo '您选择了恢复CPU负载'
-
cpuRecovery
-
;;
-
33) echo '您选择了恢复IO负载'
-
ioRecovery
-
;;
-
44) echo '您选择了恢复端口不通'
-
portRecovery
-
;;
-
55) echo '您选择了恢复模拟丢包'
-
lostpackageRecovery
-
;;
-
66) echo '您选择了恢复网络延时'
-
netWorkDelayRecovery
-
;;
-
99) echo '您选择了查看任务代号'
-
taskOption
-
;;
-
*) echo 'erro:请输入任务代号1~7'
-
;;
-
esac
-
}
-
-
#*************Control层***************************
-
# 安装chaosblade 函数
-
function install()
-
{
-
chaosPath
-
existTarFile
-
existTarfilecode=$?
-
executionFile
-
executefilecode=$?
-
-
if [ $existTarfilecode -eq 1 ]; then
-
echoGreen
-
echo "successful:服务已存在无需构建,可以直接使用哦"
-
echoDess
-
else
-
#TODO 将这个下载文件改成本地移动文件到目标位置,与下载文件相比速度更快更稳定。
-
-
cp $SOURCE/source/chaosblade-0.2.0.linux-amd64.tar.gz $TARADDRESS
-
echoGreen
-
echo "-------------------------------------------"
-
echo "服务构建中时间可能较长您可以稍作休息啦^_^"
-
state
-
echo ""
-
echo "-------------------------------------------"
-
echo "服务构建成功,正在启动中>--<"
-
echoDess
-
fi
-
-
if [ $executefilecode -eq 1 ]; then
-
echoGreen
-
echo "-------------------------------------------"
-
echo "File Ready Go of Chaosblade 服务启动成功!!"
-
echoDess
-
else
-
cd $TARADDRESS
-
cp chaosblade-0.2.0.linux-amd64.tar.gz ../chaosblade/
-
cd $SRCADDRESS
-
tar zxvf chaosblade-0.2.0.linux-amd64.tar.gz
-
rm -rf chaosblade-0.2.0.linux-amd64.tar.gz
-
echoGreen
-
echo ""
-
echo "------------------------------------------"
-
echo "File Ready Go of Chaosblade 服务启动成功!!"
-
echoGreen
-
fi
-
}
-
-
#------------------------------
-
# 模拟CPU负载函数
-
function cpu()
-
{
-
cd $EXECUTEADDRESS
-
json=`./blade create cpu fullload`
-
awkjson $json
-
}
-
-
# 恢复CPU负载函数
-
function cpuRecovery()
-
{
-
cd $EXECUTEADDRESS
-
./blade destroy $recoverycode
-
}
-
#------------------------------
-
# 模拟IO负载函数
-
function io()
-
{
-
cd $EXECUTEADDRESS
-
#TODO 执行命令的参数改为接收用户输入的参数
-
json=`./blade create disk burn --write --read --size $1 --count $2 --timeout $3`
-
awkjson $json
-
}
-
-
# 恢复IO负载函数
-
function ioRecovery()
-
{
-
cd $EXECUTEADDRESS
-
./blade destroy $recoverycode
-
-
}
-
-
#------------------------------
-
#模拟端口不通
-
function port()
-
{
-
cd $EXECUTEADDRESS
-
json=`./blade create network drop --local-port $1`
-
awkjson $json
-
}
-
-
#恢复端口不通
-
function portRecovery()
-
{
-
cd $EXECUTEADDRESS
-
./blade destroy $recoverycode
-
}
-
#------------------------------
-
#模拟丢包
-
function lostpackage()
-
{
-
cd $EXECUTEADDRESS
-
json=`./blade create network loss --interface $1 --percent $2`
-
awkjson $json
-
}
-
-
#恢复丢包
-
function lostpackageRecovery()
-
{
-
cd $EXECUTEADDRESS
-
./blade destroy $recoverycode
-
}
-
#------------------------------
-
#模拟网络延迟
-
function netWorkDelay()
-
{
-
cd $EXECUTEADDRESS
-
json=`./blade create network delay --interface $1 --time $2`
-
awkjson $json
-
}
-
-
#恢复网络延时
-
function netWorkDelayRecovery()
-
{
-
cd $EXECUTEADDRESS
-
./blade destroy $recoverycode
-
}
-
-
#*************工具类util***********************************
-
#判断本地src目录是否存在ChaoBlade的tar包
-
function existTarFile()
-
{
-
file="chaosblade-0.2.0.linux-amd64.tar.gz"
-
cd $TARADDRESS
-
# -f 参数判断 $file 是否存在
-
if [ -f "$file" ]; then
-
return 1
-
else
-
return 0
-
fi
-
}
-
-
#判断本地chaosblade目录下是否存在ChaoBlade可执行文件
-
function executionFile()
-
{
-
file="chaosblade-0.2.0"
-
cd $SRCADDRESS
-
if [ -d "$file" ]; then
-
return 1
-
else
-
return 0
-
fi
-
}
-
-
#判断本笃local目录下chaosblade文件夹是否存在
-
function chaosPath()
-
{
-
cd /usr/local
-
chaofolder="chaosblade"
-
if [ ! -d "$chaofolder" ]; then
-
mkdir "$chaofolder"
-
fi
-
}
-
-
#echo输出添加效果
-
function echoGreen()
-
{
-
echo -e "\033[40;32m\033[1m"
-
}
-
-
#echo去掉效果
-
function echoDess()
-
{
-
echo -e "\033[40;32m\033[0m"
-
}
-
-
#时间计时器工具实现等待安装程序进度效果
-
function state()
-
{
-
#TODO 这个循环没有起作用
-
for i in {1..100}
-
do
-
sleep 0.1s
-
echo -ne "当前安装进度######################——> $i \r"
-
done
-
}
-
-
#awk处理json数据获取指定的数据
-
function awkjson()
-
{
-
#需要处理的数据
-
jsoncode=$1
-
echo $jsoncode
-
recoverycode=`echo $jsoncode | awk -F'"' '{print $(NF-1)}'|awk -F "}" '{print $1}'`
-
}
-
-
#退出程序
-
function exitcb()
-
{
-
if [ $1 -eq 0 ]; then
-
break
-
fi
-
}
-
-
#任务列表项显示
-
function taskOption()
-
{
-
# 开启选项高亮显示
-
echo -e "\033[40;32m\033[1m"
-
echo " *** 请输入要执行任务的代号 ***"
-
echo " *** 0.退出程序 ***"
-
echo " *** 1.安装chaosblade ***"
-
echo " *** 2.模拟CPU负载 ***"
-
echo " *** 3.模拟IO负载 ***"
-
echo " *** 4.模拟端口不通 ***"
-
echo " *** 5.模拟丢包 ***"
-
echo " *** 6.模拟网络延时 ***"
-
echo " *** 22.恢复CPU负载 ***"
-
echo " *** 33.恢复IO负载 ***"
-
echo " *** 44.恢复端口 ***"
-
echo " *** 55.恢复丢包 ***"
-
echo " *** 66.恢复网络延时 ***"
-
echo " *** 99.查看任务代号 ***"
-
}
-
-
#判断输入的是否为纯数字
-
function isNumber()
-
{
-
if [ -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ];then
-
return 1
-
else
-
return 0
-
fi
-
-
}
-
#*************init层*********************************
-
action
-
-
done
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/100083126
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)