<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 我用django偷偷綁定員工MAC信息

我用django偷偷綁定員工MAC信息

發(fā)布人:AI科技大本營(yíng) 時(shí)間:2022-10-20 來(lái)源:工程師 發(fā)布文章

新人入職,我們經(jīng)常需要登記他的ip和MAC地址,為什么呢?因為行政MM經(jīng)常來(lái)找我“打印機又出問(wèn)題了”,作為一個(gè)桌面維護工程師,我知道打印機的ip是固定的,但員工修改自己的跟它一樣引起沖突。這樣的話(huà),一不小心涉及到網(wǎng)絡(luò )安全了,emm..

影響網(wǎng)絡(luò )安全的因素很多,IP地址盜用或地址欺騙就是其中一個(gè)常見(jiàn)的因素。為了防止內部人員進(jìn)行非法IP盜用(例如盜用權限更高人員的IP地址),可以在交換機的每個(gè)端口上做IP地址的限定,如果有人修改了自己的IP地址,那么他的網(wǎng)絡(luò )就不通了。他就會(huì )來(lái)找我“怎么我上不了網(wǎng)?”,好好的上不了網(wǎng),可能你干了啥壞事。作為一個(gè)網(wǎng)絡(luò )管理人員,如果對MAC地址和IP進(jìn)行綁定,就會(huì )創(chuàng )建一個(gè)十分有利的環(huán)境,可以大大減小安全隱患。同時(shí),這些信息可以和姓名一起,在入職的時(shí)候統一登記,綁定mac的同時(shí)順便給他分配郵箱。不少公司分配郵箱的任務(wù)是行政MM做的,我們幫她做了,可以減少她們的日常工作,從而建立起良好的關(guān)系。聽(tīng)起來(lái)非常不錯,那怎么實(shí)行呢?圖片

思路1、我們需要的信息有ip、MAC、姓名(用于生成公司郵箱)

這些內容可以通過(guò)django網(wǎng)頁(yè)獲取,誰(shuí)訪(fǎng)問(wèn)就會(huì )顯示誰(shuí)的IP地址,用戶(hù)只需輸入姓名。跟行政商量,讓它作為入職的一個(gè)流程,登記這些信息。

圖片


2、查看錄入情況

為方便查看,需要準備一個(gè)后臺頁(yè)面。員工提交一條數據,后臺就能看到新用戶(hù)。以新員工邢道榮為例,看看他的錄入,    整個(gè)流程是這樣的:

圖片

圖片

具體操作MAC地址怎么獲???

linux執行arping命令,會(huì )返回對方的MAC。

我們需要找一臺內網(wǎng)linux機器,用paramiko模塊登錄上去,讓它替我們arping員工網(wǎng)頁(yè)提交過(guò)來(lái)的ip



[root@vm3 ~]# arping -f 192.168.14.6 -I ens33|grep replyUnicast reply from 192.168.14.6 [00:0E:C6:83:3B:F9]  1.007ms

翻譯成python:















def get_mac(ip):    import paramiko    client = paramiko.SSHClient()    private_key = paramiko.RSAKey.from_private_key_file('C:/Users/0717/Documents/id_rsa')    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())    client.connect(        hostname='192.168.14.173',        username='root',        port=22,        pkey=private_key,)    stdin, stdout, stderr = client.exec_command('arping -f %s -I ens33|grep reply' % ip)    msg = stdout.read().decode('utf-8')    client.close()    return msg


檢測ip

辦公網(wǎng)絡(luò )分有線(xiàn)和無(wú)線(xiàn),兩者的ip網(wǎng)段不一樣。員工如果通過(guò)無(wú)線(xiàn)訪(fǎng)問(wèn)這個(gè)頁(yè)面,要提示他僅有線(xiàn)網(wǎng)絡(luò )需要提交IP信息,無(wú)線(xiàn)網(wǎng)絡(luò )無(wú)需提交,請不要使用代理訪(fǎng)問(wèn)本頁(yè)面

