Hangi bilgisayarda bir ağ paylaşımında açık bir dosyanın bulunduğu nasıl anlaşılır?


21

Çevre:

Windows XP sp3, Windows 2003 sunucusu

Sorun:

Her biri aynı anda oturum açma adıyla kısa bir süre paylaşan ve aynı oturum açma adına sahip birkaç düzine kiosk makinemiz var. Oran birkaç kilit ve bir dakika serbest bırakıyor.

Son zamanlarda, istemcilerden birini yalnızca bir dosyayı kilitleme deneyimini yaşadık ve sonra dosyayı bırakmadık. 

Bu olduğunda dosyayı kapatabiliriz, ancak birkaç dakika veya daha uzun sürerse, bu kabul edilemez bir kesintidir.

Yayımlanmamış kilitleme sorunu, geçen ay birkaç kez oldu. Hangi kiosk cihazının kilitlemeden sorumlu olduğunu ve gerçekleştiğinde hızlı bir şekilde algıladığını gördüm.

Sunucudan alabileceğimiz bilgilerde bir boşluk var gibi görünüyor:

Çeşitli araçlardan görebiliyoruz:
-Ne dosyaları açık ve kilitli. (birçok yol)
-Ne oturum açma açık veya kilitli bir specc dosyasına sahiptir. (birçok yolla)
-Belirli bir bilgisayarın genellikle açık bir dosyası vardır. (Paylaşılan klasörler, oturumlar mmc)

Göremediğimiz şey, belirli bir bilgisayarın açık ve kilitli belirli bir dosyaya sahip olmasıdır.

Buna ulaşmanın bir yolunu bilen var mı?

Teşekkürler -

soymak


1
İstediğiniz tam olarak değil, ama alternatif bir yaklaşım her sistem için ayrı bir hesap oluşturmak olacaktır.
Bryan

Yanıtlar:


10

Bu küçük ücretsiz util ( ShareWatch ) göz atın, aradığınızı yapacağını düşünüyorum.

Listelenen özelliklerden biri: "Her paylaşıma bağlı olan kullanıcıları ve bilgisayarları ve hangi dosyaların açık olduğunu gösterir."

alt metin


1
Bunun için teşekkürler. Benim durumumda - aynı giriş adlarına sahip bir düzineden fazla müşteri - açık dosyaları ve iş istasyonlarını aynı listede birleştiriyor. Hangi iş istasyonunun açıldığını söyleyemezsiniz. Ayrıca, Özellikler'i seçmek, bir iş istasyonunun dosya adlarının değil, x dosyalarının açık olduğunu bildirir. Dosya için Özellikler'in seçilmesi benzer bilgiler verir.
RobW

7

Komut satırını (CMD) girin,

Sonra yazın: openfiles / sorgu NetworkShare ait ip

Ve kullanıcı adı ve şifre gerekli olabilir.

Üzerinde openfiles ait daha fazla bilgi alabilirsiniz burada .


Teşekkürler. Openfiles büyük ölçüde sunucu konsolundaki net session ile aynı çıktıyı veriyor. Dosyayı açan bilgisayarın adını vermiyor. Bir dosya-> bilgisayar bağlantısı arıyorum, bir dosya-> kullanıcı bağlantısı arıyorum.
RobW

5

Size sordukları şeyi sağlamak yerine, sorununuzu çözmek için ihtiyaç duyduğunuz şeyi sağlamak için Sky100'ün görevine doğru olarak geri dönmek isteyeceğinize inanıyorum. İhtiyacınız olan verileri size sağlayacağı için kilitli kimlik numarasına "openfile / query / v" (ayrıntılı) komutuyla başvurmanız gerekir. Verilen listede dosya adını arayın, veriler hangi öğenin okuma ve yazma özelliğine sahip olduğunu gösterecek ve onunla birlikte belirli bir kimlik numarası sağlayacaktır. Hayır, hangi sistemde bir dosyanın kilitlendiğini bulamayabilirsiniz, ancak verilen araçlarla bu kullanıcıyı dosyadan ayırabilirsiniz. Burada benim başıboş adam basitleştirmek için adım adım.

1) Yönetici haklarına sahip dosya sunucusunda Başlat> Çalıştır> CMD [ENTER]

2) CD Desktop [ENTER] (Nedenini yakında göreceksiniz.)

3) openfiles / query / v> file.txt [ENTER] (Bu, masaüstünde, sunucudaki tüm açılan dosyaların bir listesini oluşturacak bir dosya oluşturacaktır.)

