[rt-users] RTAT Import?
Jean-Sebastien Morisset
jsmoriss at mvlan.net
Tue Apr 29 16:08:50 EDT 2008
Matthew,
Thanks for your code. This was an exellent starting point. Since I
already have a bunch of assets, I tried to incorporate some code to
update assets. I'm not sure what I'm doing wrong though... Here's the
result:
# /opt/rt3/bin/import-assets.sh /tmp/js.csv
gessolx1:
Loaded gessolx1 as asset #85.
CustomField-10 could not be set to STI.
CustomField-11 could not be set to Montreal QC CA.
CustomField-12 could not be set to SUN.
CustomField-14 could not be set to X4200.
That is already the current value
CustomField-16 could not be set to SUN Solaris 10.
uasolx1:
Loaded uasolx1 as asset #86.
CustomField-10 could not be set to STI.
CustomField-11 could not be set to Montreal QC CA.
CustomField-12 could not be set to SUN.
CustomField-14 could not be set to 0.
CustomField-15 could not be set to 0.
CustomField-16 could not be set to 0.
And the code:
#!/usr/bin/perl
use lib qw(/opt/rt3/local/lib /opt/rt3/lib);
use RT;
use RTx::AssetTracker::Asset;
RT::LoadConfig();
RT::Init();
use strict;
if (! $ARGV[0] || $ARGV[0] =~ /^--?h/) {
print "Syntax: $0 {csvfile}\n";
exit 0;
}
open(CSV, "< $ARGV[0]") or die "$!\n";
my $at = RTx::AssetTracker::Asset->new(RT->SystemUser);
my $line;
while (<CSV>) {
my ($el, $id, $t, $msg);
chomp; $line++; next if ($line == 1);
s/^"//; s/"$//;
my @csv = split(/"?,"?/);
my @fn = (
'Name',
'Status',
'Type',
'Description',
'CustomField-10', # Client
'CustomField-11', # Location
'CustomField-12', # Manufacturer
'CustomField-14', # Model
'CustomField-15', # Serial Number
'CustomField-16', # OS Name
);
print $csv[0], ":\n";
if ($id = $at->Load($csv[0])) {
print "\tLoaded $csv[0] as asset #$id.\n";
} else {
($id, $t, $msg) = $at->Create (
Name => $csv[0],
Status => $csv[1],
Type => $csv[2],
Description => $csv[3],
);
print "\t$msg\n";
}
for my $k (@fn) {
if ($k =~ /^CustomField/) {
($id, $msg) = $at->_Set (
Field => $k,
Value => $csv[$el],
UpdateAsset => 1,
TransactionData => undef,
);
print "\t$msg\n";
}
$el++;
}
}
Any ideas on what I could be doing wrong?
js.
On Tue, Apr 29, 2008 at 11:26:41AM -0400, Matthew Keller wrote:
> The script below takes a tab-delimited file of format:
>
> AssetTag Make Model Serial Building Room MACAddress
>
> And populated a bunch of CFs. Salt to taste.
>
>
>
> On Tue, 2008-04-29 at 14:01 +0000, Jean-Sebastien Morisset wrote:
>> Has anyone developed a script or something to import an inventory into
>> AT (from a csv file, for example)?
>>
>> js.
>
>
> #!/usr/bin/perl
>
>
> use lib qw(/opt/rt3/local/lib /opt/rt3/lib);
>
> use RT;
> use RTx::AssetTracker::Asset;
> RT::LoadConfig();
> RT::Init();
>
> use strict;
>
>
> #### MAIN ########################
>
>
> my $BFILE="/opt/rt3/wslist";
>
>
> open(BF,"<$BFILE") or die "$!\n";
>
> my $ass = RTx::AssetTracker::Asset->new(RT->SystemUser);
>
> while(<BF>) {
> # 12478 Gateway E4100 0032459740 KEL-HL 219
> 00:0C:F1:D5:49:2E
> chomp;
> my @lineparts=split(/\t/);
> my $sysname=$lineparts[4];
> $sysname =~ s/\W.*$//; # Strip from non-word to eol
> $sysname .= $lineparts[5] . "-" . $lineparts[0];
>
> my ($id, undef, undef) = $ass->Create(Type =>
> 'Workstations',
> Name =>
> "$sysname",
> Status =>
> 'production',
> 'CustomField-7'
> => "$lineparts[0]", # Decal
> 'CustomField-3'
> => "$lineparts[1]", # Make
> 'CustomField-4'
> => "$lineparts[2]", # Model
> 'CustomField-8'
> => "$lineparts[3]", # Serial
> 'CustomField-59'
> => "$lineparts[4]", # Building
> 'CustomField-60'
> => "$lineparts[5]", # Room
> 'CustomField-62'
> => "$lineparts[6]", # MAC address
> );
> print "$sysname created with id $id\n";
> }
>
>
--
Jean-Sebastien Morisset, Sr. UNIX Administrator <jsmoriss at mvlan.net>
More information about the rt-users
mailing list