paramiko模拟ansible远程执行命令
主模块
#!/usr/bin/env python
from multiprocessing import Process
import paramiko
import time
import sys
import new_latest_configparser #导入配置信息模块
# import groupshow
Username = "root"
Password = "123456"
Port = 22
Current_time = time.strftime("%Y-%m-%d %X", time.localtime())
#执行命令处
def runCmd(ip,cmd):
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
s.connect(hostname=ip,port=Port,username=Username,password=Password)
stdin,stdout,stderr = s.exec_command(cmd)
result = stdout.read()
# print(result)
s.close()
print("IP:[%s]at:[%s] run command [%s]".center(50, "-") % (ip, Current_time,cmd))
print(str(result, encoding="utf-8")) except:
print("%s is not exits" %ip)
# if_continue = input("请输入是否需要继续输入命令,是按[Y],否按[N]")
def handle_Process():
while True:
print("欢迎来到ansible模拟系统,主机分组如下".center(50, "-"))
#调用主机信息模块方法
new_latest_configparser.showgroups()
User_choice = str(input("请选择组:").strip())
if len(User_choice) == 0 or User_choice not in new_latest_configparser.GROUP or User_choice.isdigit():
print("请输入正确的组名")
continue
elif User_choice == "webserver":
#打印主机信息处
print(new_latest_configparser.config.get("webserver", "IP"))
print(new_latest_configparser.config.get("webserver", "IP2"))
break elif User_choice == "dbserver":
# print(functions.config.get("dbserver"))
print(new_latest_configparser.config.get("dbserver","IP"))
break
try: cmd = input("please input your cmd:")
#判断主机组
if User_choice == "webserver":
#循环获取IP
for ip in new_latest_configparser.IPlist:
p = Process(target=runCmd,args=(ip,cmd))
p.start() elif User_choice == "dbserver":
for ip in new_latest_configparser.Other_list:
p = Process(target=runCmd, args=(ip, cmd))
p.start()
except IndexError:
print("please input a command")
if __name__ == '__main__':
handle_Process()
配置信息模块
import configparser
config = configparser.ConfigParser()
config.read("host.conf")
sec = config.sections()
kvs = config.items("webserver")
GROUP = [
"webserver",
"dbserver" ]
IP = str(kvs[0][1])
IP2 = str(kvs[1][1])
IPlist = []
IPlist.append(IP)
IPlist.append(IP2) #另外一组信息
Other_kvs = config.items("dbserver")
New_IP = str(Other_kvs[0][1])
Other_list = []
Other_list.append(New_IP)
def showgroups():
for group in sec:
print(group)
配置信息
[webserver]
IP = 192.168.170.143
IP2 = 192.168.170.150
[dbserver]
IP = 192.168.170.129
运行结果

paramiko模拟ansible远程执行命令的更多相关文章
- 网络编程 - 1.简单的套接字通信/2.加上通信循环/3.bug修复/4.加上链接循环/5.模拟ssh远程执行命令
1.简单的套接字通信 服务端 ''' 服务端 接电话 客户端 打电话 1.先启动服务端 2.服务端有两种套接字 1.phone 用来干接收链接的 2.conn 用来干收发消息的 ''' import ...
- 模拟ssh远程执行命令,粘包问题,基于socketserver实现并发的socket
06.27自我总结 1.模拟ssh远程执行命令 利用套接字编来进行远程执行命令 服务端 from socket import * import subprocess server = socket(A ...
- 网络编程之模拟ssh远程执行命令、粘包问题 、解决粘包问题
目录 模拟ssh远程执行命令 服务端 客户端 粘包问题 什么是粘包 TCP发送数据的四种情况 粘包的两种情况 解决粘包问题 struct模块 解决粘包问题 服务端 客户端 模拟ssh远程执行命令 服务 ...
- Ansible 远程执行命令
写法如下: [root@localhost ~]$ ansible 192.168.119.134 -m command -a 'date' # 对指定的主机远程执行命令,-m 指定使用哪个模块,-a ...
- 模拟ssh远程执行命令
目录 一.服务端 二.客户端 一.服务端 from socket import * import subprocess server = socket(AF_INET, SOCK_STREAM) se ...
- Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件
一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...
- 使用paramiko远程执行命令、下发文件
写部署脚本时,难免涉及到一些远程执行命令或者传输文件. 之前一直使用sh库,调用sh.ssh远程执行一些命令,sh.scp传输文件,但是实际使用中还是比较麻烦的,光是模拟用户登陆这一点,还需要单独定义 ...
- 远程执行命令:paramiko
paramiko模块用于通过 ssh 登录到远程客户端主机并执行命令,常见用法如下: [root@localhost ~]$ yum install -y python-paramiko 通过用户名密 ...
- 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件
本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...
随机推荐
- 使用D3绘制图表(4)--面积图表
面积图表的绘制就是在曲线图表的基础上做一点小小的改动.其他的代码跟绘制曲线图表没有什么区别,下面有黄色背景颜色的代码就是修改的,是不是很简单,第一句修改的地方就是把之前绘制线的函数(line)改成了绘 ...
- idea 新建web项目
- java中map<string,int>
java中 Iterator it=wordsmap.entrySet().iterator(); while(it.hasNext()) { Map.Entry<String,Integer& ...
- ES6新特性:Proxy代理器
ES6新特性:Proxy: 要使用的话, 直接在浏览器中执行即可, node和babel目前还没有Proxy的polyfill;,要使用的话,直接在浏览器中运行就好了, 浏览器的兼容性为:chrome ...
- 安全框架 SpringSecurity 和 Shiro 对比
突然再次很想理一下权限的事,但是实在不知道实际情况选哪个框架好,现在整理下网上的资料,做一下对比. 1.Spring-security 对spring 结合较好,如果项目用的springmvc ,使用 ...
- 100735D
排序+搜索 为什么这是对的呢?其实我不是很清楚 大概是这个样子的:我们希望构成三角形的三个数尽可能集中,因此在搜索中贪心地选取从最小依次往上,选取三条边,但是总感觉有反例,先挖个坑... #inclu ...
- java:提示Could not initialize class sun.awt.X11GraphicsEnvironment
前几天发现tomcat提示 Could not initialize class sun.awt.X11GraphicsEnvironment 问题.以为不验证,就没太关注,今天发现,有同事提示了个 ...
- Html一天入门
一.什么是HTML 1.html: HyperText Markup Language 超文本标记语言,是最基础的网页语言,而且都是由标签组成. 2.基本格式: <html> <he ...
- How to fix the sources list
How to fix the sources list Sometimes the apt-get may not work, it is often caused by the misspelled ...
- SQL select结果集和return的区别
IF EXISTS (SELECT 1 FRIN sys.objects where object_id=OBJECT_ID(N'[dbo].[testReturn_up]')AND type in ...