Python之paramiko

paramiko库可以实现在python代码中使用ssh协议直接对远程服务器进行操作,而不需要调用ssh命令。

paramiko有两个核心类,SSHClient和SFTPClient,前者类似ssh,后者类似sftp。

SSHClient类的常用方法:

1.connect:实现服务器的连接与认证,hostname是必传参数

connect(self,hostname,port=22,username=None,password=None,pkey=None,key_filename=None,timeout=None,allow_agent=True,look_for_keys=True,compress=False)

2.set_missing_host_key_policy:设置远程服务器没有在know_hosts文件中记录时的应对策略。AutoAddPolicy:自动添加服务器到know_hosts文件;RejectPolicy(默认策略):拒绝本次连接;WarningPolicy:警告并添加。

3.exec_command:在远程服务器上执行Linux命令。

4.open_sftp:在当前ssh会话的基础上创建一个sftp会话。该方法会返回一个SFTPClient对象。

SFTPClient的常用方法:

1.put:上传本地文件到远程服务器。

2.get:从远程服务器上下载文件。

3.mkdir/remove/rmdir/rename/stat/listdir

#!/usr/bin/python
#-*- coding: UTF-8 -*-
from __future__ import print_function
import paramiko

def put_file(ip):
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(ip)

    stdin,stdout,stderr = client.exec_command('ls -l')
    print(stdout.readlines())

    sftp = client.open_sftp()
    sftp.put('11.py','11.py')
    sftp.chmod('11.py',0o755)

def main():
    with open('hosts') as f:
        for line in f:
            put_file(line.strip())

if __name__ == '__main__':
    main()


「 文章如果对你有帮助,请点个赞哦^^ 」 

0