4) file.txt dosyasını açın ve hem dosya adınızı hem de Okuma + Yazma izinlerini içeren satırı arayın.

5) Bu satırdaki kimlik numarasını not edin ve Komut konsolunuza geri dönün.

6) openfiles / disconnect / ID [Buraya ID Numarası Girin] [ENTER]

Dosya sunucusunda Yönetici haklarına sahip olduğunuz sürece, bu sistemin dosyayla olan bağlantısını keser ve sisteminizin otomatik olduğunu varsayarsak, işlerin gerektiği gibi devam etmesine izin vermesi gerekir.

Kaynaklar: openfiles / query /? openfiles / bağlantıyı kes /?

Sisteminize uygun bir betik veya programlanmış uygulamaya ihtiyacınız varsa, lütfen yorum yapmaktan çekinmeyin; iletişim bilgileri ile birlikte teknikle birlikte çok düşük bir fiyat vereceğim. uygulamamda destek.


Ha! Benim sorunum, dosyanın açıldığı bilgisayarı bulmaktı. Bunun nasıl yapılacağı hakkında bir fikriniz var mı? Dosyayı tanımlamak ve kapatmak basittir ve bu sonucu oluşturmak için birçok yol vardır. Yanıtı takdir ediyorum ve ticari teklifiniz bana sabahın erken saatlerinde kıkırdadı verdi ;-)
RobW

Özür dilerim, açık dosya işleminin çözüm olmadığını bilmiyordum. Açıkladığınız gibi, dosyayı kapatmadığı için sisteme daha fazla bakma ihtiyacınızı çözmüş gibi görünüyor, ancak sadece bu kilitli ayarı kaldırıyor. Aslında, firmamın başvurusunu yaptım ve bu tür komplikasyonlardan kaçınmak için her küçük parçayı çalıştırmak için otomatikleştirilebiliyor. Sanırım bu konunun yanında. Doğrudan sorunuzu cevaplamak için: Evet, bu sistemleri bu dosyaya erişimleri için denetlemenin bir yolu olmalıdır. Daha fazla ayrıntı için lütfen bir sonraki gönderime bakın.
Thomas,

Aslında, geri dönüp gönderinizi yeniden okuyunuz ... "Bu olduğunda dosyayı kapatabiliriz, ancak birkaç dakika veya daha uzun sürerse ve bu kabul edilemez bir kesintidir." Çözümünüzün çalışmamasının nedeni, dosyayı KAPALI konuma getirmenizdir. Daha önce verilen My ve kısmen Sky100'ün çözümü dosyayı kapatmıyor, ancak Salt Okunur erişim haklarını değiştiriyor. Yine, açık dosyaların aradığınız çözümü nasıl ISN 'T' olduğu konusunda kafam karıştı. Çözüm dışı yazmadan önce bir şans verin. Bir programcıyla ilgilenmiyorsanız, birkaç dakikada bir çalıştırılacak bir toplu iş dosyası oluşturun.
Thomas,

Durumun anlaşılmaması durumunda zamanımı boşa harcamamak için çözümümüzü aşağıdaki sorunuza bırakıyorum.
Thomas,

Hımmm. Özür dilerim, ancak sorumun sizin tarafınızdan ele alındığını hissetmiyorum. Hangi bilgisayarın dosyayı açacağını belirlemek için yardıma ihtiyacım vardı . Bilgisayar adını belirlemekle gerçekten ilgileniyorum. Gerisi ilginç olsa da, peşimdeki sonlu şeyi bana söylemiyor.
RobW

2

Belirttiğiniz sorunu çözmeye çalıştığınız (yani belirli bir istemci bilgisayarı (kullanıcıyı değil) kilitli dosyaya eşleyin) mi yoksa çözmeniz gereken bir kilitleme sorunu mu var?

İkincisi yardımcı olacaksa, bakacağım iki şey var:

  • Müşterilerinize yüklü olan AV'yi kontrol edin - Birden fazla İstemci tarafı AV'nin, paylaşımlarda ciddi derecede kötü bir kilitleme davranışına neden olduğunu gördüm.

  • EnableOpLocks kayıt defteri değerini 0 olarak ayarlayarak fırsatçı kilitlemeyi devre dışı bırakmayı deneyin .

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parametreler EnableOplocks REG_DWORD 0 veya 1 Varsayılan: 1 (etkin)

Bu, performansı biraz düşürecek ancak hiçbir şeyi bozmaması gerekiyor.

