#!/usr/bin/env ruby # Usage: ssh-list-authorized-keys [username] # Copyright 2014, 2016 Luke Shumaker . # # This is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this manual; if not, see # . load "#{File.dirname(__FILE__)}/common.rb" all_users = load_all_users.values groupnames = ARGV & cfg["ssh_pseudo_users"] usernames = ARGV & all_users.map{|u|u["username"]} users = all_users.find_all{|u| # [ username was listed ] or [ the user is in a listed group ] usernames.include?(u["username"]) or not (u["groups"] & groupnames).empty? } # Buffer the output to avoid EPIPE when the reader hangs up early output="" users.each do |user| if user["ssh_keys"] user["ssh_keys"].each do |addr,key| output+="#{key} #{user["fullname"]} (#{user["username"]}) <#{addr}>\n" end end end print output