Python usa winrm para conectarse de forma remota a otra PC y controlar

Primero, debe configurar winrm en Windows para asegurarse de que puede conectarse y controlar:
consulte el enlace
Tome mi propia computadora como ejemplo: use 192.168.64.84 (win10) para conectarse a 192.168.64.80 (win7) y controlar.
Aquí hay un ejemplo de cómo eliminar una imagen de win7:


import winrm
import time
s=winrm.Session('http://192.168.64.80:5985/wsman',auth=('admin','000000'))
time.sleep(5)
s.keep_alive = False

comm="del/f/s/q "+r"C:\Users\liuyan\Desktop\1.jpg"
t=s.run_cmd(comm)

print(t.std_out)
print("******")
print(t.std_err)
print("******")

Los resultados de la operación son:

b'Deleted file - C:\\Users\\admin\\Desktop\\1.jpg\r\n'
******
b''
******

Y en una PC con win7, la imagen también se eliminará.

Si desea ejecutar varios comandos, use & para separar:

t=s.run_cmd('dir & cd / & dir')

Se generarán dos listas y los resultados en ejecución no son fáciles de publicar.

Mencione run_cmd () y run_ps (): el
primero ejecuta comandos y el segundo ejecuta scripts.

 def run_cmd(self, command, args=()):
        # TODO optimize perf. Do not call open/close shell every time
        shell_id = self.protocol.open_shell()
        command_id = self.protocol.run_command(shell_id, command, args)
        rs = Response(self.protocol.get_command_output(shell_id, command_id))
        self.protocol.cleanup_command(shell_id, command_id)
        self.protocol.close_shell(shell_id)
        return rs

    def run_ps(self, script):
        """base64 encodes a Powershell script and executes the powershell
        encoded script command
        """
        # must use utf16 little endian on windows
        encoded_ps = b64encode(script.encode('utf_16_le')).decode('ascii')
        rs = self.run_cmd('powershell -encodedcommand {0}'.format(encoded_ps))
        if len(rs.std_err):
            # if there was an error message, clean it it up and make it human
            # readable
            rs.std_err = self._clean_error_msg(rs.std_err)
        return rs

Pero también encontré un problema, es decir, falla cuando quiero abrir una página web o aplicación, pero este comando se puede ejecutar en la línea de comandos de win7, lo que me quema el cerebro.

#comm='start '+r'https://blog.csdn.net/liulanba?spm=1001.2101.3001.5343'
#print(comm)
# s.run_cmd(comm)

# comm="start C:\GTJA\RichEZ\newVer\Loading.exe"
# t=s.run_cmd(comm)

Este problema aún no se ha resuelto, los grandes que pasan pueden pincharme, ¡muchas gracias!
Se dice que hay otro método, todavía no lo he probado, por favor regístrelo primero

import winrm
conn = winrm.Protocol(endpoint='http://10.10.60.14:5985/wsman', transport='plaintext', username='administrator', password='password')

shell_id=conn.open_shell()

com=conn.run_command(shell_id,"dir") 

stdout, stderr, return_code = conn.get_command_output(shell_id, com) 

print "STDOUT: %s" % (stdout)
print "STDERR: %s" % (stderr)

Supongo que te gusta

Origin blog.csdn.net/liulanba/article/details/115125271
Recomendado
Clasificación