This file is indexed.

/usr/sbin/mc-peermap is in mcollective-plugins-stomputil 0.0.0~git20120507.df2fa81-0ubuntu1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/ruby

# Produce a simple textual map of a STOMP based
# mcollective network
#
# If you give a fact name as argument each STOMP
# server will display this fact next to some stats

require 'mcollective'

include MCollective::RPC

if ARGV.size > 0
    fact = ARGV[0]
else
    fact = nil
end

# gets all the peers from the network
def getpeers(client)
    peers = {}
    peer_resp_times = {}

    starttime = nil

    client.peer_info do |resp|
        starttime = Time.now.to_f unless starttime

        data = resp[:body][:data]
        desthost = data[:desthost]

        peers[desthost] ||= {:hosts => [], :pings => []}

        peers[desthost][:hosts] << resp[:senderid]
        peers[desthost][:pings] << Time.now.to_f - starttime
    end

    peers
end

# Shows all the nodes connected to a specific stomp server
def showserver(peers, server, fact)
    rpc = rpcclient("rpcutil")
    rpc.progress = false

    facts = rpc.custom_request("get_fact", {:fact => fact}, server, {"identity" => server}) if fact

    nodecount = peers[server][:hosts].size
    avgping = peers[server][:pings].inject{ |sum, el| sum + el } / peers[server][:pings].size * 1000

    if fact
        puts "%s -+ %i nodes with %.2fms average ping [%s] " % [server, nodecount, avgping, facts.first[:data][:value] ]
    else
        puts "%s -+ %i nodes with %.2fms average ping" % [server, nodecount, avgping ]
    end

    peers[server][:hosts].each do |s|
        print " " * server.length
        puts "  |-#{s}"
    end
end

# Walks all the servers and shows each
def shownetwork(peers, server=nil, fact=nil)
    if server
        if peers.include?(server)
            showserver(peers, server, fact)
        else
            puts "The network doesn't include #{server}"
        end
    else
        peers.keys.sort.each do |peer|
            showserver(peers, peer, fact)
            puts
        end
    end
end

shelper = rpcclient("stomputil")
shelper.progress = false

shownetwork(getpeers(shelper), nil, fact)