#! /usr/bin/perl # #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"; }