现在“Devops”开发型运维可以说是非常火,对于运维来说,前面加一个开发型的意义是什么呢?我也搞不太清楚,就知道要求更高了。个人理解“开发型运维”最起码的几点就是做到运维自动化,提高工作效率,同时减少人工操作带来的错误率等等。这不是一篇谈开发型运维的文章,言归正传,对于自动化运维来说,给我们运维人的第一个感觉就是小公司用不上(或开源软件)只有大公司才需要(开源加自主开发)。其实对于自动化运维的理解可小可大,无非就是小公司就简单点,大公司就复杂点。比如:写一个脚本来处理一系列工作也算自动化了、在一个脚本之上再做出简单web界面也算自动化、把脚本+web根据业务写的复杂最后包装成一个程序也是自动化(可扩展性、通用性、美观性)。
做Linux运维的基本都会利用Shell脚本来处理日常工作,如果你在Shell脚本的基础上简单加工一下变成一个可web化执行的是不是逼格更高了呢?当然逼格只是我们精神上的追求,同时对于实用性也是有很多的。这样的一个简单的web+脚本能做什么呢?
1)简单日志查询
2)故障处理(有没有半夜开电脑连接服务器去处理经常碰到的一个故障)
3)可移动设备操作
自定义脚本操作的绝大部分操作都可以通过web来处理,同时练习这样的小程序理解每个点之间的操作逻辑,对于进军开发运维又进了一步。
下面提供一个最简单的web自动化,就是可以在前端页面点击,然后后端执行即可。本案例是使用HTML+PHP+Shell实现的一个简单web自动化。
前端可接受参数查询日志,web端效果如下:
下面分别来了解一下HTML+PHP+Shell这三个部分代码,如下:
HTML部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<title>日志查询</title> <html> <body><form action="all.php" method="post"> <b>游戏角色的详细日志查询</b> <select name="worldid" > <option value="1">第一游戏 <option value="2">第二游戏 </select> 游戏角色:<input type="text" size=8 name="charaid"/> 开始日期:<input type="text" size=5 name="startdate"/> 结束日期:<input type="text" size=5 name="enddate"/> <input type="submit" name="submit" value="提交"/>(如2015年11月25日,应输入151125) </form> </body> </html> |
PHP部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php $w=$_POST["worldid"]; $c=$_POST["charaid"]; $s=$_POST["startdate"]; $e=$_POST["enddate"]; ?> <pre> <?php if($w==1){ echo "<br>"; echo system("/usr/bin/ssh root@58.10.20.12 '/home/log/lookup.sh $c $c $w $s $e'"); echo "<br>"; } elseif($w==2){ echo "<br>"; echo system("/usr/bin/ssh root@58.10.20.13 '/home/log/lookup.sh $c $c $w $s $e'"); echo "<br>"; } ?> <pre> |
Shell部分
1 2 3 4 5 6 7 |
#!/bin/bash # for((i=$4; i<=$5; i++)) do zgrep -h -w "$2" /var/game/log/$i/* >> /tmp/$2.txt done cat /tmp/$2.txt |
PS:前端通过选择第一游戏或第二游戏,然后输入游戏角色ID,输入要查询的开始日期和结束日期,开始查询。通过PHP把我们输入的参数都传给后端Shell脚本执行。
如果是做一个故障处理的界面呢?其实原理是一样的。只是修改部分参数即可。
这里要注意:
PHP上的httpd服务器的默认运行账号要更改,这里使用什么账号就需要使用此账号跟远程主机的ROOT进行连接,也就是使用此账号生成公钥和私钥,然后把公钥传到远程主机root的家目录下。
我这里HTML+PHP服务器上使用log账号运行HTTPD服务器,然后使用log账号生成私钥和公钥,最后把log生成的公钥传给58.10.20.12/13主机的root目录。为什么要这么做呢?因为这个PHP脚本是HTTPD调用的,所以运行HTTPD的账号来运行这个PHP脚本运行这条指令”/usr/bin/ssh root@58.10.20.12”,所以也就是说需要log账号去连接远程主机。