Python 搞定windows server 2008 用户受权远程登陆

1.技术背景**
1.1.需求***python

随着某技术部门人员大量扩招,开windows堡垒机帐号远程登陆的需求变为频繁.人工每次添加很糟心. 随着linux和windows 各大操做系统的高频操做切换 有时候居然找不到windows server 系统受权远程登陆用户在哪里配置.

1.2.为何要windows堡垒机linux

公司网络业务系统使用zone和layer物理网络隔离,没法直接访问业务系统,(临时测试应用程序没法测试)

1.3 是否有其余代替方案windows

1.开源jumpserver高版本能够支持

1.4 为什么要写脚本网络

1.公司内部堡垒机版本过低支持不了windows server 管理
      2.手工配置太繁琐.人肉太累.

话很少说直接上脚本app

2.受权用户远程访问脚本内容dom

**# coding=utf-8**
import os
import random
import time
import sys
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
time_line = time.strftime('%Y%m', time.localtime(time.time()))
log_path = 'C:\\Users\Administrator\\Desktop\\ops_adduser\\useradd.log'
logfile = log_path + time_line + 'winduseradd.log'
handler = logging.FileHandler(logfile, mode='a')
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)

def userWindUser(data):
    """"
        1.接受输出参数转化为字典
        2.遍历字典.后续能够支持输入多个用户(目前支持单个用户)
        3.固定+随机+特殊符合生成符合系统密码策略密码.
        4.执行用户建立设置密码和加入远程登陆系统组.
        """
    user_dict = [{"name":data,"realname":data,"group":"Remote Desktop Users"},]   
    user_list = []
    for i in user_dict:
        username = i["name"]
        group = i["group"]
        realname=i["realname"]
        randstr = random.randint(100,990)
        password = "Lixing" + "#" + str(randstr)
        logger.info("建立用户"  + str(username) +  "建立密码"  +  str(password))
        user_list.append(username + ' : ' + password) 
        #建立用户并设置密码及禁止修改密码 
        command = "net user %s %s /passwordchg:no /expires:never /FULLNAME:%s /add" %(username, password,realname)
        runOscmd(command)

        #设置密码永不过时 
        command = "wmic useraccount where \"name='%s'\" set passwordexpires=false"%(username)
        runOscmd(command)

        #设置属组
        command = "net localgroup \"%s\"  %s /add" %(group,username)
        runOscmd(command )
    print(user_list) #输出帐号和密码
    return user_list

def runOscmd(cmd):
   """
     1.执行windows系统命令方法
     """
    import os
    if cmd:
       os.system(cmd)    
    else:
       print("cmd error")

def accountWrite(username):   
    """
        1.建立用户和远程受权
        2.判断返回是否有参数.
        3.失败写入log文件中
        """
    data=userWindUser(username)
    if data:    
       logger.info("run success")
    else:
       logger.info("useradd user error"

if __name__ == "__main__": 
    """
        1.脚本入口
        2.去除输入参数首尾空格.
        3.不输出参数程序终止,log文件写入提示信息.
        """
    try:
       username = sys.argv[1] 
       if username:    
           reult=accountWrite(username.strip())
       else:
           print("please input user")
    except Exception as e:
       logger.info("没有输入用户,程序运行失败")

3.使用方法介绍
···
1.须要windows server 2008上部署python3.6 以上版本环境
2.windows系统添python系统环境变量
3.python user_user.py ops #建立ops用户并加入远程登陆组
···ide

相关文章
相关标签/搜索