Maison > Opération et maintenance > exploitation et maintenance Linux > 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
Libérer: 2023-05-17 10:55:50
avant
1590 Les gens l'ont consulté

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

pip install paramiko
Copier après la connexion

(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()
Copier après la connexion

(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)
Copier après la connexion

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

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

inet6 240e:3a1:da7:6590:b39f:e15:6b3d:7e7 préfixlen 64 scopeid 0x0
inet6 fe80::4a67:131d:9133:acdf préfixlen 64 ID de portée 0x20
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=73 65536#🎜 🎜# inet 127.0.0.1 masque de réseau 255.0.0.0
      inet6 ::1   prefixlen 128   scopeid 0x10

       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=4099 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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal