Python+requests通过paramiko远程登录Linux执行sh命令
程序员文章站
2022-09-21 10:47:24
在做自动化测试过程中, 偶尔需要登录Linux服务器执行一些sh命令。Python的paramiko模块,遵循SSH2协议, 支持以加密和认证的方式远程连接服务器, 可用来连接远程linux主机, 然后执行Linux命令或者通过SFTP传输文件封装的方法import paramikoclass Operate_Server(): def __init__(self, hostname, port, username): self.hostname = hostnam....
在做自动化测试过程中, 偶尔需要登录Linux服务器执行一些sh命令。Python的paramiko模块, 遵循SSH2协议, 支持以加密和认证的方式远程连接服务器, 可用来连接远程linux主机, 然后执行Linux命令或者通过SFTP传输文件
封装的方法
import paramiko
class Operate_Server():
def __init__(self, hostname, port, username):
self.hostname = hostname # 服务器IP地址
self.port = port # 服务器登录端口号
self.username = username # 登录账号
def run(self, command, **kwargs):
"""
:command: sh命令
:param kwargs: 传参(private_key: 私钥路径) (password: 密码)
:return:
"""
try:
# 创建SSHClient对象,ssh
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 通过密钥调用connect函数建立Linux连接
if "private_key" in kwargs.keys():
private_key = paramiko.RSAKey.from_private_key_file(kwargs["private_key"])
ssh.connect(
hostname=self.hostname, port=self.port, username=self.username, pkey=private_key)
# 通过密码调用connect函数建立Linux连接
if "password" in kwargs.keys():
ssh.connect(
hostname=self.hostname, port=self.port, username=self.username, password=kwargs["password"])
print(" 账号[{0}]成功登录服务器[{1}]".format(self.username, self.hostname))
# 执行sh命令并返回执行结果
result = ssh.exec_command(command)[1].read()
print(" shell命令[%s]执行结果:%s" % (command, result))
# 登出服务器
ssh.close()
print(" 登出服务器[%s]" % self.hostname)
except Exception as e:
print("发生未知错误:%s" % e)
raise
if __name__ == "__main__":
# 通过密码登录
Operate_Server(hostname="IP", port=22, username="用户").run(command="pwd", password="密码")
# 通过密钥认证登录
Operate_Server(hostname="IP", port=22, username="用户").run(command="pwd", private_key="私钥路径")
本文地址:https://blog.csdn.net/weixin_43507959/article/details/108270783
上一篇: selenium web自动化框架实现浏览器模拟人操作
下一篇: 不再等了,我走了