Esecuzione di un programma su computer remoto da una condivisione di rete


0

Bene andando all in: assegnando tutti i miei 72 punti come ricompensa a questa domanda!

Come eseguire un programma da riga di comando su computer Windows remoti senza installare software aggiuntivo (aka ssh). Tutti i consigli sul Web / StackOverflow non riescono a soddisfare le esigenze di base:

  1. Il programma remoto deve essere in grado di accedere a una condivisione di rete (lettura / scrittura)!
  2. L'output del programma deve essere acquisito (torna al computer di controllo)
  3. In grado di funzionare automaticamente da uno script (ad esempio python)

Ho visto quanto segue:

  1. WMI: può eseguire un programma ma non può accedere alle condivisioni di rete e l'output non è visibile (metodo Fire and Pray?)
  2. WinRM - presumibilmente può accedere a condivisioni di rete ma l'installazione è al di là complicata (sembra richiedere certificati non autofirmati e l'immissione della password, che non riesce C)
  3. PsExec - impossibile eseguire il file eseguibile dal percorso di rete

Ambiente: tutto Win 7, può essere eseguito come amministratore locale


1
Scherzi a parte, questo è un problema difficile che è stato risolto abbastanza bene dall'autenticazione ssh. Userei quella soluzione.
Dirk Eddelbuettel,

+1 per ssh. C'è qualche motivo per cui non vorresti usare ssh, oltre a doverlo installare?
Xymostech

Vorrei che questa fosse una domanda su Linux - è davvero affascinante che Windows lo renda così contorto. A. richiede l'installazione, B. da quello che ho visto eseguire tutte le operazioni con l'account utente dei servizi vs in esecuzione nel contesto dell'utente chiamante (problema di sicurezza, no?)
okigan

Risposte:


1

Consiglierei il telecomando in PowerShell. Ma rispondi alla domanda come? dipende molto dall'ambiente (dominio / gruppo di lavoro) e dai tuoi diritti (sul server / all'interno del dominio).

Questo è un comando in ambiente AD:

Set-ADComputer -TrustedForDelegation $true -Identity <your target server>

E più tardi:

Invoke-Command -ComputerName <target server> -ScriptBlock { your command }

... ma questo non funzionerà nell'ambiente del gruppo di lavoro, quindi immagino che tu debba essere più specifico qui.


Ho provato a chiamare "Set-ADComputer", per messaggio di errore deve essere chiamato sul sistema Active Directory principale e dall'amministratore del dominio - che è al di fuori dei miei diritti di amministratore locale
okigan

Ecco perché la risposta alla domanda all'inizio della mia risposta è cruciale se si desidera ottenere una risposta applicabile al proprio ambiente / account / diritti.
BartekB

0

Lo psexecstrumento, originariamente creato da Sysinternals, ma ora parte di Microsoft Technet, dovrebbe fare ciò di cui hai bisogno.

Con esso puoi eseguire qualsiasi comando su un computer Windows remoto, inclusa la copia su qualsiasi eseguibile, eseguendolo e restituendo i risultati. Non è necessario installare nulla sul computer remoto.

Naturalmente per eseguire l'esecuzione è necessario disporre di diritti amministrativi o equivalenti sul computer di destinazione. In sostanza, se non è possibile eseguire il desktop remoto o accedere al computer, non sarà possibile utilizzarlo. È abbastanza ovvio.

Ecco la pagina del prodotto: http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

Puoi trovare molti tutorial e guide su Internet su come usarlo.


Non capisco cosa intendi con "non può accedere alla rete".

Fai quanto segue:

  1. Scrivi uno script, un file batch o un eseguibile in modo che se lo copi fisicamente sul computer di destinazione e fai doppio clic su di esso, fa tutto ciò di cui hai bisogno (si connette alla condivisione remota e legge / scrive i dati su di esso). Come fare ciò va oltre questa domanda e dipende in realtà dalla tecnologia che userete per scrivere la sceneggiatura.
  2. Utilizzare psexecper eseguirlo su un altro computer di destinazione.

La mia comprensione è che stai fallendo il passaggio 1, ma la domanda attuale riguarda il passaggio 2.


ah, sì, ho dimenticato di dire che ci ho provato - non è possibile accedere alla rete, vero?
Okigan,

Cosa vuoi dire con cui non può accedere alla rete? Puoi usarlo per eseguire qualsiasi comando del terminale e avviare qualsiasi eseguibile sul computer remoto, inclusa la copia e l'esecuzione di qualsiasi programma appena scritto in C ++, VBScript o altro. Ovviamente puoi accedere alla rete dal computer di destinazione.
Tobia,

Destinato a eseguire il file eseguibile stesso dalla rete: \\ path.exe. Ciò non richiede la copia quando si esegue anche in Desktop remoto
okigan

La tua domanda originale chiede "Il programma remoto deve poter accedere a una condivisione di rete", non "Il programma remoto deve risiedere su una condivisione di rete".
Tobia,

0

Hai provato a mappare la condivisione di rete su una lettera di unità sul PC remoto? PSExec sarebbe quindi in grado di vedere i file in quella condivisione come locali.


Sì, l'ho provato - non funziona: PsExec torna con "Il sistema non riesce a trovare il percorso specificato." Ho ricontrollato il percorso, ma eseguendo un programma locale cioè. 'ipconfig' funziona ...
Okigan,
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.