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协议,支持以加密和认证的方式,进行远程服务器的连接. ...
随机推荐
- Install marvel and head plugin for ealsticsearch
安装ES插件 marvel marvel是ES的供开发者免费使用的管理工具,他内置了一款叫做Sense的控制台,Sense是运行在浏览器中的,基于Sense可以很方便的和ES进行通讯.官方文档中的很多 ...
- android textview改变部分文字的颜色和string.xml中文字的替换(转)
转 :http://blog.csdn.net/ljz2009y/article/details/23878669 一:TextView组件改变部分文字的颜色: TextView textView ...
- 状态压缩 HDU 1565
多组数据 给你一个n*n的矩阵 不能相邻的取数 上下左右 求最大的和 #include<stdio.h> #include<algorithm> #include<str ...
- 100726C
显而易见,我们要找子串,每次记录前缀和,算出余数,然后通过一个数组保存余数,答案就是加上之前余数的总和,要注意整除的情况 #include<iostream> #include<cs ...
- 计算&IO密集型任务的 优化
问题原因: 最近由于工作实际需求,需要对某个计算单元的计算方法进行重构.原因是由于这个计算单元的计算耗时较长,单个计算耗时大约在1s-2s之间,而新的需求下,要求在20s内对大约1500个计算单元计算 ...
- jquery读取iframe子页面和父页面的处理
1. jquery 在iframe子页面获取父页面元素代码如下: $("#objid", parent.document) 2. jquery在父页面 获取iframe子页面的元素 ...
- Android Studio上面最好用的插件
转载:http://www.jianshu.com/p/d76b60a3883d 在开发过程中,本人用的最爽的就是代码生成的插件,帮助我们自动完成大量重复简单的工作.个人也觉得代码自动生成工具是最值得 ...
- C++开发的基于TCP协议的内网聊天工具
项目相关地址 源码:https://github.com/easonjim/TCPChat bug提交:https://github.com/easonjim/TCPChat/issues
- ESPCMS /adminsoft/control/citylist.php Int SQLInjection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link:2. 漏洞触发条件 0x1: POC htt ...
- Git: 一些基本命令
1.快速获取远程项目 1) git clone xxx.git // 如:git clone git://git.kernel.org/pub/scm/git/git.git 2) git clone ...