diff --git a/PVE/API2Tools.pm b/PVE/API2Tools.pm index a3d7ca84..618c13b3 100644 --- a/PVE/API2Tools.pm +++ b/PVE/API2Tools.pm @@ -17,14 +17,22 @@ use PVE::SafeSyslog; use PVE::Storage::Plugin; my $hwaddress; +my $hwaddress_st = {}; sub get_hwaddress { - - return $hwaddress if defined ($hwaddress); - my $fn = '/etc/ssh/ssh_host_rsa_key.pub'; + my $st = stat($fn); + + if (defined($hwaddress) + && $hwaddress_st->{mtime} == $st->mtime + && $hwaddress_st->{ino} == $st->ino + && $hwaddress_st->{dev} == $st->dev) { + return $hwaddress; + } + my $sshkey = PVE::Tools::file_get_contents($fn); $hwaddress = uc(md5_hex($sshkey)); + $hwaddress_st->@{'mtime', 'ino', 'dev'} = ($st->mtime, $st->ino, $st->dev); return $hwaddress; }