Schrift
[thread]6998[/thread]

Beratung: Vergleichen von Textdateien (Seite 2)

Leser: 1


<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten
pKai
 2005-05-18 17:52
#55000 #55000
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Genau das Verhalten hatte ich, als ich versuchsweise nur ein Namen übergeben hatte (-> Programm ließt von STDIN);

Ersetzt mal die Erste Zeile der sub read2hash (my $file = shift; ) durch
Code: (dl )
1
2
    my $file = shift || croak "kein Dateiname in read2hash!";    # Eingabe: Dateiname
warn "Jetzt lesen wir von Datei <$file>\n";
I sense a soul in search of answers.
StefanJ
 2005-05-18 18:02
#55001 #55001
User since
2005-05-03
35 Artikel
BenutzerIn
[default_avatar]
Nun erscheint folgendes:

c:\prisma\Test>Test.pl ADS.ldf ADAM.ldf Ausgabe.ldf
kein Dateiname in read2hash! at c:\prisma\Test\Test.pl line 38
main::read2hash('undef','sAMAccountName') called at c:\prisma\Test\Test.
pl line 9
StefanJ
 2005-05-18 18:03
#55002 #55002
User since
2005-05-03
35 Artikel
BenutzerIn
[default_avatar]
c:\prisma\Test>Test.pl ADS.ldf ADAM.ldf Ausgabe.ldf
kein Dateiname in read2hash! at c:\prisma\Test\Test.pl line 38
main::read2hash('undef','sAMAccountName') called at c:\prisma\Test\Test.
pl line 9
pKai
 2005-05-18 18:55
#55003 #55003
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Überprüf mal bitte, warum die sub mit undef als Wert aufgerufen wird.
Dürfte eigentlich nicht sein wenn die Zeilen mit der Argumentübergabe und den Aufrufen wie oben aussehen.
Hiernochmal wiederholt:
Code: (dl )
1
2
3
my ($fads, $fadam, $fout) = @ARGV;
my $Ads = read2hash($fads, 'sAMAccountName'); # strukturiert einlesen, siehe unten
my $Adam = read2hash($fadam, 'cn'); # Da dn kein Attribute ist -> cn

$fads ist die Variable, die das erste Kommandozeilenargument empfängt, diese Variable wird an den ersten Aufruf von read2hash() übergeben.
....
Ah mir kommt gerade was. Ich hatte mal folgendes Phänomen (unter NT4 mit Activestate 5.6, allerdings, ist schon länger her). Wenn man sein Skript mit dem nackten Namen aufruft findet cmd.exe es zwar, aber die Argumente gehen verschütt. Probier mal den Aufruf mit
Quote
c:\prisma\Test>perl Test.pl ADS.ldf ADAM.ldf Ausgabe.ldf
\n\n

<!--EDIT|pKai|1116428164-->
I sense a soul in search of answers.
Strat
 2005-05-18 20:13
#55004 #55004
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=StefanJ,18.05.2005, 11:43]@ Strat: So einfach ist das nicht, denk ich, weil ich ja den sAMAccountName mit dem "CN-Name" des DN vergleichen muss, da ja das ADAM ldf File keinen sAMAAccountName besitzt ! (oder hab ich dich falsch verstanden ???)[/quote]
wenn das adam-ldif-file keinen samAccountName hat (habe ich uebersehen, sorry), dann musst du halt versuchen, nach anderen kriterien die objekte einander zuzuordnen.

fuer Syncs zu AD speichere ich gerne als "Link" die objectGUID (ist ein eindeutiger Octettstring im AD, der sich auch beim verschieben nicht veraendert) im anderen directory (bei dir ADAM) ab, sodass ich dann ueber ADSI folgendermaszen auf das AD-Objekt zugreifen kann:
ldap://domain<GUID=..............>
und schreibe dann auch eine eindeutige ID nach AD

fuer syncs von AD zu ADAM verwende ich dann diese eindeutige ID zum matchen. Alternativ bieten sich sAMAccountName oder UserPrincipalName an, wenn die in ADAM gespeichert sind; wenn nicht (oder im falle eines "Erstkontaktes" bleibt nur ein Mapping ueber andere Kriterien uebrig, die du herausfinden musst. dann verwende einfach diesen filter anstelle des samAccountnames in meinem Rezept, und dann koennte es klappen, wenn die zuordnungsregeln gut genug sind
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pKai
 2005-05-18 20:39
#55005 #55005
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Strats Anmerkung heißt bezogen auf mein Skript, dass das der zweite Aufrufparameter für read2hash ggf. geändert wird, da dies das Attribut ist unter dem die Datensätze der betreffenden Datei (erster Aufrufparameter) als Schlüssel indiziert werden.
I sense a soul in search of answers.
StefanJ
 2005-05-18 20:43
#55006 #55006
User since
2005-05-03
35 Artikel
BenutzerIn
[default_avatar]
Hab leider bis Freitag keine Zeit mehr es auszuprobieren, ob es mit vorangestellten 'perl' funktioniert. Ich melde mich Freitag dann wieder !!
Vielen Dank für eure Hilfe schon mal :-)
StefanJ
 2005-05-20 16:20
#55007 #55007
User since
2005-05-03
35 Artikel
BenutzerIn
[default_avatar]
Jauu dat funzt mit dem vorrangestelltem 'Perl'! Danke,aber leider sogleich ein neues Problem:
Das Skript funktioniert wunderbar, ausser das irgendwo ein kleines Fehlerchen eingeschlichen hat. Und zwar funktioniert das Skript mit kleineren Dateien super, aber wenn ich das Skript über eine Datei mit 80500 Zeilen(in dem ca.3500 Objekte(sAMAccountNames) aufgelistet sind) laufen lasse, fängt er nach 8-9 Sek an die cmd Box mit "Use of uninitialized value in length at Test.pl line 32." vollzuschreiben. Das daraus resultierend ldf-File ist mit ldifde nicht importierbar.
line 32 ist "$neu->add ($att, $val) if length $val;"
Wie behebt man dieses Problem ?
Stefan
renee
 2005-05-20 16:29
#55008 #55008
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
$neu->add ($att, $val) if(defined $val && length $val);
\n\n

<!--EDIT|renee|1116592197-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pKai
 2005-05-20 17:13
#55009 #55009
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Alternativ kann man auch die Zeile so lassen, und die Zeile darüber ändern in
Code: (dl )
my $val = $ads->get_value($att) || '';
ändern. Bei sowas muss man sich nur klar werden, ob man zwischen undef und Leerstring unterscheiden muss.

Allerdings bin ich im Moment der Meinung, dass egal welche Änderung du einbringst, die Ausgabe des Programms dadurch nicht verändert wird.

Wenn es also ein Problem mit dem Import gibt, muss man sich schon im Einzelnen anschauen, welche Datensätze er warum nicht frisst. Und daraufhin ggf. das Programm ändern (Mein Original gibt ja auch z.B. keine objClass zurück. Ohne die z. B. wird das schwerlich importierbar sein.) Das Programm, auch wenn es schon "sehr viel" tut, ist ja auch nur eine Gedankenskizze, die du schon an deine konkreten Bedürfnisse anpassen musst.
I sense a soul in search of answers.
<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten



View all threads created 2005-05-17 18:23.