Godaddy主机最新优惠码

Mediawiki中文技术论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 27470|回复: 0

mediawiki脚本自动发内容实现

[复制链接]
发表于 2011-10-10 11:08:11 | 显示全部楼层 |阅读模式
RAKsmart美国服务器
相信很多公司都是在使用mediawiki做内部team的知识管理,同时也有一些边边角角的脚本去做诸如上线、报警一类的工作。经常会有这样的需求:在上线的时候自动更新wiki的一页内容。
实现起来很简单,只需要一个curl即可,mediawiki提供了http restful的接口,在api.php上,可以做很多事情,下面是实际使用的举例。
目标:上线脚本最后执行一下记录,更新wiki里的一页做为上线记录,Online logging包换的元素有:日期,项目,版本号,机器。
环境:安装了 curl的机器
实现细节(wiki.sh):
#! /bin/sh
OPS_APP=$1
shift
OPS_REV=$1
shift
OPS_SERVER=$1
OPS_TIME=`date`
echo "\nwrite to wiki"
TOKEN=`curl -s -d 'action=login&lgname=你的用户名&lgpassword=你的密码&format=json' http://你的wiki域名/wiki/api.php -D cookies.txt -b cookies.txt | sed -e 's/.*token":"//' -e 's/".*//'`
curl -s -d "action=login&lgname=你的用户名&lgpassword=你的密码&lgtoken=${TOKEN}&format=json" http://你的wiki域名/wiki/api.php -b cookies.txt -D cookies.txt > result
RET=`curl -s 'http://你的wiki域名/wiki/api.php?action=query&prop=info&intoken=edit&titles=Online_logging&indexpageids=&format=json' -b cookies.txt -D cookies.txt `
ETOKEN=`echo ${RET}|sed -e 's/.*token":"//' -e 's/".*//' -e 's/+/%2B/g'`
ETOKEN=`echo ${ETOKEN}|sed -e 's/\\\\/%5C/g'`
TIME=`echo ${RET}|sed -e 's/.*starttimestamp":"//' -e 's/".*//'`
URL="action=edit&title=Online_logging&section=0&appendtext=%0A|${OPS_TIME}||${OPS_APP}||${OPS_REV}||${OPS_SERVER} %0A |-&summary=robot change&starttimestamp=${TIME}&token=${ETOKEN}&format=json"
curl -s -d "${URL}" http://你的wiki域名/wiki/api.php -b cookies.txt -D cookies.txt > result
echo "\n**write successful**\n"
具体使用:
首先新建一个名字为Online_logging的页面,内容如下:
{|border="1" cellspacing="0"
|-
! 日期 || 项目 || 版本号 || 机器
|-
sh wiki.sh 项目 版本号 服务器ip
api参考:
http://www.mediawiki.org/wiki/API
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

BlueHost美国主机优惠码

Archiver|手机版|小黑屋|Mediawiki中文技术论坛

GMT+8, 2024-11-24 21:51 , Processed in 0.036488 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表