Come dire quale computer ha un file aperto su una condivisione di rete?


21

Ambiente:

Windows XP sp3, server Windows 2003

Problema:

Abbiamo diverse decine di macchine kiosk ognuna con lo stesso nome di accesso che occasionalmente e brevemente un file su una condivisione. La velocità è di diversi blocchi e rilascia al minuto.

Di recente, abbiamo riscontrato che uno dei client bloccava un file esclusivamente e quindi non rilasciava il file. 

Possiamo chiudere il file quando ciò accade, ma trascorrono alcuni minuti o più, e si tratta di un'interruzione inaccettabile.

Il problema di blocco inedito si è verificato più volte nell'ultimo mese. Ho cercato quale dispositivo kiosk è responsabile per il blocco e per rilevarlo rapidamente quando succede.

Sembra che ci sia un gap nelle informazioni che possiamo ottenere dal server:

Possiamo vedere da vari strumenti:
-Quali file sono aperti e bloccati. (molti modi)
-Che accesso ha un file specifico aperto o bloccato. (molti modi)
-Che un computer particolare ha generalmente un file aperto. (Cartelle condivise, sessioni mmc)

Quello che non possiamo vedere è che un computer specifico ha un file specifico aperto e bloccato.

Qualcuno sa come arrivare a questo?

Grazie -

rapinare


1
Non esattamente quello che stai chiedendo, ma un approccio alternativo sarebbe quello di creare un account separato per ciascun sistema.
Bryan,

Risposte:


10

Dai un'occhiata a questo piccolo programma di utilità freeware ( ShareWatch ), penso che farà quello che stai cercando.

Una delle funzionalità elencate: "Mostra gli utenti e i computer collegati a ciascuna condivisione, insieme ai file aperti".

testo alternativo


1
Grazie per questo - ho provato Sharewatch. Nella mia situazione - più di una dozzina di client con gli stessi nomi di accesso - combina i file e le workstation aperti nello stesso elenco. Non puoi sapere quale workstation ha aperto. Inoltre, selezionando Proprietà viene semplicemente segnalato che una workstation ha file x aperti e non i nomi dei file. Selezionando Proprietà per il file si ottengono informazioni simili.
RobW

7

Immettere la riga di comando (CMD),

quindi digitare: openfiles / query ip della condivisione di rete

E potrebbero essere richiesti nome utente e password.

Puoi ottenere maggiori informazioni sugli openfile qui .


Grazie. Openfiles fornisce in gran parte lo stesso output della sessione di rete dalla console del server. Non fornisce il nome del computer che ha aperto il file. Sto cercando una connessione file> computer, non una connessione file> utente.
RobW

5

Credo che vorrai fare riferimento al post di Sky100 perché è corretto, non nel fornirti ciò che hai chiesto, ma nel fornirti ciò di cui hai bisogno per risolvere il tuo problema. Dovrai fare riferimento al numero ID bloccato tramite il comando "openfile / query / v" (dettagliato) in quanto ti fornirà i dati di cui hai bisogno. Cerca il nome del file all'interno dell'elenco indicato, i dati mostreranno quale elemento ha abilitato la lettura e la scrittura e insieme con esso fornirà un numero ID specifico. No, potresti non essere in grado di trovare quale sistema specifico ha il file bloccato, ma con gli strumenti forniti puoi disconnettere quell'utente dal file. Ecco un passaggio per semplificare le mie divagazioni.

1) Sul fileserver con diritti di amministratore, fai Start> Esegui> CMD [INVIO]

2) CD Desktop [ENTER] (Vedrai perché presto.)

3) openfiles / query / v> file.txt [ENTER] (Questo creerà un file sul desktop con un elenco di tutti i file aperti sul server.)

4) Aprire il file.txt e cercare la riga contenente sia il nome del file sia le autorizzazioni di lettura + scrittura.

5) Annota il numero ID su quella riga e torna alla tua console di comando.

6) openfiles / disconnect / ID [Inserisci qui il numero ID] [ENTER]

Finché hai i diritti amministrativi sul file server, disconnetterà quel sistema dal file e supponendo che il tuo sistema sia automatizzato, dovrebbe consentire alle cose di continuare a muoversi secondo necessità.

Riferimenti: openfiles / query /? openfiles / disconnect /?

Se hai bisogno di uno script o di un'applicazione programmata adatta al tuo sistema, non esitare a commentare e ti fornirò le informazioni di contatto, un prezzo molto basso insieme alla tecnologia. supporto sulla mia applicazione.


Ha! Il mio problema era individuare il computer da cui era stato aperto il file. Hai qualche idea su come farlo? Identificare e chiudere il file è semplice e ci sono molti modi per progettare questo risultato. Apprezzo la risposta e la tua offerta commerciale mi ha fatto
ridere di

