1.技術背景**
1.1.需求***
隨着某技術部門人員大量擴招,開windows堡壘機賬號遠程登錄的需求變爲頻繁.人工每次添加很糟心. 隨着linux和windows 各大操作系統的高頻操作切換 有時候竟然找不到windows server 系統授權遠程登錄用戶在哪裏配置.
1.2.爲什麼要windows堡壘機
公司網絡業務系統使用zone和layer物理網絡隔離,無法直接訪問業務系統,(臨時測試應用程序無法測試)
1.3 是否有其他代替方案
1.開源jumpserver高版本可以支持
1.4 爲何要寫腳本
1.公司內部堡壘機版本太低支持不了windows server 管理
2.手工配置太繁瑣.人肉太累.
話不多說直接上腳本
2.授權用戶遠程訪問腳本內容
**# 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用戶並加入遠程登錄組
···