Python怎么通過paramiko庫實現(xiàn)遠程執(zhí)行l(wèi)inux命令

(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)比如準備一個ip地址為192.168.1.12的linux虛擬機,然后直接按照如下方法使用上面封裝的類即可實現(xiàn)遠程執(zhí)行linux命令

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

(4)執(zhí)行結果如下

begin to run remote cmd: ifconfigens33: flags=4163 ?mtu 1500? ? ? ? inet 192.168.1.12 ?netmask 255.255.255.0 ?broadcast 192.168.1.255? ? ? ? inet6 240e:3a1:da7:6590:b39f:e15:6b3d:7e7 ?prefixlen 64 ?scopeid 0x0? ? ? ? inet6 fe80::4a67:131d:9133:acdf ?prefixlen 64 ?scopeid 0x20? ? ? ? ether 00:0c:29:58:d8:4c ?txqueuelen 1000 ?(Ethernet)? ? ? ? RX packets 195340 ?bytes 148862388 (141.9 MiB)? ? ? ? RX errors 0 ?dropped 0 ?overruns 0 ?frame 0? ? ? ? TX packets 163425 ?bytes 20837281 (19.8 MiB)? ? ? ? TX errors 0 ?dropped 0 overruns 0 ?carrier 0 ?collisions 0lo: flags=73 ?mtu 65536? ? ? ? inet 127.0.0.1 ?netmask 255.0.0.0? ? ? ? inet6 ::1 ?prefixlen 128 ?scopeid 0x10? ? ? ? loop ?txqueuelen 1000 ?(Local Loopback)? ? ? ? RX packets 32 ?bytes 2592 (2.5 KiB)? ? ? ? RX errors 0 ?dropped 0 ?overruns 0 ?frame 0? ? ? ? TX packets 32 ?bytes 2592 (2.5 KiB)? ? ? ? TX errors 0 ?dropped 0 overruns 0 ?carrier 0 ?collisions 0virbr0: flags=4099 ?mtu 1500? ? ? ? inet 192.168.122.1 ?netmask 255.255.255.0 ?broadcast 192.168.122.255? ? ? ? ether 52:54:00:e8:3f:5c ?txqueuelen 1000 ?(Ethernet)? ? ? ? RX packets 0 ?bytes 0 (0.0 B)? ? ? ? RX errors 0 ?dropped 0 ?overruns 0 ?frame 0? ? ? ? TX packets 0 ?bytes 0 (0.0 B)? ? ? ? TX errors 0 ?dropped 0 overruns 0 ?carrier 0 ?collisions 0

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享