利用saltstack的salt.client模块可以在python的命令行下或者python脚本里执行相应的salt命令 master端想要执行类似 salt '*' cmd.run 'uptime' 在saltclient里可以这么写 import salt.client local = salt.client.LocalClient() local.cmd('*', 'cmd.run', ['uptime']) 也可以放到后台执行只返回一个jid cmd_async('*', 'cmd.r…
前几篇文章已经完成了saltstack的安装.认证,从这篇文章开始学习使用saltstack的远程执行. 1.salt远程执行命令详解Usage: salt [options] '<target>' <function> [arguments] [options] :此选项指定以何种方式匹配target. : 通配符匹配 -N: 匹配分组nodegroup -E: 正则匹配 -G:grains匹配 -I: pillar匹配 -L: 列表匹配,使用逗号或者空格匹配. -S: 使用IP…
salt stack 远程命令 salt stack是一种自动化的运维工具,可以同时对N台服务器进行配置管理.远程命令执行等操作. salt stack分为两个部分 salt-master,部署在控制服务器上,用于发出运维指令: salt-minion,部署在所有需要批量运维的线上服务器上: salt安装 服务端:yum install salt-master -y 客户端:yum install salt-minion -y 配置文件 服务端:/etc/salt/master 服务端配置: i…
------类似于cmd的功能,client执行命令,server发命令结果发送到client -----------server.py------------------- import subprocess#subprocess.Popen,主要用Popen这个类实现shell import socketsk=socket.socket()print(sk)address=('127.0.0.1',8003)sk.bind(address)sk.listen(3)print('waiting…
一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问题 Puppet (www.puppetlabs.com)基于rubby开发,c/s架构,支持多平台,可管理配置文件.用户.cron任务.软件包.系统服务等. 分为社区版(免费)和企业版(收费),企业版支持图形化配置. Saltstack(官网 https://saltstack.com,文档doc…
Saltstack异步执行命令 salt执行命令有时候会有超时的问题,就是命令下发下去了,部分主机没有返回信息,这时候就很难判断命令或任务是否执行成功.因此,salt提供异步执行的功能,发出命令后立即返回一个jid.然后我们就可以根据这个jid来查询任务是否执行成功. 命令行实现异步 参数--async,返回job ID,根据job ID我们可以查询执行结果. salt --async '*' test.ping salt-run jobs.lookup_jid 2016111716315335…
用python操作saltstack,如果是在本地,则可以用python的salt模块,但如果要操作远程saltstack,则不行,今天就来看看怎么操作. 用python操作远程的saltstack,需要远程saltstack安装并开启salt-api,然后用python登录salt-api获取token,再执行命令,具体代码如下: #! coding:utf-8 import urllib import urllib2 from op_site.settings import salt_htt…
saltstack 支持在master上向client 远程执行命令,并显示命令执行的结果 命令格式: salt '<操作目标>' <方法> [参数] 示例 示例1 ping检查agent *:代表所有minion主机:test:模块: ping:test模块的一个方法,这里的单引号也可以使用双引号 [root@stack-master ~]# salt '*' test.ping stack-master: True stack-node01: True stack-node02…
本来转自http://www.cnblogs.com/MacoLee/p/5753640.html  版权归原作者所有 说明 salt '*' sys.list_modules #列出当前版本支持的模块 API原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现的.以下API实现test.ping的示例:(其他API调用只需要改变cmd即可) import salt.client client = salt.client.LocalCli…
saltstack有3大功能:远程执行,配置管理,云管理 其中远程执行又可分解为:目标,模块,返回  这3个部分. 比如下面语句 [root@master ~]# salt '*' test.ping minion01: True minion02: True [root@master ~]# salt '*' cmd.run 'df -h' minion02: Filesystem Size Used Avail Use% Mounted on /dev/sda3 35G 4.2G 30G 1…
ansible 和 saltstack 都是为了同时在多台主机上执行相同的命令, 但是 salt配置麻烦,ansible基本不用配置, ansible 通过ssh来连接并控制被控节点 1. 安装 第一步: 下载epel源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 第二步: 安装ansible yum install -y ansible 2. 管控主机秘钥登录被控主机 ssh 秘钥登…
RPC异步执行命令 需求: 利用RibbitMQ进行数据交互 可以对多台服务器进行操作 执行命令后不等待命令的执行结果,而是直接让输入下一条命令,结果出来后自动打印 实现异步操作 不懂rpc的请移步http://www.cnblogs.com/lianzhilei/p/5977545.html(最下边) 本节涉及最多的还是rabbitmq通信原理知识,要求安装rabbitmq服务 程序用广播topic模式做更好 程序目录结构: 程序简介: # 异步rpc程序 # 博客地址 [第11天博客地址](…
作为一个后台程序猿,经常需要把一堆程序集(DLL)或者应用程序(EXE)复制到多个服务器上,实现程序的代码逻辑更新,用以测试新的功能或改动逻辑.这里给大家介绍一个自己实现的PowerShell脚本,方便大家替换DLL或者EXE到多个Windows机器上. 一.   脚本用途 用于方便复制多个文件到多个服务器上. 二.   脚本功能 脚本的主要功能如下: 支持通过最后修改时间过滤文件,设定时间之前的文件不进行复制操作(逻辑设计源于Rebuild代码后只替换新Build出来的有改动的文件): 支持多…
上传文件 import os import paramikoimport logging from django.core.cache import cache from YunTai import settings def upload_files(connectIp): ssh = paramiko.Transport((connectIp, 22)) try: password = cache.get('backup_server_password') if not password: r…
Redis的client list 命令可以获取当前连接到redis server端的所有客户端以及相关状态,本篇主要介绍每一个参数的作用. clisnt list 命令输出结果如下: (1)标识:id.addr.fd.name这四个属性属于客户端的标识: id:客户端连接的唯一标识,这个id是随着Redis的连接自增的,重启Redis后会重置为0. addr:客户端连接的ip和端口. fd:socket的文件描述符,与lsof命令结果中的fd是同一个,如果fd=-1代表当前客户端不是外部客户端…
在redis.c的initServerConfig()方法中,通过调用dictCreate方法初始化server端的命令表.这个命令表是一个hashtable,可以通过key找到相关的命令: /* Command table -- we initiialize it here as it is part of the* initial configuration, since command names may be changed via* redis.conf using the renam…
1.UDP通信编解码类 (1) 类 # ------------------UDP通信解码编码类------------------------ from socket import * class My_Socket(socket): def __init__(self,coding='utf-8'): self.coding = coding super(My_Socket, self).__init__(type=SOCK_DGRAM) def my_recv(self,num): msg…
转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.paramiko模块介绍 paramiko模块提供了基于ssh连接,进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 回到顶部 2.paramiko的使用方法 (1)基于用户名和密码的sshclient方式登陆 #!/usr/bin/env python #codi…
client端执行命令,server端返回命令结果 # server 端 import socket, subprocess sk = socket.socket() address=('127.0.0.1', 8000) sk.bind(address) sk.listen(3) print('waiting....') while 1: conn, addr = sk.accept() print(addr) while 1: try: data = conn.recv(1024) exce…
1.salt安装及配置详解 https://www.cnblogs.com/lgeng/p/6567424.html centos7配置: https://www.jianshu.com/p/4c9185ad0bbd centos6安装: https://blog.csdn.net/wh211212/article/details/77053708?locationNum=9&fps=1 centos6配置: https://www.cnblogs.com/zzzhfo/p/5790918.ht…
1.前言 在渗透或是病毒分析总是会遇到很多千奇百怪的下载文件和执行命令的方法. 2.实现方式 2.1.Powershell win2003.winXP不支持 $client = new-object System.Net.WebClient $client.DownloadFile('http://payloads.online/file.tar.gz', 'E:\file.tar.gz') 2.2.FTP ftp 192.168.3.2 输入用户名和密码后 cd E:\file # 进入E盘下…
paramiko模块用于通过 ssh 登录到远程客户端主机并执行命令,常见用法如下: [root@localhost ~]$ yum install -y python-paramiko 通过用户名密码登录远程客户端主机并执行命令: #!/usr/bin/env python #-*- coding:utf-8 -*- import paramiko ssh = paramiko.SSHClient() # 创建一个ssh客户端对象 ssh.set_missing_host_key_policy…
之前写过一个python远程执行命令的脚本,但在一个性能测试中,要将程序批量分发到不同服务器,程序无法使用,再将之前的脚本更新,加入批量上传的功能.之前脚本地址:http://www.cnblogs.com/landhu/p/4961##coding:utf-8 #------------------ #Author:Hu #Created:2016-02-29 #------------------ import paramiko,os,time,sys from optparse impor…
RPC异步执行命令 需求: 利用RibbitMQ进行数据交互 可以对多台服务器进行操作 执行命令后不等待命令的执行结果,而是直接让输入下一条命令,结果出来后自动打印 实现异步操作 不懂rpc的请移步http://www.cnblogs.com/lianzhilei/p/5977545.html(最下边) 本节涉及最多的还是rabbitmq通信原理知识,要求安装rabbitmq服务 程序用广播topic模式做更好 程序目录结构: 程序简介: # 异步rpc程序 # 博客地址 [第11天博客地址](…
问题:redis-cli连接客户端后,执行命令没有反应   解决方法:通过指定一个开启守护进程的配置文件来启动服务,redis-server ../redis.conf 说明:redis.conf是我编辑开启了守护进程的一个配置文件daemonize为yes   原因:./redis-server启动时不填写配置文件地址加载默认的redis的配置,没有开启守护进程 我redis的server和client是在一台虚机上,启动redis服务后我直接ctrl+z了.导致server停止了,所以执行c…
本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOS X, Windows等都可以支持 远程执行命令 def ssh_connect(host, username, passwd, *commands): "&q…
原则:发送一个接受一个 原理:发送执行命令的大小给客户端,客户端根据接受的大小判断是否全部接收了服务器sendall()发送的全部 利用send发送的全部数据都是bytes类型的,需要进行字符编码的转换,因为中文环境,所以需要转换GBK查看 客户端: # 客户端 import socket # family=AF_INET, 代表使用IPV4的IP协议 # type=SOCK_STREAM 代表使用TCP协议进行连接 client = socket.socket() ip_addr = ('12…
#!/usr/bin/env python # -*- coding: utf- -*- # @Time : // : # @Author : xuxuedong # @Site : # @File : sys.py # @Software: PyCharm import os, sys,platform #for linux # if platform.system() == "windows": # Base_DIR = ]) # print(Base_DIR) # else: #…
问题:paramiko远程执行命令,需要等到命令返回信息,如果命令执行时间比较长,返回信息就需要等很久 方案:1.使用nohup + 待执行命令 + & ,使用后台执行的方式,应该可以快速返回 2.设置paramiko的执行命令等待超时时间 stdin, stdout, stderr = self.client.exec_command(cmd,timeout=10,get_pty=True) 其实上面的两种方案都不可行:方案1,需要优化,下面这种直接调用的方式会导致test.sh启动不起来 s…
06.27自我总结 1.模拟ssh远程执行命令 利用套接字编来进行远程执行命令 服务端 from socket import * import subprocess server = socket(AF_INET, SOCK_STREAM) server.bind(('127.0.0.1', 8000)) server.listen(5) print('start...') while True: conn, client_addr = server.accept() while True: p…