背景介绍
在日常工作中我们经常需要访问linux server来获取server 信息 。如果使用python,可以通过python的ssh功能编写日常脚本来进行server的维护工作
功能实现
首先安装paramiko模块
python进行ssh操作需要用到paramiko模块,paramiko是python的三方ssh模块,通过socket实现了ssh功能。
pip install paramiko
ssh 代码示例
import paramiko
hostip = "192.168.1.100",
Port= 22,
user= "root",
pwd = "root"
#创建一个ssh的客户端,用来连接服务器
ssh = paramiko.SSHClient()
#创建一个ssh的白名单
know_host = paramiko.AutoAddPolicy()
#加载创建的白名单
ssh.set_missing_host_key_policy(know_host)
#连接服务器
ssh.connect(hostname=hostip , port=PORT, username=user, password=pwd)
#执行命令
stdin,stdout,stderr = ssh.exec_command("ls /root/")
#stdin 标准格式的输入,是一个写权限的文件对象
#stdout 标准格式的输出,是一个读权限的文件对象
#stderr 标准格式的错误,是一个写权限的文件对象
print(stdout.read().decode())
ssh.close()
sftp
文件上传与下载
import paramiko
trans = paramiko.Transport(
sock=("192.168.1.100",22)
)
trans.connect(
username="root",
password="root"
)
sftp = paramiko.SFTPClient.from_transport(trans)
#上传
#把本地的文件settings.py,上传到远端为/root/Desktop/settings.py
sftp.put("helloworld.py","/root/helloworld.py")
#下载
#从远程/root/download.py获取文件下载到本地名称为hh.py
# sftp.get("/root/download.py","download.py")
shell交互式连接
import paramiko
hostip = "192.168.1.100",
Port= 22,
user= "root",
pwd = "root"
#创建一个ssh的客户端
ssh = paramiko.SSHClient()
#创建一个ssh的白名单
know_host = paramiko.AutoAddPolicy()
#加载创建的白名单
ssh.set_missing_host_key_policy(know_host)
#连接服务器
ssh.connect(hostname=hostip , port=PORT, username=user, password=pwd)
shell = ssh.invoke_shell()
shell.settimeout(1)
command = input(">>>"+"\n")
shell.send(command)
while True:
try:
recv = shell.recv(512).decode()
if recv:
print(recv)
else:
continue
except:
command = input(">>>") + "\n"
shell.send(command)