Birisinin aslında belirttiğiniz soruyu cevapladığını görmek isterim - bu ilginç bir sorundur.


Teşekkürler Helvick! Fırsatçı kilitlemeyi devre dışı bırakmak ilginç bir yaklaşımdır. Sunucu varsayılır mı?
RobW

Evet, sunucuda - bu, müşterilerin fırsatçı kilitleme istemesini engelliyor, böylece dosyaları yerel olarak önbelleğe alabilirler.
Helvick

Fırsatçı kilitlemeyi devre dışı bırakmanın getirdiği performans büyük olasılıkla bizim için kabul edilemez. Buna test testimizde bakmamız gerekecek.
RobW

Bu kesinlikle bu bir risk - bulduklarınızı merak ediyorum.
Helvick,

2

RobW'nin sorununu gidermeye ve alternatif bir çözüm sunmaya çalıştığımda, sorusuna cevap vermedim.

Aradığınız çözümün bu sistemde Denetim politikaları oluşturmak ve ardından o dosyayı belirli bir kullanıcının erişimini denetlemek üzere ayarlamak olacağına inanıyorum. Bunu gerçekleştirme adımları ağ kurulumunuza göre değişebilir, bu nedenle sizi denetlemek için farklı sistemlerin nasıl kurulacağına ilişkin olarak microsoft'un teknik bağlantısına başvuracağım.

http://technet.microsoft.com/en-us/library/cc787268(WS.10).aspx

Ayarladıktan sonra, kullanıcı hesabını Denetçi olarak ekleyerek izlemek istediğiniz dosyayı ayarlayarak takip ettiğinizden emin olun, gitmeye hazır olmalısınız.

Gelecekte Güvenlik Olay günlüklerinizi kontrol etmeniz yeterlidir ve her bir sistemi listeleyecek olmasına rağmen (hepsi aynı kullanıcı adını kullanıyorlarsa da), hangi sistemin şu anda dosyaya Okuma ve Yazma erişimi olduğunu bulmak zor olmamalıdır.

Güvenlik günlüğünü birkaç günde bir temizlemek üzere ayarlamak yararlı olabilir.

Bu işe yaramazsa, büyük olasılıkla, kullanıcı adı yerine, dosyaya erişen her ana bilgisayar adı için sistemi ayarlamanız gerekecektir. Bunun Microsoft Yönetim Konsolu ile mümkün olduğuna inanıyorum.

Yine, programlamaya ihtiyacınız varsa, küçük bir program için paranızı almakla ilgilenen bir işadamı değilim. Bir kişinin bile uzak durmayacağı bir fiyata kaliteli programlama yapıyorum. Umarım bu sorununuzu çözmenize yardımcı olur.


Bunun için teşekkürler. İlk sayıdan kısa bir süre sonra bu dizinde denetim yapıyorum. Bu dizinde aktif olarak ~ 150 müşterimiz var (ve yalnızca bilgi noktaları değil). Sorun kesintili olduğu için, sinyal / gürültü oranı çok fazlaydı ve belirli bir bilgisayarı bir dosya olayına bağlamanın açık bir yolunu görmedim. Buna tekrar bakacağım. Bu konuda zaten birkaç tasarım toplantısı yaptık. Oturum açma hesapları da dahil olmak üzere masada birkaç konu vardır. Hangi bilgisayarın bir dosyayı açık tuttuğunu hala bilmek istiyorum :-)
RobW

1

Ayrıca, eğer mümkünse farklı kullanıcıları farklı kiosklara atardım - diğer günlükleri analiz etmenize yardımcı olabilir ...

Bu mümkün değilse: Olası çözümün ana hatları: Bir çözüm, kiosklar üzerinde uygun bir filtreyle (söz konusu dosyaya) sysinternals işlemcisi gibi bir aracı çalıştırmak olabilir (saklayabiliyor musunuz bilmiyorum). Yakalanan verileri dosyaya kaydeden bazı komut satırı seçenekleri bulunmaktadır.

Bunları çeşitli büfelerden toplayın, örneğin Excel'e alın ve kapatılmayanı arayın ...


0

Bunu belirlemek için netstat komutunu kullanmaya ne dersiniz?

netstat -an | find ":445"

Bu size bağlı makinelerin IP adreslerini vermelidir.

IP adresleri yerine ana bilgisayar adlarını istiyorsanız,

netstat -a | find "microsoft-ds"

