Home > Article > Operation and Maintenance > How does Python implement remote execution of linux commands through the paramiko library?
(1) First install the paramiko library
pip install paramiko
(2) The following classes are encapsulated and can be used directly
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) For example, prepare an ip address of 192.168.1.12 linux virtual machine, and then directly use the above encapsulated class as follows to achieve remote execution of linux commands
ssh=SSHClient(host="192.168.1.12",username="root",password="xxxxxx") output=ssh.exec("ifconfig") print(output)
(4) The execution results are as follows
begin to run remote cmd: ifconfig
lo: flags=73940409b266a347906f934bf7de6f943d mtu 65536
ens33: flags=41632057e901932173af9a1f1ac783f07b05 mtu 1500
inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 24 0e:3a1:da7:6590:b39f:e15: 6b3d:7e7 prefixlen 64 scopeid 0x0c0e98daa6cc905d3cdbeafdad89e7fa3
ether 00:0c:29:58:d8:4 c 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 0inet 127.0.0.1 netmask 255.0.0.0
virbr0: flags=40998e6d741219daaca2222a7d10d95da900 mtu 1500
inet6 ::1 prefixlen 128 scopeid 0x10f7e6dec31ab1a0471d06c55afaca8d77
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 0inet 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 above is the detailed content of How does Python implement remote execution of linux commands through the paramiko library?. For more information, please follow other related articles on the PHP Chinese website!