美国主机Lunarpages

Mediawiki中文技术论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3406|回复: 0

mediawiki脚本自动发内容实现

[复制链接]
发表于 2011-11-23 16:52:14 | 显示全部楼层 |阅读模式
BlueHost主机优惠码
相信很多公司都是在使用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
回复

使用道具 举报

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

本版积分规则

BlueHost美国主机优惠码

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

GMT+8, 2022-7-6 21:49 , Processed in 0.188865 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2022, Tencent Cloud.

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