Python添加sftp用户和修改密码脚本实例
本脚本可自动添加sftp用户,需要的友友可以看下
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#Final_Edit:2017-08-17
import time,re
from os import system
from os.path import exists
from commands import getoutput
from sys import argv
Rsync_Log = "/home/wguo/log"
BASEDIR="/mnt/mfs/uploade/"
Userfile="/var/log/sftp/user.ini"
patt = re.compile(r'\w+',re.M|re.L)
timedate="%s"%time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime())
def adduser():
for k,v in userdic.items():
userdata=getoutput("cat /etc/passwd | awk -F ':' '{print $1}' | grep -w %s | wc -l"%k)
if "0" in userdata:
print "创建 %s 用户...,密码:%s"%(k,v[0])
system("useradd %s -d %s/%s"%(k,BASEDIR,k))
system("echo '%s' | passwd --stdin %s"%(v[0],k))
with open("%s"%Userfile,'a') as file:
file.write('%s [INFO] Username:%s Password:%s\n'%(timedate,k,v[0]))
def updateuser():
for k,v in userdic.items():
userdata=getoutput("cat /etc/passwd | awk -F ':' '{print $1}' | grep -w %s | wc -l"%k)
if "1" in userdata and "%s"%k not in "root":
print "修改 %s 用户...,密码:%s"%(k,v)
system("echo '%s' | passwd --stdin %s"%(v,k))
with open("%s"%Userfile,'a') as file:
file.write('%s [INFO] [update] Username:%s Password:%s\n'%(timedate,k,v))
else:
print "无此用户,或目标是root用户,无法修改密码"
def sftpcreate():
#patt=re.compile(r'(^\d+):\w:\d+:\d+::/\w+/\w+/\w+:.*h$',re.L|re.M)
patt=re.compile(r'(^\d+).*h$',re.L|re.M)
sftppatt=re.compile(r'Match User (\d+)')
with open('/etc/passwd','r') as file:
udata=file.read()
with open('/etc/ssh/sshd_config') as file:
sdata = file.read()
userdata=patt.findall(udata)
# print userdata
sftpdata=sftppatt.findall(sdata)
# print sftpdata
for k,v in userdic.items():
if not exists('%s/%s/%s'%(BASEDIR,k,v[1])):
system("mkdir -p %s/%s/%s"%(BASEDIR,k,v[1]))
system("chmod -R 755 %s/%s"%(BASEDIR,k))
system("chown -R root.root %s/%s"%(BASEDIR,k))
system("chown -R app.app %s/%s/%s"%(BASEDIR,k,v[1]))
#system("chmod -R 777 %s/%s/%s"%(BASEDIR,k,v[1]))
if "%s"%k not in userdata or "%s"%k not in sftpdata:
print "创建%s sftp [ OK ]"%k
szdir='''Match User %s
ChrootDirectory %s%s
#X11Forwarding no
#AllowTcpForwarding no
ForceCommand internal-sftp\n\n'''%(k,BASEDIR,k)
with open('/etc/ssh/sshd_config','a') as file:
file.write('%s'%szdir)
print "reload ssh服务..."
system('/etc/init.d/sshd reload')
def man():
adduser()
sftpcreate()
if __name__=='__main__':
try:
userdic={
'%s'%argv[1]:['%s'%argv[2],'%s'%argv[3]]
}
man()
except Exception,e:
#print "Usage: python creagesftp.py username password directory",e
userdic={'%s'%argv[1]:'%s'%argv[2]}
updateuser()