美文网首页
python-paramiko让你远程在服务器上执行命令

python-paramiko让你远程在服务器上执行命令

作者: 糖醋沼跃鱼 | 来源:发表于2021-01-08 18:50 被阅读0次

    本篇文章简述SSHclient对象的常用方法,并提供一个简单用例

    connect()

    连接到ssh服务器上去并且进行认证,并且会根据主机的秘钥检查服务器的主机秘钥,如果服务器主机的hostname没有在system host keys和local host keys中找到,将会使用缺少主机秘钥的策略,默认的策略是拒绝秘钥并且引发SSHException.

    这里如果大家没有用本地的终端通过ssh访问过远程服务器的话,在.ssh文件里的host_key文件是不会保存服务器的秘钥的。就会引发SSHException。

    下面介绍几个常用的参数

    参数 解释
    hostname(str) 需要连接的主机
    port(int) 端口号,默认22
    username(str) 需要登录的用户名
    password(str) 密码
    passphrase(str) 解码私钥
    pkey(PKey) 可选用于认证的私钥
    key_filename(str) 尝试进行身份验证的可选私钥和或证书的文件名或文件名列表

    timeout(float): TCP连接的可选超时(以秒为单位)
    allow_agent(bool) | 默认为True,设置为False以禁用连接到SSH代理
    look_for_keys(bool): 默认为True,设置为False可禁用在〜/.ssh /中搜索可发现的私钥文件

    该方法将会抛出的异常:
    BadHostKeyException: 如果无法验证服务器的主机秘钥
    AuthenticationException: 如果用户认证失败
    SSHException: 在SSH会话建立的过程中出现错误

    exec_command()

    在SSH服务器上执行命令。一个新的Channel将会打开,并执行所请求的命令。命令的输入和输出流作为代表stdin,stdout,stderr。

    参数 解释
    command(str) 执行的命令
    bufsize(int) 解释方式与Python中的内置file()函数相同
    timeout(int) 设置命令的channel超时
    get_pty(bool) 向服务器请求伪终端(默认为false)

    return
    返回命令执行后的stdin,stdout,stderr(3-tuple)

    raise
    抛出SSHException,如果服务端没有正常执行命令

    close()

    关闭SSHClient和底层的Transport

    get_host_keys()

    获取到HostKeys对象,可用于检查或更改本地主机密钥。

    get_transport()

    返回基础Transport对象,可用于执行更底层的任务,例如打开特定种类的channels

    load_host_keys(filename)

    加载本地的主机密钥文件,可以多次调用此方法。 每个新的主机密钥集将与现有的密钥集合并(如果存在冲突,则用新的旧密钥合并)。 自动保存时,将使用最后一个主机名。

    load_system_host_keys(filename=None)

    加载系统的主机密钥文件。如果filename保留为None,将尝试从用户的本地“已知主机”文件中读取密钥(由OpenSSH使用),并且如果无法读取该文件,则不会引发异常。这可能仅在posix上有用。

    最后发一个简单的用例

    from paramiko import SSHClient
    
    client = SSHClient()
    client.load_system_host_keys()
    client.connect(hostname = "your ip", username= "your username", password = "your password")
    stdin,stdout,stderr = client.exec_command("pwd")
    print(stdout.read().decode("utf-8"))
    client.close()
    

    相关文章

      网友评论

          本文标题:python-paramiko让你远程在服务器上执行命令

          本文链接:https://www.haomeiwen.com/subject/mxzcaktx.html