Sudo olmadan bir bağlantı noktası kullanarak işlemi belirleme


11

Belirli bir bağlantı noktasını hangi işlemin (özellikle işlem kimliği) kullandığını bulmak istiyorum. Bir yakalama, sudo kullanmak istemiyorum ya da root olarak giriş yapmadım. Bunun çalışmasını istediğim işlemler, işlem kimliğini bulmak istediğim aynı kullanıcı tarafından çalıştırılıyor - bu yüzden bunun basit olduğunu düşünürdüm.

Her ikisi de lsofve netstatsudo kullanarak çalıştırmak sürece bana işlem kimliği anlatmayacağım - onlar bana bağlantı noktası olsa kullanılıyor olduğunu söyleyecektir.

Ekstra bağlam olarak - SSH üzerinden yönettiğim bir sunucuya bağlanan ve ileriye doğru bağlantı noktası oluşturan çeşitli uygulamalara sahibim. Bunlar kurulduktan sonra, sunucum iletilen bağlantı noktasını kullanarak bazı işlemler yapar ve daha sonra bağlantı kesilebilir. İşlemlere belirli bağlantı noktalarını (her uygulamanın kendine ait) eşleyebilirsem, bu basit bir komut dosyasıdır. Herhangi bir öneri?

Bu arada bir Ubuntu kutusu üzerinde - ama herhangi bir çözümün çoğu Linux dağıtımında standart olacağını tahmin ediyorum.

Yanıtlar:


7

--programNetstat gösterileri PID'lerin ve kendi süreçlerinin isimleri seçeneği. Bu seçenek mevcuttur ve ağ araçları 1.60 üzerinden netstat 1.42'deki RHEL 6 üzerinde çalışır.

netstat -an --tcp --programİşlemlerimin PID'lerini bana gösterdiğini doğruladım .


1
Sanırım demek istedin -an. netstat -pantayrıca çalışır ve hatırlanması daha kolaydır.
Eduardo Ivanec

Evet, gereksiz "-" içeri girdi. Ve anımsatıcıyı seviyorum.
Paweł Brodacki

Korkarım bu Ubuntu'da işe yaramıyor - bazı durumlarda süreci köksüz göstermiyor - ve bir SSH ileri bu vakalardan biri gibi görünüyor.
pat

Pawel: Artık OP sonunda kullanım durumu ile somutlaştı (zincirimdeki açıklamaya bakınız), tekrar denemenizi tavsiye ediyorum. Bir CentOS 5 kutusunda (ayrıca net-tools 1.60'dan netstat 1.42) yaptım ve söylediği gibi başarısız oluyor. Deneyimlerinizle ilgilenirim.
MadHatter

3

Pawel'in önerisi bana iyi geliyor gibi görünüyor, ama alternatif olarak, işte kabuktan dinliyorum1:

[madhatta@risby ~]$ nc -l  localhost 3456

ve işte bunu lsofshell2'den görüyorum:

[madhatta@risby tmp]$ lsof -i tcp:3456
COMMAND   PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nc      18109 madhatta    3u  IPv4 69205153      0t0  TCP localhost.localdomain:vat (LISTEN)

Düzenleme : bir yorumda

SSH iletilerinin farklı davranması gerekir - işlem aynı kullanıcıya ait olsa bile, root / sudo olarak çalıştırmadıysam lsof çıktısında listelenmesini göremiyorum.

ama bu benim için öyle değil. Yerel bağlantı noktası 8001'i iletmek için ssh kullandıktan ssh vpn.example.com -L 8001:rt.int:80sonra:

[madhatta@risby ~]$ lsof -n -i tcp:8001
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ssh     5375 madhatta    8u  IPv6 381234      0t0  TCP [::1]:vcom-tunnel (LISTEN)
ssh     5375 madhatta    9u  IPv4 381235      0t0  TCP 127.0.0.1:vcom-tunnel (LISTEN)

Bize belki de çok fazla redaksiyona tabi olmayan örnek çıktılarınızdan bazılarını gösterebilir misiniz?


1
Görünüşe göre SSH ileriye doğru farklı davranmalıdır - süreç aynı kullanıcıya ait olsa bile lsof, root / sudo olarak çalıştırmadıkça çıkışta listelenmiş olarak göremiyorum .
pat

Kullanıcı olarak çalıştırıldığında iletilen bağlantı noktasında hiç çıkış yok. Eğer sudo ile çalıştırırsam, cevabınıza eklediğiniz gibi çıktı görürüm. Tek fark, vcom-tunnel yerine gerçek port numarasını görmem.
pat

Ayrıca, bu uzak bir ileri, yerel bir ileri değil - belki de farkın kaynağı budur? Yoksa uzaktan kumanda ile mi test ediyordunuz?
pat

Uzaktan yönlendirmeyle "sunucu AI ssh'den sunucu B'ye, bağlantı noktası xxx'i sunucu B'den sunucu A'ya geri yönlendirmek" mi demek istersiniz? Öyleyse, neden A sunucusunda netstat / lsof ile bir şey almayı beklersiniz? A sunucusunda yeni bir dinleyici oluşturulmaz, bu nedenle A sunucusunda bağlantı noktası ataması yapılmaz (geçici olarak kaydedin).
MadHatter

A ila B SSH (A güvenlik duvarı içinde - ileri dolayısıyla gerek) C noktası Y B noktası X ileri bağlantı kullanılarak lsof / netstat noktası X için B
pat
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.