def __init__(self, config):
        from M2Crypto.RSA import load_key
        private_key_path = config.pluginconf['ssl_client_private']
        caller_id = basename(
            config.pluginconf['ssl_client_public']).split('.')[0]

        self.private_key = load_key(private_key_path)
        self.caller_id = 'cert=' + caller_id
Beispiel #2
0
#!/usr/bin/python
from mcollective import Message
from yaml import load
from M2Crypto.RSA import load_pub_key, load_key
from stompy.simple import Client
from sys import argv, exit, stderr

if len(argv) < 7:
    print >>stderr, '%s <stomp server> <stomp username> <stomp password> <key filename> <key name> <fact>' % argv[0]
    exit(-1)

certificate_name = argv[5]
host, port = argv[1].split(':')
stomp_client = Client(host, int(port))
stomp_client.connect(argv[2], argv[3])
private_key = load_key(argv[4])

body = {':caller': 'cert=%s' % certificate_name, ':data': {':process_results': True}, ':action': 'inventory', ':agent': 'rpcutil'}

m = Message(body, stomp_client)
m.sign(private_key, certificate_name)
results = m.send_and_await_results(debug=True)

print [load(q[':body'])[':data'][':facts'][argv[6]] for q in results]
 def __init__(self, private_key_path, caller_id):
     self.private_key = load_key(private_key_path)
     self.caller_id = 'cert=' + caller_id
from math import floor

config = {}
for line in file('/etc/mcollective/client.cfg', 'rt').readlines():
    bits = line.split('=', 1)
    if len(bits) == 2:
        config[bits[0].strip()] = bits[1].strip()

if len(argv) < 2:
    print >>stderr, '%s <check> [args]' % argv[0]
    exit(-1)

certificate_name = os.path.basename(config['plugin.ssl_client_public'].replace('.pem', ''))
stomp_client = Client(config.get('plugin.stomp.host', 'localhost'), port=int(config.get('plugin.stomp.port', 61613)))
stomp_client.connect(config['plugin.stomp.user'], config['plugin.stomp.password'])
private_key = load_key(config['plugin.ssl_client_private'])

args = ' '.join(argv[2:])

body = {
    ':caller': 'cert=%s' % certificate_name, 
    ':data': {
        ':process_results': True, 
        ':command': argv[2],
    }, 
    ':action': 'runcommand', 
    ':agent': 'nrpe'
}

m = Message(body, stomp_client, target='nrpe', filter_=Filter(identity=argv[1]).dump())
m.sign(private_key, certificate_name)
Beispiel #5
0
#!/usr/bin/python
import sys
import syck as yaml
import time
from hashlib import sha1
from M2Crypto.RSA import load_pub_key, load_key
from stompy.simple import Client

# Change these.
PREFIX = 'mcollective'
CERTNAME = 'certificate-name'
s = Client('stomp.server')
s.connect('stompusername','stomppassword')
rr = load_key('path-to-unencrypted-private-key.pem')

target = '/topic/%s.discovery.command' % PREFIX
target_reply = '/topic/%s.discovery.reply' % PREFIX
s.subscribe(target_reply)
rid = sha1(str(time.time())).hexdigest()

# Put together message.
r = {}
r[':msgtime'] = int(time.time())
r[':filter'] = {
    'identity': [],
    'fact': [],
    'agent': [],
    'cf_class': [],
}
r[":requestid"] = rid
r[":callerid"] = 'cert=%s' % CERTNAME