【python13】ssh远程网络编程

前提条件:
1、安装linux系统
2、打开linux系统的ssh服务
3、关闭linux系统远程防火墙
4、需要安装paramiko服务

使用场景:
主要应用在远程访问系统并执行命令。

#coding=utf-8

import paramiko
import datetime
import os

class SSHParamiko:

    def __init__(self, ip, port, user, password):
        self.ip = ip
        self.port = port
        self.user = user
        self.password = password

    # 执行命令的函数
    def run_cmd(self, cmd):
        ssh = paramiko.SSHClient()

        # 允许连接不在know_hosts文件中的主机,know_hosts是存储公钥信息。
        # 加上这句话不用担心选yes的问题,会自动选上(用ssh连接远程主机时,第一次连接时会提示是否继续进行远程连接,选择yes)
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
        ssh.connect(self.ip, self.port, self.user, self.password)

        # exec_command参数使用只需要执行一次的命令,因为执行完该命令以后,shell会自动回到ssh初始连接的shell状态下
        # stdin,out,err,对应shell下的标准输入,输出和错误。
        stdin, out, err = ssh.exec_command(cmd)
        code = out.channel.recv_exit_status()
        if code == 0:
            print "命令执行成功..."
        else:
            print "命令执行失败..."
        out = out.read()
        err = err.read()
        ssh.close()
        if not err:
            return out
        else:
            return err

    # 下载单个文件的函数
    def down(self,remotedir, localdir):
        t = paramiko.Transport((self.ip, self.port))
        t.connect(username=self.user, password=self.password)
        ftp = paramiko.SFTPClient.from_transport(t)
        try:
            ftp.get(remotedir, localdir)
            print "下载成功"
        except:
            print "下载失败"
        t.close()



if __name__ == '__main__':

    ssh = SSHParamiko("172.20.10.3",22 ,"root", "luohao1993")
    result = ssh.run_cmd("ls -i")
    print result

    ssh.down("/home/test.txt", "/Users/test/test.txt")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容