ホームページ >運用・保守 >Linuxの運用と保守 >Python は paramiko ライブラリを介して Linux コマンドのリモート実行をどのように実装しますか?

Python は paramiko ライブラリを介して Linux コマンドのリモート実行をどのように実装しますか?

WBOY
WBOY転載
2023-05-17 10:55:501600ブラウズ

(1) まず paramiko ライブラリをインストールします

pip install paramiko

(2) 以下のクラスはカプセル化されており、直接使用できます

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) 例えば 192.168 の IP アドレスを用意します.1.12 linux 仮想マシンを作成し、次のように上記のカプセル化されたクラスを直接使用して、linux コマンドのリモート実行を実現します。

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

(4) 実行結果は次のとおりです。

begin toリモート cmd を実行します: ifconfig
ens33: flags=41632057e901932173af9a1f1ac783f07b05 mtu 1500
inet 192.168.1.12 ネットマスク 255.255.255.0 ブロードキャスト 192.168.1.255
inet6 24 0e:3a1:da7: 6590:b39f:e15: 6b3d:7e7 prefixlen 64scopeid 0x0
ether 00:0c:29:58:d8:4 c txqueuelen 1000 (Ethernet )
RX パケット 195340 バイト 148862388 (141.9 MiB)
RX エラー 0 ドロップ 0 オーバーラン 0 フレーム 0
TX パケット 163425 バイト 20837281 (19.8 MiB)
TX エラー 0 ドロップ 0 オーバーラン 0 キャリア 0 コリジョン 0

lo: flags=73833075fc641f5bd33c2fbed0a1f71c7a mtu 65536

inet 127.0.0.1 ネットマスク 255.0.0.0
inet6 ::1 prefixlen 128scopeid 0x10f7e6dec31ab1a0471d06c55afaca8d77
loop txqueuelen 1000 (ローカル ループバック)
RX パケット 32 バイト 2592 (2.5 KiB)
RX エラー 0 ドロップ 0 オーバーラン 0 フレーム 0
TX パケット 32 バイト 2592 (2.5 KiB)
TX エラー 0 ドロップ 0 オーバーラン 0 キャリア 0 コリジョン 0

virbr0:フラグ= 4099< up、broadcast、multicast> mtu 1500

inet 192.168.122.1 netmask 255.255.255.0ブロードキャスト192.168.122.255
eather 52:54:00:e8:3f:5c txkeureen 1000(etherenet)# ## RX パケット 0 バイト 0 (0.0 B)
RX エラー 0 ドロップ 0 オーバーラン 0 フレーム 0
TX パケット 0 バイト 0 (0.0 B)
TX エラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0

以上がPython は paramiko ライブラリを介して Linux コマンドのリモート実行をどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。