Mi scuso, non ero consapevole che il processo di file aperti non fosse la soluzione. Da quello che hai descritto sembra che avrebbe risolto il tuo bisogno di dare un'occhiata al sistema in quanto non chiude il file, ma rimuove solo quell'impostazione bloccata. In effetti, ho creato l'applicazione per la mia azienda ed è in grado di essere automatizzato per funzionare un po 'per evitare tali complicazioni. Immagino che non sia questo il punto, però. Per rispondere alla tua domanda diretta: Sì, dovrebbe esserci un modo per controllare quei sistemi per il loro accesso a quel file. Si prega di consultare il mio prossimo post per ulteriori dettagli.
Thomas,

In realtà, tornando indietro e rileggendo il tuo post ... "Possiamo chiudere il file quando ciò accade, ma trascorrono alcuni minuti o più, e questa è un'interruzione inaccettabile." Il motivo per cui la tua soluzione non funziona è perché stai CHIUDENDO il file. La mia e in parte la soluzione di Sky100 fornita in precedenza non chiude il file, ma CAMBIA i diritti di accesso in sola lettura. Ancora una volta, sono confuso su come openfile NON sia la soluzione che stai cercando. Provalo prima di scriverlo come una non soluzione. Se non sei interessato a un programmatore, crea un file batch da eseguire ogni pochi minuti.
Thomas,

Lascio la mia soluzione alla tua domanda qui sotto per non perdere tempo nel caso in cui la mia comprensione della situazione non sia approfondita.
Thomas,

Mmmm. Mi scuso, ma non sento che la mia domanda sia stata affrontata da te. Avevo bisogno di aiuto per determinare quale computer teneva aperto il file. Sono davvero interessato a determinare il nome del computer. Tutto il resto, sebbene interessante, non mi dice la cosa finita che sto cercando.
Rob

2

Il problema che stai tentando di risolvere è quello che dichiari (es. Mappare il computer client specifico (non utente) sul file bloccato) o c'è un problema di blocco che devi risolvere?

Se quest'ultimo aiutasse, allora ci sono due cose che guarderei:

  • Controlla l'AV installato sui tuoi client: ho visto più AV lato client causare comportamenti anomali di blocco sulle condivisioni.

  • Prova a disabilitare il blocco opportunistico impostando il valore del Registro di sistema EnableOpLocks su 0.

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters EnableOplocks REG_DWORD 0 o 1 Impostazione predefinita: 1 (abilitato)

Ciò ridurrà in qualche modo le prestazioni ma non dovrebbe interrompere nulla.

Mi piacerebbe vedere qualcuno in realtà rispondere alla tua domanda dichiarata - è un problema interessante.


Grazie Helvick! La disabilitazione del blocco opportunistico è un approccio interessante. Server presumo?
RobW

Sì, è sul server - questo impedisce ai client di richiedere il blocco opportunistico in modo che possano memorizzare nella cache locale (parti di) file.
Helvick,

Il colpo di prestazione derivante dalla disabilitazione del blocco opportunistico sarebbe molto inaccettabile per noi. Dovremo esaminare questo nel nostro banco di prova.
RobW

Questo è sicuramente un rischio con questo - sarei interessato a quello che trovi.
Helvick,

2

Nel mio tentativo di risolvere il problema di RobW e fornire una soluzione alternativa, non sono riuscito a rispondere alla sua domanda.

Credo che la soluzione che stai cercando sarà quella di impostare i criteri di controllo su quel sistema e quindi impostare quel file per controllare qualsiasi accesso da quel particolare utente. I passaggi per eseguire questa operazione possono variare a seconda della configurazione della rete, quindi ti farò riferimento al collegamento technet di Microsoft su come configurare diversi sistemi per il controllo.

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

Dopo averlo configurato, assicurandoti di seguire l'impostazione del file specifico che desideri monitorare allegando l'account utente come revisore, dovresti essere pronto per iniziare.

Basta controllare i log degli eventi di sicurezza in futuro e sebbene elencherà ogni sistema (poiché utilizzano tutti lo stesso nome utente), non dovrebbe essere difficile ordinare e individuare quale sistema attualmente ha accesso in lettura e scrittura al file.

Può essere utile configurare il registro di sicurezza in modo da cancellare ogni pochi giorni.

Se questo non funziona, è probabile che dovrai configurare il sistema per ciascun nome host che accede al file, piuttosto che il nome utente. Credo che ciò sia reso possibile tramite la Microsoft Management Console.

Ancora una volta, se hai bisogno di programmazione, non sono un uomo d'affari interessato a prendere un sacco di soldi per qualche piccolo programma. Fornisco una programmazione di qualità a un prezzo che nemmeno un individuo non vorrebbe evitare. Spero che questo ti aiuti a risolvere il tuo problema.


Grazie per questo. Ho impostato il controllo su quella directory poco dopo il problema iniziale. Abbiamo ~ 150 client (e non solo chioschi) attivi in ​​quella directory. Poiché il problema è intermittente, il rapporto segnale-rumore era enorme e non vedevo un modo chiaro di collegare un determinato computer a un evento di file. Lo guarderò di nuovo. Abbiamo già avuto un paio di riunioni di progettazione su questo. Diversi argomenti sono presenti nella tabella, inclusi gli account di accesso. Mi piacerebbe ancora sapere quale computer tiene aperto un file :-)
RobW

1

Assegnerei anche diversi utenti a diversi chioschi, se possibile - potrebbe aiutarti nell'analisi di altri registri ...

Se ciò non è possibile: Struttura della possibile soluzione: una soluzione potrebbe essere quella di eseguire uno strumento come il processmonitor sysinternals con un filtro adeguato (al file in questione) sui chioschi (non so se puoi nasconderlo). Ci sono alcune opzioni della riga di comando con cui puoi giocare che salvano i dati acquisiti su file.

Raccoglili dai vari chioschi, importali ad esempio in Excel e cerca quello che non era chiuso ...


0

Che dire dell'utilizzo del comando netstat per determinare questo?

netstat -an | find ":445"

Questo dovrebbe darti gli indirizzi IP delle macchine connesse.

Se si desidera i nomi host anziché gli indirizzi IP, utilizzare

netstat -a | find "microsoft-ds"

tuttavia, ciò richiederà più tempo per l'esecuzione, soprattutto su file server o controller di dominio occupati, poiché avrà molte ricerche host da eseguire.

Inoltre, tenere presente che i risultati mostreranno le porte di ascolto in entrata, in uscita e inattive.

Le connessioni in entrata mostreranno: 445 nella colonna di sinistra, in uscita lo mostreranno nella colonna di destra.

Puoi tranquillamente ignorare qualsiasi risultato che indichi 'ASCOLTO' e anche qualsiasi linea che mostri solo indirizzi IP locali (es. 0.0.0.0 o 127.0.0.1) o il nome host del computer se non usi l'opzione -n.

Per esempio:

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            *:*

L'unico host collegato qui è 192.168.16.87. Le connessioni a 192.168.16.24 sono in uscita. Tutte le altre connessioni sono connessioni locali.


Hmmm, rileggi la tua domanda e non risolve del tutto il problema, in quanto non ti dice quale file ha aperto il computer.
Bryan,

Nessun problema. Apprezzo l'idea.
RobW,

0

Ricordo che all'interno di Windows era presente uno strumento grafico per controllare le condivisioni usate e i file bloccati.

Dovrebbe trovarsi negli "strumenti di sistema" sotto "Gestione computer" (~ tradotto dal francese ...), sotto il nome di "cartelle condivise".


0

So che è molto vecchio, ma ADSI fornisce l'interfaccia WinNT: //, che consente di accedere al servizio LANMANSERVER e di eseguire query per le proprietà già esposte nello snapin mmc "Cartelle condivise". Attualmente sto cercando un modo per collegare un host e un utente a un file aperto.


-1

Se fossi io e avessi accesso a una macchina linux sulla stessa sottorete ... farei un tcpdump sulla porta di condivisione in questione nella casella su cui tengono aperto il file.

Se non hai unix, puoi comunque usare tcpdump ma devi installarlo.

da Linux ... Vorrei fare qualcosa del genere: tcpdump -ieth0 -s0 -X nome host porta 1234 | grep -i "nameoffile"

So che la maggior parte del payload è binario ... Tuttavia scommetterei che la loro intestazione iniziale per negoziare l'autenticazione per l'accesso al file è in chiaro.

Questo ti mostrerà tutti gli host remoti che si collegano a quella casella e dove si trova il nome file all'interno dei loro dati del pacchetto (se non crittografato o binario).

In bocca al lupo! Ma dalla mia esperienza, si dovrebbe usare quanto segue:

1) I file condivisi sono una cattiva idea! Soprattutto con sistemi remoti che potrebbero lasciare un file bloccato se interrompono la connessione o hanno connessioni lente.

2) L'accesso per il file condiviso causerà una condizione di competizione tra i client. Sprecare tempo prezioso tick

3) Se DEVI utilizzare un file condiviso ... Crea nomi utente diversi per ciascun sito remoto in modo da poter eseguire correttamente il debug.

Scenario migliore ... eliminare il file e unirlo in SQL o creare un servizio Web che consenta ai client di accedere al file o ai dati.

++ Todd

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.