Python脚本-linux远程安装某个服务

需求:

某公司因为网站服务经常出现异常,需要你开发一个脚本对服务器上的服务进行监控;检测目标服务器上是否存在nginx软件(提供web服务的软件),如果不存在则安装(服务器可能的操作系统Ubuntu24/RedHat9);如果nginx软件存在则检查nginx服务是否启动,如果没有启动则启动该服务(为了确认是否启动成功,需要在自己浏览器中访问服务器ip地址对应的URL:$http://192.168.0.200$ 是否能看到nginx启动页面)

- 提示1:检测服务器操作系统,推荐命令:`uname -a`,从它里面提取关键字检测
- 提示2:unbutn安装命令`apt install 软件名称`,redhat安装命令`yum install 软件名称`
- 提示3:nginx是一个软件,启动之后就会是一个名称为nginx的服务,提供网站服务-启动之后能在80端口访问到一个默认页面`http://192.168.0.200:80`等价于`http://192.168.0.200`,因为`http://`协议默认端口-80端口;需要注意`https://`默认端口-443端口

需求分析:


import  sys
import paramiko
def remote_command(host, username, password,service):try:#建立远程连接ssh = paramiko.SSHClient()#忽略known_hosts 文件限制ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#连接服务器ssh.connect(host, username=username, password=password)#执行命令stdin, stdout, stderr = ssh.exec_command("cat /etc/os-release")res=stdout.read().decode('utf-8').strip()if "Red Hat" in res:name='redhat'print("操作系统是redhat")elif "Ubuntu" in res:name='ubuntu'print("操作系统是ubuntu")stdin, stdout, stderr = ssh.exec_command(f"yum list installed | grep {service}")result = stdout.read().decode('utf-8').strip()#判断某个服务是否安装if service in result:#如果安装则检查其是否启动print(f"{service} 已安装,正在检查服务是否启动......")stdin, stdout, stderr = ssh.exec_command(f"systemctl is-active {service}")service_status =stdout.read().decode('utf-8').strip()if service_status =="inactive":print(f"{service}服务未启动.正在尝试启动....")stdin, stdout, stderr = ssh.exec_command(f"systemctl start {service}")if stderr.read().decode('utf-8').strip():print(f"启动服务失败:{stderr.read().decode('utf-8').strip()}")ssh.close()stdin, stdout, stderr = ssh.exec_command(f"systemctl is-active {service}")service_status_2 =stdout.read().decode('utf-8').strip()if service_status_2 =="active":print(f"{service}服务已启动")ssh.close()else:print(f"{service}已启动")ssh.close()else:#若果为安装,则安装print(f"{service}未安装,尝试安装......")#ubantu和redhat操作系统安装命令不同if name=="redhat":stdin, stdout, stderr = ssh.exec_command(f"yum install {service} -y")elif name=="ubuntu":stdin, stdout, stderr = ssh.exec_command(f"apt install {service} -y")#如果正常执行,则返回0,反之返回非0状态码install_result=stdout.channel.recv_exit_status()if install_result != 0:print(f"安装{service}失败:{stderr.read().decode('utf-8').strip()}")returnstdin, stdout, stderr = ssh.exec_command("systemctl start nginx")if stderr.read().decode('utf-8').strip():print(f"启动服务失败:{stderr.read().decode('utf-8').strip()}")returnstdin, stdout, stderr = ssh.exec_command(f"systemctl is-active {service}")service_status3=stdout.read().decode().strip()if service_status3 =="active":print(f"{service}已成功安装并启动")#关闭连接ssh.close()except Exception as e:print("连接建立失败",e)
if __name__=='__main__':remote_command(#获取命令行参数host=sys.argv[1],username=sys.argv[2],password=sys.argv[3],service=sys.argv[4])

例如:要在192.168.5.129上服务器上开启nginx服务

运行代码后nginx服务已成功开启

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/475237.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号)

芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号) 本期是平台君和您分享的第113期内容 前一段时间,高通公司(Qualcomm)发布安全警告称,提供的60多款芯片潜在严重的“零日漏洞”,芯片安全再一次暴露在大众视野。 那什么是“零日漏洞”?平台君从网上找了一段…

x-cmd mod | x pixi - 兼容 Conda 生态的极速包管理器,conda 和 mamba 用户的另一选择

目录 介绍使用语法参数子命令 介绍 x pixi 模块是由 x-cmd 团队使用 posix shell 实现的 pixi 命令增强工具。它能优化 pixi 命令的安装和使用体验,具体如下: 提供带有 advise 的自动补全功能。对于中国区用户,我们还提供了汉化版的 advise…

Rust derive macro(Rust #[derive])Rust派生宏

参考文章:附录 D:派生特征 trait 文章目录 Rust 中的派生宏 #[derive]基础使用示例:派生 Debug 派生其他常用特征示例:派生 Clone 和 Copy 派生宏的限制和自定义派生自定义派生宏上面代码运行时报错了,以下是解释 结论…

Node.js | npm下载安装及环境配置教程

前言: npm 是 Nodejs 下的包管理器,在下载 Node.js 后自动安装,因此本文同时适合 Node.js / npm 的下载安装及环境配置。 一、软件安装 Node.js中文网官网下载页:Node.js 中文网 (nodejs.com.cn) 1)进入下载页&#xf…

