paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作。
SSHClient:用于连接远程服务器并执行基本命令
#coding:utf-8
import paramiko
ssh=paramiko.SSHClient() #创建ssh对象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 允许连接不在know_hosts文件中的主机
ssh.connect(hostname='c1.salt.com',port=22,username='root',password='qwer1234') # 连接服务器
stdin,stdout,stderr=ssh.exec_command('df') #stdin 传送的命令,stdout 存放命令执行的结果,stderr 存放错误信息,stdout/stderr不能同时有信息
result=stdout.read()
ssh.close()
SSHClient 封装transport
#coding:utf-8
import paramiko
transport=paramiko.Transport(('hostname',22))
transport.connect(username='root',password='123')
sftp=paramiko.SFTPClient.from_transport(transport)
sftp.put('D:/Python27/README.txt','/home/server1.py') #将本地D:/Python27/README.txt上传至服务器/home/server1.py
sftp.get('/home/server1.py','D:/') #将/home/server1.py下载到本地D:/
transport.close()
堡垒机的实现
堡垒机执行流程:
- 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码)
- 用户登陆堡垒机,输入堡垒机用户名密码,现实当前用户管理的服务器列表
- 用户选择服务器,并自动登陆
- 执行操作并同时将用户操作记录
注:配置.brashrc实现ssh登陆后自动执行脚本,如:/usr/bin/python /home/wupeiqi/menu.py
公钥、私钥及堡垒机的实现代码具体见:http://www.cnblogs.com/wupeiqi/articles/5095821.html