Discuz!X3.2ユーザーのpythonスクリプトを一括追加
11718 ワード
Discuz!X3.2ユーザーのpythonスクリプトを一括追加
Discuzを作った!X3.2環境は仕事に用いられ、ユーザーを追加する必要があるときに適切なツールが見つからなかった.同僚は最終的にボタンの精霊で問題を解決したが、コードを書いて残すことにした.使えるかもしれない.PHPではなくPythonなのは、最近Pythonに触れているだけで、このような場合に便利であることがわかりました.
ユーザー・コードの追加:
Discuzを作った!X3.2環境は仕事に用いられ、ユーザーを追加する必要があるときに適切なツールが見つからなかった.同僚は最終的にボタンの精霊で問題を解決したが、コードを書いて残すことにした.使えるかもしれない.PHPではなくPythonなのは、最近Pythonに触れているだけで、このような場合に便利であることがわかりました.
ユーザー・コードの追加:
# encoding: utf-8
'''
Created on 2015 7 1
@author: ZhongPing
'''
import urllib
import urllib2
import cookielib
import re
class Adder(object):
'''
classdocs
'''
home_url = ''
admin_user = ''
admin_password = ''
formhash = ''
def __init__(self, url, admin_user, admin_password):
'''
Constructor
'''
self.home_url = url + "?"
self.admin_user = admin_user
self.admin_password = admin_password
# CookieJar Cookie
self.cookieJar=cookielib.CookieJar()
# opener
self.opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookieJar))
self.headers ={
"Host":"localhost",
"Referer": url
}
def login(self):
'''
'''
#
data={
"admin_username":self.admin_user,
"admin_password":self.admin_password,
'frames':'yes',
'admin_questionid':'0',
'submit':' '
}
# urllib
post_data=urllib.urlencode(data)
url = self.home_url
req=urllib2.Request(url,post_data,self.headers)
result = self.opener.open(req)
url = self.home_url+'action=members&operation=add'
req=urllib2.Request(url)
result = self.opener.open(req)
tpage = result.read()
i = tpage.find('100+i]
pattern = re.compile(r'')
match = pattern.match(tpage)
formhash = ''
if match:
formhash = match.groups()[0]
self.formhash = formhash
#print(self.formhash)
def adduser(self,uname,upwd,uemail,ugrpid = '10',emailnotify = '0',addsubmit = ' '):
'''
'''
url = ""
url = self.home_url+('action=members&operation=add')
values = {'formhash':self.formhash,
'newusername':uname,
'newpassword':upwd,
'newemail':uemail,
'newgroupid':ugrpid,
'emailnotify':emailnotify,
'addsubmit':addsubmit
}
data = urllib.urlencode(values)
req=urllib2.Request(url,data,self.headers)
response = self.opener.open(req)
the_page = response.read()
i = the_page.find('Discuz!
')
if (i>0):
print((" "+uname+" !").decode("utf8"))
else:
print((" "+uname+" !").decode("utf8"))
def addusers(self,users):
'''
users : [{'newusername':newusername,
'newpassword':newpassword,
'newemail':newemail,
'newgroupid':'10',
'emailnotify':'0',
'addsubmit':'addsubmit'
},
....]
'''
self.login()
for u in users:
if (hasattr(u, "newgroupid") and hasattr(u, "emailnotify") and hasattr(u, "addsubmit")) :
self.adduser(u['newusername'], u['newpassword'], u['newemail'], u['newgroupid'], u['emailnotify'], u['addsubmit'])
else:
self.adduser(u['newusername'], u['newpassword'], u['newemail'])
def readtxt(file):
users = []
fo = open(file)
lines = fo.readlines()
for l in lines:
if len(l)>0 :
u = l.split(",")
if len(u) == 6:
users.append({'newusername':u[0],
'newpassword':u[1],
'newemail':u[2],
'newgroupid':u[3],
'emailnotify':u[4],
'addsubmit':u[5]
})
if len(u) == 3:
users.append({'newusername':u[0],
'newpassword':u[1],
'newemail':u[2]
})
return users
def main():
file = 'user.txt'
home_url = 'http://localhost/upload/admin.php'
admin = 'admin'
pwd = '123456'
adder = Adder(home_url,admin,pwd)
users = readtxt(file)
adder.addusers(users)
if __name__ == '__main__':
main()
pass
1. Main() :
file: 。
home_url: 。
pwd: 。
2. ( , , , , ,addsubmit)。 :
:
test1,123456,test1@test.com,10,0,addsubmit
test2,123456,test2@test.com,10,0,addsubmit
test3,123456,test3@test.com,10,0,addsubmit
test4,123456,test4@test.com,10,0,addsubmit
の のみを とすることもできます.test1,123456,test1@test.com
test2,123456,test2@test.com
test3,123456,test3@test.com
test4,123456,test4@test.com