Linux shell实现HTTP服务示例代码

来源:本网整理

ll|sed '1d'|awk '{printf$NF"\\n"}'|awk-F"."'{printf$2"\\n"}'|awk-F"_"'{printf$NF"\\n"}'|sort-n|tail-1 得到一个值,然后ll|grep(刚刚得到的值)!www.zgxue.com防采集请勿采集本网。

s">

Linux shell实现HTTP服务示例代码

投稿:daisy 字体:[增加 减小] 类型:转载 时间:2016-08-25 我要评论 这篇文章介绍的是如何实现一个可以调用shell脚本的HTTP服务,本文给出了详细的示例代码,有需要的可以参考借鉴。 ">

一、前言

有两种方法: 假设目标为 10ms: 方法1.sleep 0.01 方法2.usleep 10000(usleep为十的负六次方秒,详细见man usleep) 推荐阅读《linux就该这么学》。

使用代理服务器 HAProxy 对 Mysql 做负载均衡是常用方案,为提高可用性,当某个 Mysql 出现问题时,例如服务器故障了,或者数据复制中断了,最好可以让 HAProxy 马上知道,然后停止向其转发请求

实现的功能和上面的一样 ip route add 172.16.6.0/24 via 172.16.2.254 dev eth0 ip route del gw 172.16.2.254 ip route del 172.16.6.0/24 dev eth0 ip route 删除的方法: 添加路由: route add-

HAProxy 如何知道 Mysql 是否有问题呢?

用shell脚本完成第8题和第9题: bin/sh result=home/testuser/output.txt 第8题 echo-n\"Searching files(*.conf). find/-type f-name\"*.conf\">$result sync echo\"done!第9题 echo-n\"Calculating

二、解决思路

使用awk吧:

(1)编写一个shell脚本,检查 mysql 的状态,然后输出结果,例如状态正常时,返回状态码200及正确信息,否则返回状态码503及错误信息

#!bin/sh FILENAME=file.txt#可换为$1 if!f file.txt];then echo\"$FILENAME no found exit 1 fi echo-n\"INPUT SOME THING: read if!z”$REPLY“];then INFO=$(grep$REPLY FILENAME) if!z\"$INFO\"];

(2)实现一个HTTP服务,有请求连接后,调用上面的检查脚本,返回检查结果

(3)HAProxy 访问这个HTTP服务,根据返回的结果信息来判断这个 mysql 是否可用

如何方便快速的实现一个可以调用shell脚本的HTTP服务呢?

比较通用的方案就是 xinetd

xinetd 是 Linux 的守护进程,全称为 extended interent daemon,扩展的网络守护进程

xinetd 可以打开一个端口,等待连接,你可以告诉 xinetd 运行哪个脚本,当有连接进来后,xinetd 便会执行脚本,然后直接返回脚本输出的内容

HAProxy -> xinetd -> mysql-check脚本,HAProxy 便取得了mysql的状态信息

xinetd 的配置案例

下面实现一个简单的 xinetd 示例,开放 9200 端口,返回一个测试脚本的输出内容

如果机器上还没有 xinetd,先安装一下,centos7 下可以使用命令 yum install xinetd

(1)测试脚本

#!/bin/bashecho `uptime | egrep -o 'up ([0-9]+) days' | awk '{print $2}'`

这个脚本用来输出当前服务器的在线天数

chmod +x 给脚本添加可执行权限

(2)编写 xinetd 服务

例如服务名为 helloworld,文件名 /etc/xinetd.d/helloworld,内容为

service helloworld{disable = noport = 9200socket_type = streamprotocol = tcpwait = nouser = rootserver = /root/test.shserver_args = test}

port 指定监听的端口

server 指定要执行的脚本

(3)加入服务列表

修改 /etc/services

找到定义 9200 端口的位置,注释掉原有的,添加 helloworld 服务

helloworld 9200/tcp#wap-wsp 9200/tcp#wap-wsp 9200/udp

(4)重启 xinetd

centos 下的重启命令为:

systemctl restart xinetd.service

(5)测试

分别用 nc telnet 两个命令测试一下

nc localhost 9200

telnet localhost 9200

可以正确输出脚本执行内容,完成示例

总结

Linux shell实现HTTP服务的内容到这就基本结束了,希望对大家的工作和学习能有所帮助,如果有疑问可以留言讨论。

有两种方法:假设目标为 10ms:方法1.sleep 0.01方法2.usleep 10000(usleep为十的负六次方秒,详细见man usleep)内容来自www.zgxue.com请勿采集。

免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
Copyright © 2017 www.zgxue.com All Rights Reserved