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 83 84 85 86 87 88 89
|
#! /usr/bin/perl
#
# Copyright (c) Members of the EGEE Collaboration. 2004-2010.
# See http://www.eu-egee.org/partners/ for details on the copyright
# holders.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# Authors:
# 2009-
# Oscar Koeroo <okoeroo@nikhef.nl>
# Mischa Sall\'e <msalle@nikhef.nl>
# David Groep <davidg@nikhef.nl>
# NIKHEF Amsterdam, the Netherlands
# <grid-mw-security@nikhef.nl>
#
# 2007-2009
# Oscar Koeroo <okoeroo@nikhef.nl>
# David Groep <davidg@nikhef.nl>
# NIKHEF Amsterdam, the Netherlands
#
# 2003-2007
# Martijn Steenbakkers <martijn@nikhef.nl>
# Gerben Venekamp <venekamp@nikhef.nl>
# Oscar Koeroo <okoeroo@nikhef.nl>
# David Groep <davidg@nikhef.nl>
# NIKHEF Amsterdam, the Netherlands
#ldapsearch -H ldap://tbn06.nikhef.nl/ \
# -b "ou=poolaccounts,dc=farmnet,dc=nikhef,dc=nl" -LLL -x \
# description | \
# awk -F: '/export/ {print "mkdir $NF" }' | \
# xargs mkdir
use Net::LDAP qw(:all); # for all code
use Net::LDAP::Util qw(ldap_error_name
ldap_error_text); # for error handling
use Getopt::Long;
@optdef=qw( v:i );
$0 =~ s/.*\///;
$Getopt::Long::ignorecase=0;
&GetOptions(@optdef);
$ldap = Net::LDAP->new( "tbn06.nikhef.nl", port=>389, timeout=>20 );
$ldap or
die "Cannot contact remote tbn06: $!\n".
" $ldap_error_name $ldap_error_text\n";
$results=$ldap->search(
base=>"ou=poolaccounts,dc=farmnet,dc=nikhef,dc=nl",
scope=>"sub",
filter=>"(objectclass=*)"
);
my @entries=$results->entries;
foreach $entry ( @entries ) {
$desc=$entry->get_value("description");
($dir=$desc)=~s/.*://;
$dir=~/\/export\// or next;
$uid=$entry->get_value("uidNumber");
$gid=$entry->get_value("gidNumber");
print "mkdir -p $dir ; mkdir $dir/.ssh ; mkdir $dir/.globus\n";
print "ssh-keygen -f $dir/.ssh/id_rsa -q -t rsa -N \"\" -C \"autogenerated\" < /dev/null\n";
print "cat $dir/.ssh/id_rsa.pub > $dir/.ssh/authorized_keys2\n";
print "chmod 755 $dir\n";
print "chmod 755 $dir/.ssh\n";
print "chown -R $uid:$gid $dir\n";
}
|