Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

how I can find Processor serial number or (Processor ID) ?

by amitbhosale (Acolyte)
on Apr 18, 2008 at 09:58 UTC ( #681436=perlquestion: print w/replies, xml ) Need Help??

amitbhosale has asked for the wisdom of the Perl Monks concerning the following question:

Hi Perl Gurus I am using CentOs. I have mentioned below one way to find out the Processor ID.
#!/usr/bin/perl -w use strict; my $Processor_Id=`dmidecode -t processor | grep ID | sed -e 's/ID:/ /g +'`; print "\n Processor_ID:$Processor_Id";
Please Let me suggest any other appropriate way (functions or code) to find unique Processor ID.
Thanks & Regards,
-Amit Bhosale

Replies are listed 'Best First'.
Re: how I can find Processor serial number or (Processor ID) ?
by Khen1950fx (Canon) on Apr 18, 2008 at 11:13 UTC
    #!/usr/bin/perl use strict; use Parse::DMIDecode; my $decoder = Parse::DMIDecode->new( dmidecode => '/usr/sbin/dmidecode', nowarnings => 1, ); $decoder->probe; printf("System: %s\n", $decoder->keyword("system-serial-number"), );
Re: how I can find Processor serial number or (Processor ID) ?
by grinder (Bishop) on Apr 18, 2008 at 11:19 UTC
    Let me suggest any other appropriate way (functions or code) to find unique Processor ID.

    No, please, let me :)

    I assume your desire is to get rid of the dependency on the external binary and do it all in Perl. First step would be CPAN. My first port of call would be Sys::Info, and see whether it builds correctly on your platform.

    If it doesn't another approach would be to look at the source to dmidecode, figure out what it does, and write some XS code to duplicate the functionality. This is the approach I used when writing BSD::Process and BSD::Sysctl.

    If it boils down to a couple of kernel system calls, you might be able to get away with calling syscall if you can get all the necessary arcana packed up appropriately.

    Other than that, there's nothing intrinsically wrong with using an external binary, it's an honourably Lazy approach. You might just want to open it as an input pipe and munge its output directly, rather than fiddling around with grep and sed.

    update: *snort* looks like Khen1950fx has the goods. That'll serve me right for not looking at CPAN before posting!

    • another intruder with the mooring in the heart of the Perl

      Hi Perl gurus,
      
      Thanks a lot for your great assistance.
      
      First i will work on CPAN sys::info module and then i will start analysis of demidecode C code and try to create same utility in perl.
      
      Special thanks to grinder for showing me new way to create some new utilities from existing utilities.
      
      Thanks & Regards,
      -Amit
      
Re: how I can find Processor serial number or (Processor ID) ?
by TOD (Friar) on Apr 18, 2008 at 12:41 UTC
    or even shorter on a *nix box:
    perl -e 'open PROC, "/proc/cpuinfo"; my @cpu = <PROC>; close PROC; pri +nt join("", @cpu)'
    --------------------------------
    masses are the opiate for religion.
       /proc/cpuinfo
      will not return the serial number of the system.
      If you do not need this information it would be an easy approach without additional resources. (provided it is a *nix system):
       my @systeminfo = `cat /proc/cpuinfo`;
Re: how I can find Processor serial number or (Processor ID) ?
by Anonymous Monk on Mar 13, 2009 at 21:48 UTC
    What about using the built in strings to dmidecode such as:
    dmidecode -s system-uuid

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://681436]
Approved by moritz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (2)
As of 2023-02-07 02:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I prefer not to run the latest version of Perl because:







    Results (38 votes). Check out past polls.

    Notices?