IT运维人员追女友必备神器之运维开发实战程序案例

本内容选自《跟老男孩学linux运维:Shell高级编程实战》一书之浪漫美妙Shell工具程序案例。

首发于“我是老男孩”,顶尖运维专家公众号,可到文末扫码关注更多文章。

(一)功能简介

作为IT人员,给同事的感觉呆板,不会会浪漫,不懂情趣。其实不然,我们可以用我们的技能创造出IT人员独有的浪漫。girlLove脚本就可以实现IT人员的浪漫。girlLove本质上是一个简易的问答系统,通过设置不同的问题和答案来实现“浪漫”效果。读者通过改写该脚本,可以很轻松的实现一个基于Linux终端的调查系统或考试系统等。

girlLlove脚本可以展示如下几个部分:文字特效(poetry),问题(question),问题选项(bakans),答案(answer)和提示(tips)。这些内容都保存在shell数组(girlLove.txt文件)中,并且是一一对应的关系,在主程序girlLove.sh中通过while循环一个一个的展示出来。以上各部分的具体内容都可以在girlLove.txt文件中设定,设定的选项数量和用户的屏幕相关,如果读者显示屏幕过小,则选项数量多了有可能产生位置偏移等影响。

除了girlLove外,老男孩也会讲解如何利用运维思想追女友的课程(精品免费视频),看过所有小伙伴都说收获很大。

《跟着老男孩学习如何运用运维思想追到心仪的女朋友》

http://edu.51cto.com/course/course_id-5907.html

(二)使用方法

[[email protected] ~]# tar xf girlLove.tar.gz   #<==获取到工具软件包,解压。

[[email protected] ~]# cd girlLove/

[[email protected] girlLove]# tree

.

├── girlLove.sh   #<==实现脚本

└── girlLove.txt  #<==特效及问答模板

0 directories, 2 files

[[email protected] girlLove]# sh girlLove.sh lili #<==结果展示见下文。

提示:解压之后,也可以编辑girlLove.txt设置自己的问题,问题选项,答案和提示,注意girlLove.txt内容的字符串格式,也需要有语法的。

(三)程序结果展示(是动画呦)

如果手机看不清,可以用电脑看,记得改改模板,使用呦,IT人必须要很浪漫呦!

(四)程序内容模板

提示:只需修改这个文件就可以为己所用了!

这部分内容以girlLove.txt文件呈现,本质上这个文件也是一个shell脚本,因此读者改动时请注意格式,下面是girlLove.txt文件内容展现。

老男孩追求女朋友问答模板(已经经过实战了的,很有效呦!)

#老男孩追求女朋友的浪漫模板

#文字特效(poetrys)

poetrys=(

"                                 " \

"㊣━━^-^o中华人民共和国o^-^━━㊣  " \

"┃ 谨祝:                      ┃  " \

"┃   $name 小盆友 天天开心!        ┃  " \

"┃                老男孩 颁 ┃"\

"㊣━━^-^o中华人民共和国o^-^━━㊣" \

"                                 " \

"嘟嘟oοО○●哇靠!!!快让开】" \

"  ╭══╮亲亲!开车罗\`坐好啊" \

" ╭╯五档║老公!开慢点\`我兴奋  " \

" ╰⊙═⊙╯。oо○ 轧死了不赔!" )

#问题集合(question)

questions=(

"1、坐在你旁边的是你什么人?" \

"2、你男朋友老家是哪个地方的?" \

"3、你男朋友会做下列哪种饭?" \

"4、丽丽最爱看下列哪一个电视剧?" \

"5、你男朋友最喜欢吃什么?" \

"6、你男朋友休闲的时候最喜欢干什么?"\

"7、休闲时你最喜欢他陪你做什么" \

"8、今年的生日礼物你最想要啥?" \

"9、你计划啥时候和他一起领证?" \

"10、领证后你想去哪度蜜月?" \

"11、结婚后,你希望财务归谁管?(最后一道题了)")

#问题选项(bakans)

