编辑
2023-07-28
运维
00

AD域部分

为什么要做这个?

因为在一开始进行员工入职和初始化工作的时候常常需要有去多个平台进行不同的操作,一般来说流程是: AD域 → 使用AD域账号进行电脑初始化 → 根据部门分配IP地址保留 → 初始化邮箱 → 根据部门创建Jira和Gitlab 在这个过程中需要将相同的几个数据在其中填入,因为靠人工是很容易犯迷糊,所以我就想到能不能将他们通过一种方式串联起来。这样我就想到了Python,使用他来对整个流程进行整合是再合适不过的工具了。而我第一个入手的就是AD域。

为什么是LDAP?

LDAP是指轻型目录访问协议,在我一开始找寻如何操作AD域的时候发现大多数资料都指向了操作LDAP,于是按照关键词简单搜索了一下发现AD域就是微软自己修改过的LDAP,LDAP的操作方式是可以同样来操作AD域的。于是便开始学习Python中ldap3的使用方法 AD

编辑
2023-07-28
运维
00

飞书推送

其实飞书推送是最近才完成的功能,但是因为刚刚写完了一个功能,成热打铁就先把这一块写了。 其实飞书在二开这方面还是比较方便的,可以在线调api并生成示例代码,非常容易入手。 信息卡片

鉴权

我这里因为是想要用来给任意人和群发送信息,所以使用的是自建小程序方式,webhook机器人只能限制在一个群内,比较不方便。鉴权方式大概就是:app_id,app_secret获取一个token,然后通过这个token请求各种接口。

文字模板

发送信息的模板虽然是json但是发送信息的open-apis/im/v1/messages接口接受的其实是str,Content 是 string 类型, json 结构需要转义。详情还以官方文档为准。信息json模板为一开始在飞书工具中搭建完成后在程序中读取替换信息。 信息卡片中的互动按钮会回传信息到后台机器人设置中的消息卡片请求网址中。根据不同key来区分功能。

卡片互动功能

jira分配组没有什么好说的,只是手动再拿一下名字去jira接口更改下组,AD域密码重置的话是第一篇里面的遗留问题,使用的的是powershell的方式去去调用重置密码的。现在服务器都是跑在容器中,所以现在需要一个方法去远程执行powershell。 这里一开始找到的是pywinrm这个模块,但是直接执行powershell会报一些奇怪的问题,最后想到使用ansible来进行控制。

编辑
2023-07-28
运维
00

自动化入职流程

流程图 自动化入职方面还通过PyQt5进行简单的Gui化 UI1 UI2

编辑
2023-07-28
运维
00

现有问题:

因为入职工具使用的是操作LDAP+PowerShell命令操作AD域和DHCP,因为后期新建了一个复制域有可能域之间传输信息有信息差,本机通过PoweShell来对新建账号初始化密码的时候有可能会出现找不到用户的问题,所以考虑使用远程PoweShell直接操作AD域,看是不是能解决问题

WinRm的配置:

shell
#被控AD域PoweShell Enable-PSRemoting #开启WinRm #允许未加密连接 #这里修改配置需要注意网上有些配置在后面均缺少引号,后面配置不被单引号包住则无法完成配置 winrm set winrm/config/client '@{AllowUnencrypted = "true"}' #设置信任所有连接(*表示所有都信任,这么设置并不安全) winrm set winrm/config/client '@{TrustedHosts="*"}' #可以查看配置信息 winrm get winrm/config
编辑
2023-07-28
运维
00

网卡、公司PC信息录入和飞书资产信息推送

网卡录入和PC信息采集

PC

在资产系统之前,公司内网的IP地址为固定地址保留,所以每个IP地址都是实名的。那么对公司设备的MAC地址的采集就是一件重要的事情了。在PC端因为公司设备都会加如域中,所以通过统一下发bat脚本来进行信息的收集。

bash
@echo off #如果存在则不重复收集,直接打印以下时间意思意思 # if not exist \\10.1.1.9\Software\系统信息收集\%computername%.txt goto nofile goto start :nofile wmic nic where "NetConnectionId!=NULL and MacAddress!=NULL" get "NetConnectionID","MacAddress" | findstr "[^]" | findstr /i /v "^Mac.." >"%tmp%\$" for /f "tokens=1,2 delims= " %%a in ('type "%tmp%\$"') do ( echo 网络连接: [%%b] MAC 地址: [%%a] >> \\10.1.1.9\Software\系统信息收集\%computername%.txt ) wmic nic where "NetConnectionId!=NULL and MacAddress!=NULL" get "Description" | findstr "[^]"| findstr /i /v "^Des.." >"%tmp%\12" for /f "delims=" %%a in ('type "%tmp%\12"') do ( echo %%a >> \\10.1.1.9\Software\系统信息收集\%computername%.txt ) ipconfig |find "10."|find "IPv4" >> \\10.1.1.9\Software\系统信息收集\%computername%.txt whoami >> \\10.1.1.9\Software\系统信息收集\%computername%.txt :start echo %time%