Bagaimana saya bisa mendapatkan alamat IP klien desktop jarak jauh? Dan bagaimana saya bisa memicu perintah shell pada koneksi RDP?


23

Apakah ada cara untuk menentukan alamat IP klien desktop jarak jauh menggunakan PowerShell (atau metode lain) di server? (Windows Server 2008 R2 x64 adalah yang saya gunakan)

EDIT: Saya menemukan bahwa saya dapat menangkap stdout netstat untuk mengambil informasi ini yang sangat layak, jadi bagaimana saya bisa memicu skrip / perintah shell ketika klien terhubung?


Dalam konteks apa? Apakah skrip ini dijalankan sebagai pengguna, administrator, atau orang lain?
Zoredache

Apakah ini dalam LAN, WAN, atau internet?
Zapto

Saya membiarkan RDP terbuka untuk internet, jadi saya tahu IP mana yang menjadi milik saya dan yang bukan. Saya tidak yakin siapa yang menjalankannya di bawah, saya kira apa pun memungkinkan saya mengambil informasi itu.
chaz

Saya melakukan pencarian, dan posting ini ( serverfault.com/questions/314386/listing-users-using-rdp ) terlihat sangat dekat dengan apa yang Anda butuhkan. Saya tidak cukup mahir di Powershell untuk menjadikannya target / return dan IP
Skawt

Jenis acara itu dan informasi yang diberikannya masih belum memberi saya IP jarak jauh, hal terdekat yang diberikannya pada log acara adalah 'KOMPUTER'
chaz

Jawaban:


21

Dari prompt perintah, Anda dapat menjalankan perintah berikut untuk mendapatkan daftar IP jarak jauh yang terhubung ke RDP (port 3389).

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

Saya yakin ini dapat ditulis dalam PowerShell (atau bahkan hanya file batch lama). Saya dapat memberikan contoh besok jika Anda tertarik.


Saya telah menggunakan ini sebelum ini bekerja sangat efektif, sekarang saya hanya perlu menemukan cara untuk memicu skrip ketika klien RDP terhubung.
chaz

12

Baiklah saya tahu bahwa task scheduleraplikasi yang datang dengan windows dapat dikonfigurasi di mana saya dapat menjalankan skrip batch, dipicu ketika suatu peristiwa dalam log peristiwa dihasilkan. Melalui UI Anda memilih jenis acara, sumber acara dan ID peristiwa, dalam hal ini saya menggunakan 4264 (dan ya adalah menangkap semua jenis masuk). Di sini saya menggunakan skrip kumpulan sederhana sebagai gantinya:

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

Saya juga menemukan contoh super berguna tentang cara berlangganan / mendengarkan acara menulis di .NET: http://msdn.microsoft.com/en-us/library/bb552514(v=vs.90).aspx I ' Saya akan berakhir menggunakan itu sebagai gantinya untuk menulis acara tertentu ke database untuk pemeriksaan berbasis web.

Satu-satunya kelemahan dari solusi ini adalah bahwa jika Anda memiliki Remote Desktop Services diaktifkan dan banyak orang terhubung, Anda tidak dapat membedakan di antara mereka dalam output netstat.


1
Itu sebenarnya solusi yang cukup elegan ketika Anda menggabungkan semuanya. Saya juga tidak mengetahui fungsionalitas penjadwal tugas yang ditingkatkan. Kerja bagus!
John Homer

untuk penjadwal versi yang lebih lama Anda dapat melakukannya dengan file batch dan skrip evtmon.vbs
Scott R

5

Jika Anda tidak perlu membuat skrip, Anda dapat melihat di log peristiwa keamanan untuk ID 4624 acara. Akan ada baris:

Sumber Jaringan Alamat: 192.168.xxx.xxx


4264 untuk login dan berguna untuk masuk log tipe pengontrol domain aktif. Saya memerlukan IP saat ini dari klien RDP yang terhubung, yang akunnya login tidak relevan dan saya percaya layak untuk didapatkan melalui grepping / piping ststout netstat. Maksud saya sekarang jika ada cara untuk memicu eksekusi shell-command / script / program pada koneksi RDP, itu akan bagus.
chaz

Sebenarnya 4624 (salah ketik) sudah benar, ada beberapa tipe masuk yang muncul di ID peristiwa itu.
chaz
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.