bakans=(

"A.男朋友 B.普通朋友 C.男闺蜜 D.以上都不是" \

"A.铁岭 B.沈阳 C.四平 D.以上都不是" \

"A.蛋炒饭  B.鸡蛋羹 C.煮米饭  D.以上都是" \

"A.电视剧  B.电影  C.话剧 D.二人转  " \

"A.大葱  B.白菜  C.排骨  D.辣椒  " \

"A.打台球  B.看书  C.睡觉  D.听歌  " \

"A.看电视剧  B.逛街  C.旅游  D.一起起床  " \

"A.钻戒  B.手机  C.包  D.高跟鞋  " \

"A.6个月内  B.12个月内  C.24个月以内  D.没想好  " \

"A.马尔代夫  B.巴厘岛  C.海南三亚  D.去大城市铁岭  " \

"A.老公  B.老婆  C.共同管理  D.没想好  ")

#问题答案(answers)

answers=( A A A A A A A A A A A)

#问题提示(tips)

tips=(

"Dear,选A啊,妹子啊 555.." \

"Dear,选A啊,大城市铁岭,你该知道的!" \

"Dear,选A啊,蛋炒饭是老男孩拿手的呦!" \

"Dear,选A啊,肯定是电视剧,我比你清楚哦" \

"Dear,选A啊,绝对是大葱,你比我还清楚哦" \

"Dear,选A啊,台球啊,哥打台球时老帅了" \

"Dear,选A啊,我陪你做你最喜欢的..." \

"Dear,选A啊,钻戒必须的,而且是1克拉的"\

"Dear,选A啊,这么好的男朋友,要抓住啊." \

"Dear,选A啊,马尔代夫不是你的愿望么?" \

"Dear,选A啊,老公不但会赚钱,还会理财呦!")

20.1.5girlLove工具Shell源码注释

#!/bin/sh

# by oldboy training.

# http://oldboy.blog.51cto.com

girlname="$1"

pos_stdy="$(($(stty size|cut -d‘ ‘-f1)/3*2))"

pos_stdx="$(($(stty size|cut -d‘ ‘-f2)/2))"

total_stdy="$(($(stty size|cut -d‘‘ -f1)))"

total_stdx="$(($(stty size|cut -d‘‘ -f2)))"

logo="本节目为北京老男孩IT教育出品,祝天下所有有情人钟情眷属!"

good="${girlname},你太棒了,完美答对!"

decl="这辈子最疯狂的事,就是爱上了你,我会好好爱你的,请让我守候你一辈子!"

info="亲,$girlname, 这是我送给你的最特别礼物,请选择A-D并按下回车开始答题吧."

head="答题进度:"

[ -f ./girlLove.txt ]||exit 1

. ./girlLove.txt

function usage(){

echo $"Usage:$0 mm_name"

exit 1

}

function start(){

# 设置红色背景

printf "\e[40m"

# 清屏

clear

printf "\r\e[10;30H\E[33m${logo}\E[0m\n"

sleep 2

printf "\r\e[10;30H\E[33;5m${logo}\E[0m\n"

sleep 2

printf "\e[40m"

clear

}

function print_xy(){

if [ $# -eq 0 ]; then

return 1

fi

len=32

if [ $# -lt 2 ]; then

pos="\e[${pos_stdy};$((${pos_stdx} - ${len}))H"

fi

case "$2" in

-)

pos="\e[$((${pos_stdy} - $3));$((${pos_stdx} - ${len}))H"

;;

+)

pos="\e[$((${pos_stdy} + $3));$((${pos_stdx} - ${len}))H"

;;

lu)

pos="\e[$((${pos_stdy} - $3));$((${pos_stdx} - $4))H"

;;

ld)

pos="\e[$((${pos_stdy} + $3));$((${pos_stdx} - $4))H"

esac

echo -ne "${pos}$1"

}

function waiting(){

local i=1

# 通过while循环实现///转圈的动画效果

while [ $i -gt 0 ]

do

for j in ‘-‘ ‘\\‘ ‘|‘ ‘/‘

do

# 打印前面若干个/特效符号+decl变量中的内容

echo -ne"\033[1m\033[$pos_stdy;$((${pos_stdx}/3))H$j$j$j\033[4m\033[32m${decl}"

# 打印后面若干个/特效符号

echo -ne"\033[24m\033[?25l$j$j$j"

# 打印前面若干个/特效符号+good变量中的内容

echo -ne "\033[1m\033[$(($pos_stdy-2));$((${pos_stdx}/3))H$j$j$j\033[4m\033[32m${good}"

# 打印后面若干个/特效符号

echo -ne"\033[24m\033[?25l$j$j$j"

usleep 100000

done

((i++))

done

}

