首页 > 运维 > linux运维 > 正文

Python怎么通过paramiko库实现远程执行linux命令

WBOY
发布: 2023-05-17 10:55:50
转载
1803人浏览过

(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虚拟机,然后直接按照如下方法使用上面封装的类即可实现远程执行linux命令

Sider
Sider

多功能AI浏览器助手,帮助用户进行聊天、写作、阅读、翻译等

Sider 3159
查看详情 Sider
ssh=SSHClient(host="192.168.1.12",username="root",password="xxxxxx")
output=ssh.exec("ifconfig")
print(output)
登录后复制

(4)执行结果如下

begin to run remote cmd: ifconfigens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  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<global>        inet6 fe80::4a67:131d:9133:acdf  prefixlen 64  scopeid 0x20<link>        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<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10<host>        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<UP,BROADCAST,MULTICAST>  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

以上就是Python怎么通过paramiko库实现远程执行linux命令的详细内容,更多请关注php中文网其它相关文章!

相关标签:
python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:亿速云网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号