換成python表示


















def check_ip(addr):    #只匹配有線(xiàn)網(wǎng)絡(luò )的網(wǎng)段    v = re.compile('(192.168.14).(\d+)')    return v.match(addr)
def record(request):    ip = request.META.get('REMOTE_ADDR')
   if check_ip(ip):        return render(request, 'ipinfo.html', {'ip':ip})        #check_mac根據re.compile('.*(\w{2}:\w+:\w+:\w+:\w+:\w+).*')進(jìn)行正則匹配        if not check_mac(ip):            ip = ip + '檢測到MAC地址異常,請聯(lián)系管理員'            return render(request, 'ipinfo.html', {'ip': ip})    else:        ip = ip + '僅有線(xiàn)網(wǎng)絡(luò )需要提交IP信息,無(wú)線(xiàn)網(wǎng)絡(luò )無(wú)需提交,請不要使用代理訪(fǎng)問(wèn)本頁(yè)面'        return render(request, 'ipinfo.html', {'ip': ip})

根據姓名分配郵箱

根據員工網(wǎng)頁(yè)提交的姓名,自動(dòng)分配公司郵箱,格式為“名字拼音的簡(jiǎn)寫(xiě)+公司郵箱后綴”。

這里用到pypinyin模塊






#安裝命令,pip install pypinyinfrom pypinyin import lazy_pinyin
print(lazy_pinyin('上將潘鳳'))['shang', 'jiang', 'pan', 'feng']

名字長(cháng)度一般為2~4個(gè)漢字,解析成拼音后進(jìn)行拼接,如'邢道榮'分配的郵箱為xingdr@163.com,'潘鳳'為panfeng@163.com


















def test1(name_list):    name_list = lazy_pinyin(name_list)    if len(name_list) == 2:        email_name = name_list[0] + name_list[1]    elif len(name_list) == 3:        email_name = name_list[0] + name_list[1][0] + name_list[2][0]    elif len(name_list) == 4:        email_name = name_list[0] + name_list[1] + name_list[2][0] + name_list[3][0]    email = email_name + '@163.com'    print(email)
test1('邢道榮')xingdr@163.comtest1('潘鳳')panfeng@163.com

提交數據

用requests提交員工信息到后臺




user_info = {'username': name, 'password': user_id, 'email': email, 'ip': ip, 'MAC': mac}conn = requests.session()ret = conn.post('http://127.0.0.1:8887/api/v1/users/', data=json.dumps(user_info),


圖片

交換機綁定MAC

登錄思科交換機用到python的第三方模塊ciscolib





switch = ciscolib.Device('192.168.14.10', '123456')switch.connect()switch.enable(password='BxAdmin')switch.cmd("write")

這個(gè)可以在管理后臺增加一個(gè)"保存"按鈕,讓它執行相關(guān)交換機命令。

綁定的相關(guān)命令如下:

  • 查看整個(gè)端口的ip-mac表


cisco(config)#show mac-address-table

  • ip與mac地址的綁定


cisco(config)#arp 192.168.14.6 0000.e268.9980 ARPA

  • ip和交換機端口的綁定,綁定后的端口只有此ip能用,改為別的ip后立即斷網(wǎng)




cisco(config)#interface FastEthernet0/17cisco(config-if)#ip access-group 6 in        cisco(config)#access-list 6 permit 192.168.14.6


這樣就將交換機的FastEthernet0/17與192.168.14.6綁定了

代碼下載地址

包括html文件,已上傳到 linux服務(wù)器上,http://ssw.fit/file/

圖片

圖片

小結

通過(guò)設計這樣的網(wǎng)頁(yè)辦事窗口,員工入職從mac綁定到郵箱分配,再到其它信息登記,一條流水線(xiàn)服務(wù),是不是規范和便捷呢,我的工作量也減少了,行政部的入職流程也更清晰了。

本文是由 Python技術(shù) 公眾號粉絲 ssw 投稿,歡迎大家繼續踴躍投稿!


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>