Uzak masaüstü istemcisinin IP adresini nasıl alabilirim? Ve RDP bağlantısı üzerine bir kabuk komutunu nasıl tetikleyebilirim?


23

Sunucuda PowerShell (veya başka bir yöntem) kullanarak uzak masaüstü istemcisinin IP adresini belirlemenin bir yolu var mı? (Windows Server 2008 R2 x64 kullanıyorum ne)

EDIT: Çok uygun olan bu bilgiyi almak için netstat'ın stdout'unu bulabileceğimi öğrendim, bir müşteri bağlandığında bir script / shell-komutunu nasıl tetikleyebilirim?


Hangi bağlamda? Bu komut dosyası kullanıcı, yönetici veya başkası olarak mı çalıştırılacak?
Zoredache

Bu bir LAN, WAN veya internet dahilinde mi?
Zapto

RDP'yi internete açık bırakıyorum, bu yüzden hangi IP'lerin benim olduğunu ve hangilerinin olmadığını biliyorum. Kimin altında olacağından emin değilim, sanırım bu bilgiyi almama izin veren şey.
chaz

Biraz arama yaptım ve bu yazı ( serverfault.com/questions/314386/listing-users-using-rdp ) ihtiyacınız olanlara çok yakın görünüyor. Powershell'de hedef / geri dönüş ve IP yapacak kadar yetkin değilim
Skawt

Bu olay türü ve sağladığı bilgiler bana hala uzak IP'yi vermiyor, olay günlüğünde bana verdiği en yakın şey 'BİLGİSAYAR'
chaz

Yanıtlar:


21

Komut isteminde, RDP'ye bağlı olan uzak IP'lerin bir listesini almak için aşağıdaki komutu çalıştırabilirsiniz (bağlantı noktası 3389).

netstat -n | find ":3389" | find "ESTABLISHED"

Bunun powershell'de (veya sadece düz eski bir toplu iş dosyasında) yazılabileceğinden eminim. İlgileniyorsan yarın bir örnek verebilirim.


Bunu çok etkili bir şekilde çalışması için kullandım, şimdi bir RDP istemcisi bağlandığında komut dosyasını tetiklemenin bir yolunu bulmalıyım.
12:53

12

Tamam task scheduler, Windows ile gelen uygulamanın, olay günlüğünde bir olay oluşturulduğunda tetiklenen toplu komut dosyasını çalıştırabileceğim bir yere göre yapılandırılabileceğini anladım . UI aracılığıyla olay türünü, olay kaynağını ve olay kimliğini seçersiniz, bu durumda 4264 kullandım (ve evet, tüm oturum açma türlerini yakalar). Burada bunun yerine basit bir toplu komut dosyası kullandım:

SET logfile="rdp_ip_logs.log"
date /T>>%logfile%
time /T>>%logfile%
netstat -n | find ":3389" | find "ESTABLISHED">>%logfile%

Ayrıca .NET'te etkinlik yazarlarına abone olma / dinleme hakkında bu süper yararlı bir örnek buldum: http://msdn.microsoft.com/en-us/library/bb552514(v=vs.90).aspx I ' Bunun yerine, web tabanlı inceleme için bir veritabanına belirli olayları yazmak için bunu kullanacağım.

Bu çözümün tek dezavantajı eğer Uzak Masaüstü Hizmetlerini etkinleştirdiyseniz ve birden fazla kişi bağlıysa, netstat çıktısında aralarında ayrım yapamayacağınızdır.


1
Bu, hepsini bir araya getirdiğinizde oldukça zarif bir çözüm. Gelişmiş görev zamanlayıcı işlevselliğinin de farkında değildim. İyi iş!
John Homer

eski sürümleri zamanlayıcı için toplu iş dosyası ve evtmon.vbs betiği ile yapabilirdi blogs.technet.microsoft.com/netmon/2007/02/22/…
Scott R

5

Komut dosyasına gerek duymuyorsanız, 4624 olay kimliği için Güvenlik olay günlüğüne bakabilirsiniz. Bir satır olacak:

Kaynak Ağ Adresi: 192.168.xxx.xxx


4264, girişler içindir ve aktif alan denetleyicisi tipi girişlerin kaydedilmesi için kullanışlıdır. Bağlanan RDP istemcisinin şu anki IP'sine ihtiyacım var; bu hesapta oturum açmış olmanın alakasız olduğunu ve grepping / piping netstat stdout'u aracılığıyla uygulanabilir bir şekilde geri alınabileceğini düşünüyorum. Şu anda bir RDP bağlantısında bir kabuk komut / komut dosyası / program yürütmesini tetiklemenin bir yolu olsaydı, bu harika olurdu.
chaz

Aslında 4624 (yazım hatası) doğrudur, bu olay kimliğini gösteren birden fazla oturum açma türü vardır.
12'de
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.