pytorch奇怪错误

ValueError: At least one stride in the given numpy array is negative, and tensors with negative strides are not currently supported. (You can probably work around this by making a copy of your array with array.copy().) 今天在这里遇到了一个奇怪的bug impor…

EDA实验设计-led灯管动态显示;VHDL;Quartus编程

EDA实验设计-led灯管动态显示;VHDL;Quartus编程 引脚配置实现代码RTL引脚展示现象记录效果展示 引脚配置 #------------------GLOBAL--------------------# set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED" set_…

151页PDF | XX集团数字化转型SAP项目规划方案(限免下载)

一、前言 这份报告是XX集团数字化转型SAP项目规划方案,该报告涵盖了集团战略解读、管理痛点分析、信息化建设目标、整体架构方案、实施策略、SAP系统价值和预期收益,旨在通过数字化推动集团运营模式变革,实现降本增效和价值创新。 《XX集团…

共建智能软件开发联合实验室,怿星科技助力东风柳汽加速智能化技术创新

11月14日,以“奋进70载,智创新纪元”为主题的2024东风柳汽第二届科技周在柳州盛大开幕,吸引了来自全国的汽车行业嘉宾、技术专家齐聚一堂,共襄盛举,一同探寻如何凭借 “新技术、新实力” 这一关键契机,为新…

在 cmd 输入 python.exe 后不报错也无反应的问题

在 cmd 输入 python.exe 后不报错:‘python.exe ’不是内部或外部命令,也不是可运行的程序或批处理文件,也无反应。只是显示这样一个弹窗: 查了下环境变量path,看看有什么地方有python.exe,发现原来在C:\Us…

算法日记 30 day 动态规划(背包问题)

今天是动态规划的另一个大类,背包问题。 背包问题的分类 这张图中涵盖了我们能遇到的绝大部分背包问题。 首先是01背包问题 01背包问题 01背包问题:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value…

如何修复WordPress卡在维护模式

当你管理WordPress网站时,没有什么比看到它卡在维护模式更令人沮丧的了。特别是在你进行重要更新或期望大量流量的时候,这种情况会更加令人不安。 维护模式可能由许多因素引起,从简单的文件损坏到更复杂的插件冲突或存在的.maintenance文件。…

Oracle OCP认证考试考点详解082系列22

题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 105. 第105题: 题目 解析及答案: 题目翻译: 关于Oracle数据库中的事务请选择两个正确的陈述&#xf…

目录背景缺少vscode右键打开选项

目录背景缺少vscode右键打开选项 1.打开右键管理 下载地址:https://wwyz.lanzoul.com/iZy9G2fl28uj 2.开始搜索框搜索vscode, 找到其源目录 3.目录背景里面, 加入vscode.exe 3.然后在目录背景下, 右键, code就可以打…

第三届航空航天与控制工程国际学术会议 (ICoACE 2024)

重要信息 会议官网:www.icoace.com 线下召开:2024年11月29日-12月1日 会议地点:陕西西安理工大学金花校区 (西安市金花南路5号) 大会简介 2024年第三届航空航天与控制工程国际学术会议(ICoACE 2024&a…

【团购核销】抖音生活服务商家应用快速接入①——基础工作

文章目录 一、前言二、抖音开放平台(服务商平台)三、认证服务能力四、第三方生活服务商家应用五、APPID和AppSecret六、申请接口权限七、开发配置八、参考 一、前言 目的:将抖音团购核销的功能集成到我们自己开发的App和小程序中 名词解释技术…

十六.SpringCloudAlibaba极简入门-整合Grpc代替OpenFeign

前言 他来了他来了,停了快2个月了终于又开始更新文章啦,这次带来的绝对是干货!!!。由于公司项目进行重构的时候考虑到,OpenFeign做为服务通信组件在高并发情况下有一定的性能瓶颈,所以将其替换…

MySQL库和表的操作

目录 一. 查看数据库 二. 创建数据库 三. 字符集和校验规则 四. 修改和删除数据库 4.1 数据库修改 4.2 数据库删除 五. 备份与恢复 5.1 备份 5.2 还原 5.3 注意事项 5.4 查看连接情况 六. 创建表 七. 查看表结构 八. 修改表 九. …

在Linux下配置gitee与Github的远程仓库

目录 前言 云服务器下载git 检测是否下载成功git Linux下配置gitee远程仓库 代码提交演示 git三板斧 Linux下配置Github远程仓库 最后的提醒 前言 那么本篇文章将是在,你已经创建了本地仓库的基础上,在Linux下配置gitee的远程仓库的步骤&#xff…

mini-lsm通关笔记Week2Day5

项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在本章中,您将: 实现manifest文件的编解码。系统重启时从manifest文件中恢复。 要将测试用例复制到启动器代码中并运行…

ESP8266 STA模式TCP服务器 电脑手机网络调试助手

STA模式TCP服务器和手机电脑网络调试助手多连接