function print_info(){

# 打印如下字符串(格式化界面)

print_xy"*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*"

print_xy"\E[33m${info}\E[0m"  + 1

offset=20

seq=0

# 循环问题

while [ ${seq} -lt ${#poetrys[@]} ]

do

sleep 0

isanswers=0

# 打印问题

print_xy "${questions[$seq]}" ld 2 $offset

print_xy "${bakans[$seq]}" ld 3 $((${offset}-2))

print_xy "答:" ld 4 $offset

# 读取终端输入到变量ans

read ans

echo -e "\033[3A\r\033[K"

# 清除问题选项行字符

echo -e "\033[K"

# 清除回答栏字符

echo -e "\033[K"

# 如果输入的值和预设的答案不同,则继续循环该问题

if [ "$ans" != "${answers[$seq]}" -a "`echo$ans|tr a-d A-D`" != "${answers[$seq]}" ]; then

# 打印 -----,格式化界面。----- 下面会显示该问题的tip

print_xy"-----------------------------------------------------" + 5

# 显示该问题的tip

print_xy "${tips[$seq]}" + 7

sleep 3

# 将光标移到行首,并清除光标到行尾的字符

echo -e "\r\033[K"

# 光标上移3行,并清除光标到行尾的字符

echo -e "\033[3A\r\033[K"

continue

fi

# 问题序号 + 1

seq=`expr ${seq} + 1`

# 获取poetrys的倒数第seq + 1行

curseq=`expr ${#poetrys[@]} - ${seq}`

# 打印poetrys的倒数第seq + 1行

print_xy "${poetrys[${curseq}]}" lu $seq $offset

# 打印进度条

total=$[${total_stdx} - ${#head}*10]

per=$[${seq}*${total}/${#poetrys[@]}]

shengyu=$[${total} - ${per}]

printf"\r\e[${total_stdy};19H${head}\e[43m%${per}s\e[41m%${shengyu}s\e[00m""" "";

done

printf "\r\e[$((${total_stdy}));19H \E[33m     恭喜我心中最美的${girname}全部答对\E[0m";

# 设置红色背景

printf "\e[41m"

# 清屏

clear

}

function main(){

if [ $# -ne 1 ]; then

usage

fi

start

clear

print_info

waiting

}

main $*

提示:此案例已收录至《跟老男孩学linux运维:Shell高级编程实战》一书,本书预计于2016年12月底或1月初出版。本文系根据原作者fork兄弟的shell程序扩展而来。

老男孩教育的第三本书精品书籍,《跟老男孩学习Linux运维:精通linux三剑客》即将出版,敬请期待!

加群linux运维专家2000人Q384467551(最后100个人名额) 获取本文源码文件包,也去浪漫一发啊,不会写改改文本文件总会吧?请加群务必注明来自51CTO博客。

扫码或点击开头的蓝色字关注更多最新文章!

时间: 2024-12-25 19:15:20

IT运维人员追女友必备神器之运维开发实战程序案例的相关文章

运维人员为什么需要必备IDC智能管理工具?

身处智能时代,数据与流量是大多数企业尤为看重的指标.这不仅仅意味着获得了曝光量的多少,更是间接决定了企业的生存概率的大小.然而这一切都由IDC来做背后支撑,每个IDC都身负重担,对广大客户负责,也要对自身企业发展着想.为满足各人群的需求,首先IDC企业不得不对的硬件设备及资产进行管理方案研究,主要以更新及维护机房硬件设备为方向,因机房机柜.服务器等设备的数量繁多,加上繁杂的操作过程,最终导致难以管控,而普遍存在运营效率低下问题. 其次在于好的产品不仅覆盖广,多样性,更需要良好的用户体验.客户不仅

Linux程序员福利 - 追女友神奇(Linux终端运行炫酷程序)

概述 作为IT人员,给同事的感觉呆板,不会会浪漫,不懂情趣.其实不然,我们可以用我们的技能创造出IT人员独有的浪漫.girlLove脚本就可以实现IT人员的浪漫.girlLove本质上是一个简易的问答系统,通过设置不同的问题和答案来实现"浪漫"效果.读者通过改写该脚本,可以很轻松的实现一个基于Linux终端的调查系统或考试系统等. 详细 代码下载:http://www.demodashi.com/demo/12738.html 一.功能简介 作为IT人员,给同事的感觉呆板,不会会浪漫,

【IT运维监控】集团宕机引发对运维人员的思考 

前不久某大型集团官网和APP突然无法正常使用引发热议,不少人幸灾乐祸,也引发出了各种的谣言和段子,根本难以体会集团内部所受的压力,特别是作为一个大集团内部的运维人员所承受的各种压力和不安. 后 来,原支付宝运维团队负责人针对此事发表了一篇文章,让不少的运维人员深有感触,作为肩负运维监控使命的运维监控工具--PIGOSS BSM 也同样感同身受.面对层出不穷的运维安全隐患,当下运维人员急需一套高效的7*24小时都能担负监控任务的工具,为自身的运维工作减负,告别之前加班熬夜 但没有工作成绩的"怪现像

【IT运维监控】讨论哪种运维监控工具才是IT运维人员的最爱?

选择运维工具的几大要素:一是看我哪些指标需要监控,二是看我监控到什么 三是看这种运维监控工具能监控到什么程度 有可能,这几个问题IT运维人员自己都没有弄的很明白,那么我们先看一下整个运维行业目前的现状: 目前来说,传统企业的IT运维大部分还是用户在使用过程中发现故障,然后通知运维人员,再邮运维人员确定是什么问题,采用哪种方式可以解决.大部分的运维人员目前还是充当的只是一个救火员的身份,没有起到真正的IT运维监控的作用.运维人员的大部分时间和经历都花在了处理简单而重复的问题上,导致同事及领导的不满

关于对GoldenGate运维人员的职业能力要求

由于GoldenGate 是运行在 database 之上的软件,因此,这个性质也就决定了GoldenGate 很类似于应用软件(比如各行各业的应用软件,erp ,his等等) 再加之GoldenGate 是跟database 密切相关的,因此 ,对GoldenGate运维人员的要求如下: 1. 有应用软件开发与维护经历,2-3年 2. 有各类database的维护经历,2-3年. 上面的2-3年只是大概时间,不排除有的哥们出师很快,1年啥都能搞定. 当使用GoldenGate完成数据迁移时,丰

大型运维知识体系与Python高效自动化运维免费沙龙活动

2015-10-17(周六 下午13:30)大型运维架构运维知识体系讲座 2015-10-18(周日下午13:30)Python运维自动化讲座 以上内容全免费,回馈网友!极其难得的饕餮盛宴! ================================ 大型电商平台架构演变及大型运维知识体系免费讲座 2015-10-17(周六 下午13:30) 主题1:大型电商平台架构演变及大型运维体系知识讲解 内容简介: 通过一个电商网站的架构演变来阐述一个相对完整的<大型运维架构知识体系>.该运维体系

IT人员必备linux安全运维之Ssh用途、安全性、身份认证以及配置……【转】

SSH一般用途 提供shell,解决telnet不安全的传输 1.修改默认ssh默认端口 vi /etc/ssh/sshd_config 修改之后重启 >systemctl restart sshd SSH安全性和配置最佳实践 1.配置root无法shh登陆 > vi /etc/ssh/sshd_config 配置完成后,重启ssh服务 在连接就不生效了,提示拒绝密码 2. SSH访问控制(限制网段) vi /etc/hosts.deny 拒绝所有 连接不上 拒绝192.168.1网段ssh

Rsync为何会是运维人员必备技能之一?

Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具,也是运维人员必备技能之一.那Rsync有什么特点使得它有如此的地位呢? 1.Rsync有啥特性? 1)支持拷贝特殊文件,比如连接文件.设备等 2)排除指定文件或目录同步,相当于打包命令的tar的排除 3)保持源文件或目录的权限.时间.软硬链接.属主.组等所有属性均不改变-p 4)增量同步,即只同步发生变化的数据,数据传输效率高,tar -N 5)使用rcp,rsh,ssh等方式来配合传输文件 6)可通过

LINUX运维人员必备

LINUX运维人员必备(入门级) 什么是linux? 首先,开始我们介绍一下我们的电脑/服务器运行的一些原理 我们人是如何使用电脑的呢,我们是通过使用操作系统,让我们的电脑可以满足我们的一些需求,我们通过键盘鼠标打开一些软件开始使用,而软件通过解释器翻译给内核,而后内核告诉CPU,CPU通过调用内存.硬盘中的数据达到我们的需求,最后通过显示器,执行结束,这边是电脑/服务器使用的原理,而我们的操作系统就是其中的软件+解释器+内核, 可能大家都听过Windows系统,家喻户晓,基本每家每户有电脑的人