So-net無料ブログ作成

ZMI をスクリプトで操作する [Python]

穂苅さんからZope/Plone アドベントカレンダー2009のバトンが回ってきたので、Zope の小ネタを・・・

Zope には、ZMI で ZODB のオブジェクトを export したり import したりする機能があります。下図のように ZMI 上でオブジェクトをチェックし、export/import ボタンを押すと・・・
ピクチャ 1.png

Export/Import 画面になり、上段が Export の画面です。
ピクチャ 2.png

上記の画面の Export ボタンで、サーバーの var ディレクトリにバックアップされます。
Export to に「Download to local machine」を選択すると、下図のようなダイアログが出て、手元のマシンにファイルをダウンロードすることができます。
ピクチャ 3.png

・・・とここまでが前座。

ブラウザでできることは Python でもできますね。
こんな↓ Python のコードで、上図のような foo フォルダにある bar オブジェクトを export して手元のマシンに baz.zexp というファイルとして保存できます。
import urllib
import urllib2

toplevel_url = 'localhost:8080'
url = 'http://' + toplevel_url + '/foo/manage_exportObject'
username = 'admin'
password = 'admin'
params = urllib.urlencode({'id':'bar','download:int':'1','set_owner:int':'1'})
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, toplevel_url, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)

open('baz.zexp', 'w').write(urllib2.urlopen(url, params).read())


同様に、ZODB の pack も、下図の Pack ボタンで実行できますが・・・
ピクチャ 4.png


こちらは、下のように wget で十分ですね。
wget --http-user=admin --http-passwd=admin --post-data='days:float=0' \
                --max-redirect=0 --output-document=/dev/null \
                http://localhost:8080/Control_Panel/Database/main/manage_pack


これらのスクリプトを使って、 cron から定期的にバックアップを取ったり pack したりしたら便利じゃないでしょうか。

次のバトンは、森本さんにお渡ししたいと思います。よろしくお願いします。
nice!(0)  コメント(0)  トラックバック(1) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 1