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