bununla birlikte, özellikle yoğun dosya sunucularında veya etki alanı denetleyicilerinde yürütülmesi daha uzun sürer, çünkü gerçekleştirilecek çok sayıda ana bilgisayar araması olacaktır.

Ayrıca, sonuçların gelen, giden ve boşta dinleme bağlantı noktaları göstereceğini unutmayın.

Gelen bağlantılar: 445'i sol sütunda, giden değeri sağ sütunda gösterecektir.

'LISTENING' ifadesini gösteren sonuçları ve ayrıca yalnızca yerel IP adreslerini (örneğin 0.0.0.0 veya 127.0.0.1) gösteren tüm satırları veya -n seçeneğini kullanmazsanız bilgisayarların kendi ana bilgisayar adlarını güvenle yok sayabilirsiniz.

Örneğin:

Z:\>netstat -an | find ":445"
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    127.0.0.1:445          127.0.0.1:41764        ESTABLISHED
  TCP    127.0.0.1:445          127.0.0.1:41767        ESTABLISHED
  TCP    127.0.0.1:41764        127.0.0.1:445          ESTABLISHED
  TCP    127.0.0.1:41767        127.0.0.1:445          ESTABLISHED
  TCP    192.168.16.17:445      192.168.16.87:1098     ESTABLISHED
  TCP    192.168.16.17:18055    192.168.16.24:445      ESTABLISHED
  TCP    192.168.16.17:20678    192.168.16.24:445      ESTABLISHED
  UDP    0.0.0.0:445            *:*

Buraya bağlı olan tek ana bilgisayar 192.168.16.87'dir. 192.168.16.24’e olan bağlantılar giden. Diğer tüm bağlantılar yerel bağlantılardır.


Hmmm, sadece sorunuzu tekrar okuyunuz ve bilgisayarınızın hangi dosyayı açtığını göstermediğinden sorununuzu tam olarak çözemiyor.
Bryan

Sorun değil. Bu fikri takdir ediyorum.
RobW

0

Kullanılan paylaşımları ve kilitli dosyaları kontrol etmek için pencerelerde grafiksel bir araç olduğunu hatırlıyorum.

"Paylaşılan klasörler" adı altında "Bilgisayar yönetimi" altındaki ("fransızcaya çevrilmiş ...") "sistem araçları" içinde olmalıdır.


0

Bunun çok eski olduğunu biliyorum, ancak ADSI, LANMANSERVER hizmetine erişmenizi ve "Paylaşılan Klasörler" mmc ek bileşeninde zaten var olan özellikleri sorgulamanızı sağlayan WinNT: // arabirimini sağlar. Şu anda bir ana bilgisayarı ve kullanıcıyı açık bir dosyaya bağlamanın bir yolunu araştırıyorum .


-1

Ben olsaydım ve aynı alt ağ üzerinde bir linux makinesine erişebilseydim ... Dosyayı açık tuttukları kutuya söz konusu paylaşım limanında bir tcpdump yapardım.

Unix'iniz yoksa, hala tcpdump kullanabilirsiniz, ancak onu yüklemeniz gerekir.

linux dan ... Böyle bir şey yapardım: tcpdump -ieth0 -s0 -X hostname port 1234 | grep -i "nameoffile"

Yükün çoğunun ikili olduğunu biliyorum ... Ancak, dosyaya erişim için kimlik doğrulaması konusunda anlaşmaya varmak için ilk başlığının açık metin halinde olması iyi paraya bahse girerim.

Bu, size bu kutuya bağlanan ve dosya adının paket verilerinde bulunduğu yeri (şifreli değilse veya ikili dosyada) bulacağınız her uzak ana bilgisayarı gösterecektir.

İyi şanslar! Ancak benim tecrübelerime göre, aşağıdakiler kullanılmalıdır:

1) Paylaşılan dosyalar kötü bir fikirdir! Özellikle, bağlantıyı kestikleri veya yavaş bağlantıları varsa, bir dosyayı kilitli bırakabilecek w / uzak sistemler.

2) Paylaşılan dosyaya erişim, istemciler arasında bir yarış durumuna neden olur. Değerli kene zamanını boşa harcamak.

3) Paylaşılan bir dosyayı kullanmanız GEREKİRDİR ... Her uzak site için farklı kullanıcı adları oluşturun, böylece düzgün şekilde hata ayıklayabilirsiniz.

En iyi senaryo ... dosyadan kurtulup SQL ile birleştirmek veya istemcilerin dosya veya verilere erişmesini sağlayan bir web hizmeti oluşturmak.

++ Todd

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.