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
若无特殊注明,文章均为本站原创或整理发布。
转载请注明本文地址:https://om.fangxiaoxiong.com/2902.html