Comment exécuter des commandes Windows à distance depuis une machine Linux en utilisant la commande rdesktop?

20

Est-il possible d'exécuter des commandes Windows à l'aide de l' rdesktopoutil sous Linux? J'ai essayé avec rdesktop -soption:

rdesktop -u user -p 10.0.0.2 -s "cmd.exe"

mais je ne suis pas en mesure d'ouvrir le cmd.exeà l' aide de la commande ci-dessus, j'ai également essayé avec le chemin d'accès complet:

rdesktop -u user -p'password' 10.0.0.2 -s "C:\WINDOWS\system32\cmd.exe"

mais il n'y a pas de différence dans la session RDP même si j'utilise -s.

J'essaie d'obtenir une liste des sessions RDP à l'aide qwinsta /serverde Windows à partir de Linux.

Augustin
la source
C'est probablement parce que seul l'administrateur par défaut peut effectuer des tâches sans être promu pour continuer. Tout autre compte, même avec les autorisations appropriées, agirait en tant qu'administrateur.
Avez-vous regardé les outils psexec pour Windows? Ils pourraient fonctionner sous WINE.
jc__

Réponses:

5

Si vous avez accès à l'ordinateur, installez-y un serveur ssh. Sous Linux, vous pouvez utiliser par exemple Overlook-Fing pour trouver l'IP de l'ordinateur. Ensuite, vous tapez ssh username@ipaddressdans le shell Linux.

Exemple:

ssh [email protected]

Tapez ensuite le mot de passe de l'utilisateur et vous devriez avoir accès à l'invite de commandes Windows de l'ordinateur. Vous pouvez également utiliser telnet mais ssh est crypté.

aka91x
la source
4

Je n'ai pas de solution à utiliser rdesktopmais j'utilise un programme appelé winexeLinux pour exécuter des commandes à distance sur des machines Windows. Vous pouvez obtenir l'application à partir de l'URL suivante ou utiliser le système de référentiel de logiciels de votre distribution pour l'installer.

http://sourceforge.net/projects/winexe/

MISE À JOUR: Le certificat SSL est auto-signé pour le lien sourceforge ci-dessus, donc je fournis un autre lien:

https://github.com/skalkoto/winexe

Voici un exemple d'utilisation:

winexe -A credentials.cfg //remotehost "qwinsta /server"

Vous souhaiterez créer un fichier credentials.cfg avec les informations de connexion comme suit:

username=user
password=pass
domain=workplace

Fournissez le domaine uniquement s'il s'applique à vous. Il est recommandé de ne pas mettre vos informations d'identification de connexion (en particulier votre mot de passe) sur la ligne de commande. Essayez d'exécuter en cmd.exeutilisant l'exemple ci-dessus si vous voulez une invite interactive. Une bonne chose à propos de cette approche est que vous pouvez utiliser la sortie de la commande à distance dans vos scripts Linux ou grep la sortie.

cmevoli
la source
Dans winexe, l'utilisateur doit être "administrateur" pour fonctionner correctement, mais dans mon cas, j'essaie avec un utilisateur RDP normal, donc winexe ne fonctionnera pas.
Augustin
@Augustin: Que signifie "devrait"? Avez-vous lu cela quelque part, ou l'avez-vous essayé et cela ne fonctionne pas si le nom d'utilisateur est autre que administrator? L'avez-vous déjà essayé?
Bananguin
Winexe installera certains packages dans la machine Windows, alors seulement cela fonctionnera et l'installation du package n'est pas possible avec un utilisateur normal.
Augustin
3

À partir d'aujourd'hui, vous pouvez utiliser xfreerdpavec sa fonction RemoteApp pour exécuter un logiciel spécifique:

  1. Activez RemoteApps sur un hôte Windows. Devrait être aussi simple que de modifier le registre ;
  2. Installez xfreerdpsur votre hôte Linux. Il existe des versions prêtes à l'emploi pour Ubuntu, Debian, Fedora, OpenSUSE et macOS.
  3. Exécutez la commande xfreerdp /u:user /d:domain /p:password /app:"||calc" /v:serveroù:
    • /u:- Utilisateur Windows
    • /d:- Domaine (pourrait être WORKGROUPs'il n'était pas joint à un AD)
    • /p:- Mot de passe Windows
    • /app:"||calc"- Application à exécuter. Pourrait être cmdcomme tu veux
    • /v:- Adresse IP ou nom d'hôte de l'hôte Windows.

la source
0

J'ai développé un protocole collectnodeutilisant la winrmconnexion avec Windows.

d'abord: créez un fichier d'hôtes:

# cat hosts.file


    [group1:vars] 
    nodetype=windows



    [group1] 
    server1
    server2
    server3
    server4
    server5

deuxième: configurer les informations d'identification à CollectNode

# collectnode --configure
Do you want to change the localhost User ? [y/n]: n
Do you want to change the UNIX/LINUX User used the connect to the servers? [y/n]: n
Do you want to change the WINDOWS User used the connect to the servers? [y/n]: y
Enter user name: Administrator
Enter password:
Enter domain|realm [none]: none
Enter transport mode (basic|ntlm|kerberos) [kerberos]: ntlm
Current path: /var/log/
Do you want to change the current path for log file? [y/n]: n

troisième: Exécutez toute commande dont vous avez besoin sur ces serveurs:

# collectnode --file hosts.file --command='whatever command you need'

https://collectnode.com/executing-commands-on-remote-windows-from-linux-terminal/

fvidalmolina
la source
2
Link ne fonctionne pas et sans lui, la réponse est inutile.
Andrew Savinykh