iT邦幫忙

0

自動列出網域內所有電腦的IP 電腦名稱 C台的目錄

石頭 2018-01-25 08:39:4034845 瀏覽

公司需要知道網域內有多少user 電腦名稱 帳號 還有有安裝哪些軟體...
因為人員常常異動...所以我想說使用程式自動抓取

目前暫定是使用python...請問有誰知道該如何做嗎?我估狗了好像都沒發現類似的做法..

hon2006 iT邦大師 1 級 ‧ 2018-01-25 08:47:36 檢舉
http://jasontools.blogspot.tw/2017/06/it-asset-management-open-audit.html
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
魷魚
iT邦新手 1 級 ‧ 2018-01-25 08:43:43

痾 有多少user 電腦名稱這兩個 你去你的AD裡面就可以看到了
至於安裝哪些軟體,可以看看這個,用指令把電腦軟體清單列入,在存入共用區,這樣應該就可以收集大家的軟體清單了@@"

看更多先前的回應...收起先前的回應...
石頭 iT邦研究生 4 級 ‧ 2018-01-25 09:19:09 檢舉

因為好幾個網域 人員異動也很常見 ... 所以我比較希望程式自動跑出來而不是自己去看

魷魚 iT邦新手 1 級 ‧ 2018-01-25 10:57:15 檢舉

有點聽不太懂意思,AD內的computer內不是有寫有多少台主機嗎?如果是要確認這些主機有沒有存活,可以去看DNS解析紀錄裡面的時間確認。
程式自己跑出來的要嘛就是要在client上裝agent,不然就是要用派送批次檔的方式給client執行,但....跑出來的資料還是要自己看阿@@"

石頭 iT邦研究生 4 級 ‧ 2018-01-25 11:14:06 檢舉

恩..簡單來說 因為我要知道的不只有確認有哪些主機存活 還有像是安裝哪些軟體 軟體序號.. 主管基本上想知道所有東西= =..

所以我希望可以自己寫一隻程式可以查詢到網域到所有電腦的情況。

CalvinKuo iT邦大師 7 級 ‧ 2018-01-25 11:28:32 檢舉

基本上Client電腦開了防火牆,Ping、WMI查詢都沒用。只能裝Agent軟體... 不然就Client登入時跑Logon Script,或排程跑(對付不關機不登出的),自掃自回...

0
Daniel
iT邦新手 2 級 ‧ 2018-01-25 10:21:34

這個不難,我以前用來收集過公司電腦名稱和 IP

  1. 共享一個目錄,並給予適當權限
  2. 寫一個批次檔,收集你想要的資料(ipconfig /all, dir /s)並存檔到分享目錄
  3. 使用群組原則,把批次檔套用在網域階層啟動或關機上
2
froce
iT邦大師 1 級 ‧ 2018-01-25 11:52:19

1.獲取AD所有的帳戶可以寫python來取得。有時間我會把code丟上來。
2.要獲取軟體資訊的話用python寫不好寫(要操作WMI)。建議用GPO派powershell去取得,丟到一個網芳資料夾。
3.建議還是找一套資產管理系統來比較好。第2個方法只是應急的。

import ldap
import os

def get_uas_list():
    ldap_username = "「AD帳戶」"
    password = "「AD密碼」"
    conn = ldap.initialize('ldap://「AD位址」')
    conn.protocol_version = 3
    conn.set_option(ldap.OPT_REFERRALS, 0)
    conn.simple_bind_s(ldap_username, password)
    basedn = "「網域的DN(ex:DC=abc,DC=com,DC=tw)」"
    result = []
    temp = conn.search_s(
        basedn,
        ldap.SCOPE_SUBTREE,
        "(sAMAccountName=UAS*)")  # AD查詢條件,這裡是查所有UAS開頭的帳號
       
    # 整理AD傳回的資訊
    for i in temp:
        if i[0]:

            yield (
                i[0].split(",", 1)[0].replace('CN=', ''),
                i[0].split(",", 1)[1].replace('OU=', '').split(",", 1)[0],
                i[1]['sAMAccountName'][0].decode('utf-8') + "\n"
                )


# 寫入檔案
with open("uas_list.txt", "w", encoding="UTF-8") as f:
    f.writelines([",".join(i) for i in get_uas_list()])
os.system("pause")

要先裝pyldap。
另外AD有傳回限制,傳回的結果太多的話會有問題。

石頭 iT邦研究生 4 級 ‧ 2018-01-25 17:05:04 檢舉

謝謝!! 我試試看

3
zero
iT邦好手 1 級 ‧ 2018-01-25 18:43:31

有AD的話,可以用GPO派powershell的執行檔去USER端執行程式爬資料,

再傳去AD的共用資料區放整理,

查網域內的帳戶與電腦,Powershell需要 Active Directory module,

通常伺服器自己的Powershell會有這個模組,一般PC的沒有要自己安裝


安裝的軟體建議爬機碼去找,WMI的只有通過Windows install的才會有紀錄的樣子,

會有短缺,也有可能是Powershell利用WMI撈到的軟體資料沒有很齊全

傳回的資料再弄到EXCEL去表格化比較方便看,大概像下圖這樣

https://ithelp.ithome.com.tw/upload/images/20180125/20022284iWRVHrx7kH.jpg
https://ithelp.ithome.com.tw/upload/images/20180125/20022284ezcQx3WmPX.jpg

簡單來說 這是3段工作

第1段 在AD上用Powershell爬網域內的電腦有幾台,並且篩選出還啟用中的

第2段 對網域內的電腦用GPO派送Powershell執行檔,執行完的資料丟回AD內

第3段 用EXCEL把AD收集到的資料匯入後查看

0
tsang
iT邦新手 1 級 ‧ 2018-01-27 03:20:08

我這裏有一個很好用。
Advanced IP Scanner
https://www.advanced-ip-scanner.com/news/

我要發表回答

立即登入回答