OpenStack 环境下 SHELL 编程练习(持续更新中)

须知:

1、本次 Shell 主要是针对于 OpneStack 环境下的编程练习

2、欢迎大家留言讨论

3、持续更新

练习1:将文件内容打印输出到屏幕上,并在每一行前面加上字符串“nova delete ”,示例如下:

文件内容为:

aaaa

bbbb

cccc

屏幕上输出为:

nova delete aaaa

nova delete bbbb

nova delete cccc

#!/bin/bash
#文件功能:文件内容打印输出到屏幕上,并在每一行前面加上字符串“nova delete ”
WORK_PATH="/root/gsd/shell"
function method1()
{
for i in `cat $WORK_PATH/file1`
do
  echo "nova delete "$i
done
}
function method2()
{
 sed   ‘s/^/nova delete /g‘ $WORK_PATH/file1
}
method2

练习2:创建一台虚拟机,并将此虚拟机的id、所在物理机、创建时间输出到文件里

#!/bin/bash
#文件功能:创建一台虚拟机,并将此虚拟机的id、所在物理机、创建时间输出到文件result里
WORK_PATH="/root/gsd/shell"
#声明环境变量
source /root/.admin-openrc.sh
#判断日志文件是否存在
LOG_FILE=$WORK_PATH/instance.log
if [ ! -f $LOG_FILE ];then
  touch $LOG_FILE
  printf "%-40s%-15s%-25s%-10s%s\n" "UUID" "NAME" "CREATE_TIME" "NODE" "VNC" > $LOG_FILE
fi
#虚拟机类型
FLAVOR=2C4G
#子网ID
NET_ID=141247b7-30cc-49ca-a485-578ce3d4ece2
#镜像ID
IMG_ID=e7348615-8de4-49e6-8466-794ed4572df4
#磁盘类型
SOURCE=image
#存储位置
DEST=volume
#存储大小
VOLUME_SIZE=20
#虚拟机名称
NAME=gsd-vm3
UUID=
CREATE_TIME=
NODE=
NOVNC=
VM_STATUS=
create()
{
  UUID=`nova boot --flavor $FLAVOR --nic net-id=$NET_ID --block-device source=$SOURCE,id=$IMG_ID,dest=$DEST,size=$VOLUME_SIZE,shutdown=preserve,bootindex=0 $NAME |grep -w ‘id‘|awk ‘{print
$4}‘`
  if [ $? -ne 0 ]; then
      echo "the instance create fail"
      exit
  else
      echo "the instance create success"
  fi
}
info()
{
  CREATE_TIME=`nova show $UUID|grep -w "created"|awk ‘{print $4}‘`
  NODE=`nova show $UUID|grep -w "OS-EXT-SRV-ATTR:host"|awk ‘{print $4}‘`
  NOVNC=`nova get-vnc-console $UUID novnc |grep ‘http‘|awk ‘{print $4}‘`
  printf "%-40s%-15s%-25s%-10s%s\n" "$UUID" "$NAME" "$CREATE_TIME" "$NODE" "$NOVNC" >> $LOG_FILE
}
create
echo "Please wait...."
sleep 20s
info
echo "DONE"

原文地址:https://www.cnblogs.com/yueshang/p/9786170.html

时间: 2024-10-10 01:01:41

OpenStack 环境下 SHELL 编程练习(持续更新中)的相关文章

javascript编程规范(持续更新中...)

缩进 每个层级由4个空格组成,避免使用Tab 行的长度 每行长度不超过80个字符,如果一行多于80个字符,应当在一个运算符(逗号,加号等)后换行.下一行应当增加两级缩进(8个字符). 原始值 字符串始终使用双引号(避免使用单引号)且保持一行.避免在字符串中使用斜线另起一行. 数字应当使用十进制整数.科学计数法表示整数,十六进制整数,或者十进制浮点小数,小数点前后应当至少保留一位数字.避免使用八进制直接量. 特殊值null除了下述情况下应当避免使用. a)       用来初始化一个标量,这个变量

Linux下Shell编程

Linux的shell编程 1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序.一般的Linux系统都将bash作为默认的shell. 2.几种流行的shell 目前流行的shell有ash.bash.ksh.csh.zsh等,可以用下面的命令来查看she

Linux下shell编程实例

1. 判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录下 read -p "input a file:" filename if [ -b $filename -o -c $filename ] then cp $filename /dev/ fi 2.编写一个脚本,进行简单的减法运算,要求提示输入变量 #!/bin/bash read -p "input a number:" num1 read -p "input another nu

编程积累(持续更新中)

1.程序员之路——一个老程序员对刚上大学的学弟学妹的忠告 2.你必须知道的.NET 3. 编程积累(持续更新中)

shell 常用文件、字符串、二元整数测试操作符-持续更新中

常用的文件测试操作符-持续更新中 -e--exist 文件存在为真 -f--file 文件存在且为普通文件为真 -d--directory 文件存在且为目录为真 -s--size 文件存在且大小不为零为真 -r--read 文件存在且可读为真 -w--write 文件存在且可写为真 -x--executable 文件存在且可执行为真 -L--link 文件存在且为链接文件则为真 f1 -nt f2--new than f1比f2新则为真 f1 -ot f2--old than f1比f2旧则为真

资源向导之 JOS 计划 #持续更新中# MIT 6.828

JOS 计划 #持续更新中# 童鞋,上网要科学上网,做lab也要科学的做. 之前我一上来就做实验,很多资料都不知道.现在打算重新来过 方法: 0.xv6源码不要用MIT官网的那份,我的主机是Linux/Ubuntu 14.0各种编译error,我都改的想吐.后来直接用github上别人改好的,直接能跑起来没有编译错误的xv6. 1.按照MIT给出的课程安排表,每一次课的相关lecture必须全部过一遍. 2.要求的课堂作业必须完成,很多时候课程要求的任务是很轻松的,只要修改部分代码就行了.这里我

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与目录(持续更新中...)

演示地址 帐号:admin 密码:admin123 请不要删除用户避免他人无法体验(文章中已经附带源码,源码开放到17讲下载) 快捷地址(QQ群37509873也有相应的下载):   第2讲源码下载  密码:wg0i 最新代码生成器+17讲源码下载 密码:n2ji SwfUpload在MVC4下多文件上传 密码:0ntz 也可以有偿获取一份最新源码联系QQ:729994997价格500 -------------------------------------------------------

Android 系统中,那些能大幅提高工作效率的 API 汇总(持续更新中...)

前言 "条条大路通罗马."工作中,实现某个需求的方式往往不是唯一的,这些不同实现方式不仅表现在代码质量上,还影响着我们的工作效率.就像,在 Android 系统中,总有那么一些鲜为人知的 API 能够减少我们很多零碎的工作量.于是,就想凭着一些经验,整理一些常用的,找个地方归纳总结,也供日后翻阅. getResources().getIdentifier(String name, String defType, String defPackage) 根据资源名称获取资源 id.正常情况

【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)

Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包含:数组类.浏览器类.日期类.函数类.数学类.媒体类.节点类.对象类.字符串类.类型检测类.正则表达式类等内容. 使用方法 1. 引入Bable transpiler以保证支持ES6 <script type="javascript/text" src="./browser