Maison  >  Article  >  Opération et maintenance  >  Comment Python implémente-t-il l'exécution à distance des commandes Linux via la bibliothèque paramiko ?

Comment Python implémente-t-il l'exécution à distance des commandes Linux via la bibliothèque paramiko ?

WBOY
WBOYavant
2023-05-17 10:55:501546parcourir

(1) Installez d'abord la bibliothèque paramiko

pip install paramiko

(2) Les classes suivantes sont encapsulées et peuvent être utilisées directement

import paramiko

class SSHClient(object):
    def __init__(self,host,username,password,port=22):
        self.__host=host
        self.__username=username
        self.__password=password
        self.__port=port
        self.__ssh=None
        self.connect()

    def __del__(self):
        self.close()

    def connect(self):
        self.__ssh = paramiko.SSHClient()
        self.__ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.__ssh.connect(hostname=self.__host,port=self.__port,username=self.__username,password=self.__password)

    def exec(self,cmd):
        print(f"begin to run remote cmd: {cmd}")
        stdin, stdout, stderr = self.__ssh.exec_command(cmd,timeout=1800)
        returncode = stdout.channel.recv_exit_status()
        output=stdout.read().decode('utf-8')
        return output

    def close(self):
        self.__ssh.close()

(3) Par exemple, préparez une adresse IP Il s'agit d'une machine virtuelle Linux de 192.168.1.12, puis utilisez directement la classe encapsulée ci-dessus comme suit pour réaliser l'exécution à distance des commandes Linux

ssh=SSHClient(host="192.168.1.12",username="root",password="xxxxxx")
output=ssh.exec("ifconfig")
print(output)

(4) Les résultats de l'exécution sont les suivants # 🎜🎜#

# 🎜🎜#begin to run remote cmd: ifconfig
ens33: flags=41632057e901932173af9a1f1ac783f07b05 255.255.0 diffusion 192.168.1.255

inet6 240e:3a1:da7:6590:b39f:e15:6b3d:7e7 préfixlen 64 scopeid 0x0c0e98daa6cc905d3cdbeafdad89e7fa3
inet6 fe80::4a67:131d:9133:acdf préfixlen 64 ID de portée 0x20 2cdf5bf648cf2f33323966d7f58a7f3f
ether 00:0c:29:58:d8:4c txqueuelen 1000 (Ethernet)
Paquets RX 195340 octets 148862388 (141,9 MiB)
Erreurs RX 0 abandonné 0 dépassement 0 trame 0
Paquets TX 163425 octets 20837281 (19,8 Mo)
Erreurs TX 0 abandonnées 0 dépassements 0 transporteur 0 collisions 0

lo: flags=73940409b266a347906f934bf7de6f943d 65536#🎜 🎜# inet 127.0.0.1 masque de réseau 255.0.0.0
      inet6 ::1   prefixlen 128   scopeid 0x10f7e6dec31ab1a0471d06c55afaca8d77

       loop txqueuelen 1000 (Lo cal Loopback)

      Paquets RX 32 octets 2592 (2,5 KiB)
Erreurs RX 0 abandonnées 0 dépassements 0 trame 0
Paquets TX 32 octets 2592 (2,5 KiB)
Erreurs TX 0 abandonnées 0 dépassements 0 porteur 0 collisions 0
#🎜🎜 #virbr 0 : flags=4099519cdf5e8ee7083080f063b8b8c4e4fc mtu 1500
inet 192.168.122.1 masque de réseau 255.255.255.0 diffusion 192.168.122.255
ether 52:54:0 0:e8 :3f:5c txqueuelen 1000 (Ethernet)
Paquets RX 0 octets 0 (0,0 B)

      Erreurs RX 0   abandonnées 0   dépassements 0   trame 0

      Paquets TX 0   octets 0 (0,0 B)
     Erreurs d'émission 0 lâché 0   dépassements 0   transporteur 0 collisions 0#🎜🎜 #

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer