http://www.perlmonks.org?node_id=595666

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

Hi, I'm a total newb with Perl, FTP, Telnet, etc and I'm trying to write a script that can extract out df -k, disk usage information from a unix system and then updating that information into a sql server in a window based system. Any advice on what's the simplest way to do this? :)

Replies are listed 'Best First'.
Re: How to connect from Windows to Unix?
by NetWallah (Canon) on Jan 20, 2007 at 15:49 UTC
    Although more complex than the previous suggestions, I believe an invenstment in learning Net::SNMP or even SNMP::Simple will pay off - you will have a very extensible system allowing you to measure/track literally thousands of pieces of system and network information.

    You may also want to investigate MRTG and CACTI if you are heading in this direction.

         "A closed mouth gathers no feet." --Unknown

Re: How to connect from Windows to Unix?
by Tux (Canon) on Jan 20, 2007 at 15:13 UTC
    Depends on the services the remote hosts offer and or what ports are open to you as external client. You might try Net::Rexec first, and otherwise, the SSH related modules might be helpful.

    If Net::Rexec cannot connect, but you do have some ssh command, you could parse the output of

    my @out = `ssh remote_host du -k`;

    Enjoy, Have FUN! H.Merijn
Re: How to connect from Windows to Unix?
by jettero (Monsignor) on Jan 20, 2007 at 15:15 UTC
Re: How to connect from Windows to Unix?
by davidrw (Prior) on Jan 20, 2007 at 16:10 UTC
    depending on how many different checks you have, and number of servers, you might consider an existing monitoring solution such as Nagios
Re: How to connect from Windows to Unix?
by ahmad (Hermit) on Jan 20, 2007 at 17:49 UTC

    Make the SQL server public ( give it public IP "Dedicated IP" so it could be accessed through the internet )

    put your disk usage checking script in your Linux server(s)

    make your script connect to the SQL SERVER and update the information in the database

    that's much easier and safer :)

      Hi All, Wow hey thanks guys for providing so many pathway that i can choose to take :) But as i'm also a total newb with the network stuff, tcp/ip, ssh, snmp, sad but true :'( i want to try the make the sql server public method. So Ahmad can you help to provide more details on how this can be done? But just as to satisfy my research curiosity, out of the few cpan modules that you guys suggested, which one would you suggest as the easiest for a total newb like me to pickup? Again, many many thanks!!
        *if* rexec is allowed, that is the most simple solution.

        # perl -MNet::Rexec=rexec -le"my ($rc, @out) = rexec ("remote_host", "df -k", "username", "password");
        But chances are that that connection is refused, as rexec is not commonly allowed. If it works, you've got the output of the command df -k in @out.

        In script that might look like:
        use strict; use warnings; use Net::Netrc; use Net::Rexec qw( rexec ); foreach my $host (qw( host1 host2 host3 )) { my $machine; unless ($machine = Net::Netrc->lookup ($host)) { warn "Machine $host not found in .netrc\n"; next; } my ($user, $password) = $machine->lpa; my ($rc, @out) = rexec ($host, "df -k", $user, $password); foreach my $df_line (@out) { # ... } }
        Net::SNMP might suffer the same problem. Not all hosts have the protocol enabled (open in the firewall), and if they do, you would need to find the right setup parameters, which is not always easy. I don't think that if you say you are a real beginner, Net::SNMP is the correct module to start with.

        Enjoy, Have FUN! H.Merijn

        Just install the SQL server on a machine with public ip so it could be accessed through the internet ,

        then in your scripts/programs change the SQL host you are connecting to from 'localhost' to that SQL server IP

        if you stuck somewhere msg me