Python添加sftp用户和修改密码脚本实例

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()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容