Thread LinuxMagazin Script Fehler (13 answers)
Opened by Gast at 2008-05-30 16:22

roli
 2009-05-13 17:06
#121577 #121577
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
Hi,

ich bin auch gerade dabei mich mit "Licht ins Dunkel" zu beschäftigen. Dabei ist mir aufgefallen, das der Eintrag "ip_change" in namedev nirgends genutzt wird. Bei dem split wird er noch berücksichtigt, aber an device_add wird er nicht übergeben. Also habe ich hier mal folgende Anpassung gemacht:
Code (perl): (dl )
1
2
3
4
5
6
7
my($mac, $ip, $ip_change) = split ' ', $nextline;
if($ip_change) {
  $db->device_add($name, $mac);
}
else {
  $db->device_add($name, $mac, $ip);
}

Dann ist mir aufgefallen, das sich das Problem nach "WatchLan" durchzieht. In device_add wird er auch nicht berücksichtigt. Da in das Feld ip_static_id der Tabelle devices aber die id der IP-Adresse eingetragen wird, setzt's bei mir aus. Wie kann ich mittels ROSE die id abfragen? In guter alter SQL würde ich schreiben:
Code: (dl )
SELECT id FROM ip_addresses WHERE string = $ip_adr

Wie würde ich das in ROSE realisieren? Was ich mir so ausgedacht habe fuktioniert leider nicht:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sub device_add {
###########################################

  my ( $self, $name, $mac_address, $ip_adr ) = @_;

  my $ip_id;
  if($ip_change) {
    $ip_id = WatchLAN::ip_addresses( $ip_change );
  }   
  my $device = WatchLAN::Device->new( mac_address => $mac_address );
  $device->load( speculative => 1 );
  $device->name($name);
  $device->ip_static_id($ip_id);
  $device->save();
}
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2

View full thread LinuxMagazin Script Fehler