Ruby on Rails Thursday, September 24, 2015

Hi All,

I am working on a log file , where i am parsing one log file for user
name and their last login dates ..

this output return two columns , user name and last lgin date .

require 'ldapjclnt11.jar'


class OIDExtract < Batch::Job

include_package 'javax.naming'
include_package 'javax.naming.ldap'
include_package 'javax.naming.directory'
include_package 'oracle.ldap.util'

IDTYPE_SIMPLE = 1
IDTYPE_DEFAULT = 3

configure acronyms: 'OID', do_not_track: true


def get_oid_connection(user_id, password, server, port = 10037)
env = {
Context::INITIAL_CONTEXT_FACTORY =>
'com.sun.jndi.ldap.LdapCtxFactory',
Context::SECURITY_AUTHENTICATION => 'simple',
Context::SECURITY_PRINCIPAL => "uid=#{user_id}, cn=Users,
dc=oracleoutsourcing, dc=com",
Context::SECURITY_CREDENTIALS => password,
Context::PROVIDER_URL => "ldap://#{server}:#{port}/",
Context::REFERRAL => "follow"
}
ctx = InitialLdapContext.new(java.util.Hashtable.new(env),
nil.to_java(Control))
end


def get_subscriber(ctx)
roc = RootOracleContext.new(ctx)
roc.getSubscriber(ctx, IDTYPE_DEFAULT, nil, ['*'])
end


def get_user(ctx, sub, user_id)
sub.getUser(ctx, IDTYPE_SIMPLE, user_id, ['*'].to_java(:String))
end


desc 'Extract user details from Oracle Internet Directory (OID)'
job do
admin_user = 'orcl_CommandCentre'
admin_pwd = 'FiRST123!'
server = 'logintrbs.oracleoutsourcing.com'

oid = get_oid_connection(admin_user, admin_pwd, server)
sub = get_subscriber(oid)

xl = xl_create_workbook
sheet = xl.workbook.add_worksheet(name: 'Users')
sheet.add_row(['User Id', 'Create Date'], style:
xl_styles['Title'])

log.info "Extracting users..."
count = 0
users = sub.getUsers(oid, IDTYPE_SIMPLE, '*', nil,
['orcllastlogintime'].to_java(:String))
users.to_a.each do |user|
count += 1
props = user.getProperties(oid,
['orcllastlogintime'].to_java(:String))
user.getDN(oid) =~ /^(?:cn|uid)=([^,]+)/
user_id = $1
create_date =
props.getPropertySet(0).getProperty(0).getValue(0)
create_date = Date.new(create_date[0..3].to_i,
create_date[4..5].to_i, create_date[6..7].to_i)
sheet.add_row([user_id, create_date])
# puts "#{$1}: #{Date.new(create_date[0..3].to_i,
create_date[4..5].to_i, create_date[6..7].to_i)} (#{user.getDN(oid)} -
#{create_date})"
end
log.detail "Output #{count.with_commas} users"
xl_filter_and_freeze(sheet, 1)
xl.serialize('OID_Users.xlsx')
end

end


OIDExtract.run! if __FILE__ == $0

the above is the code :

but in the log file some user have last login date as

orcllastlogintime: 00000000
and some
as
orcllastlogintime:
i, e blank only , so my code is getting failed with below error :

D:\Scripts\Batch\utils>jruby OID_Extract.rb
DETAIL Loading configuration from
D:/Scripts/Batch/lib/rbs/../../
secure_hp_config.yaml
INFO Job 'OID Extract' started on VMHODTRBSP124 by c_anujt with
PID
32252
DETAIL Working directory is: D:/Scripts/Batch/utils
INFO Extracting users...
ERROR An exception occurred in job 'OID Extract':
ArgumentError: invalid date
civil at
jar:file:/D:/Scripts/Batch/jars/jruby-complete-1.7.3.jar!/META-I
NF/jruby.home/lib/ruby/1.9/date.rb:809
OIDExtract at OID_Extract.rb:63
OIDExtract at OID_Extract.rb:57
run! at D:/Scripts/Batch/lib/batch/job.rb:66
(root) at OID_Extract.rb:75

INFO Job 'OID Extract' completed with errors in 2.001 seconds

now i have to write a code ..like

if

orcllastlogintime: 00000000
and some
as
orcllastlogintime:

then it should handle it ..accordingly.

--
Posted via http://www.ruby-forum.com/.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/43cd3fc81f9d763ef37e0cb372bd7376%40ruby-forum.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment