Rapid-made tool for IT company staff.
use strict; use Net::Ping; use Socket; use Net::Traceroute::PurePerl; use DBI; use DBD::Pg; use Data::Dumper; use LWP::UserAgent; use utf8; binmode(STDOUT,':utf8'); sub logwrite($) { my ($str) = @_; my $log = "/checker-log.txt"; open(my $fh, ">>", $log); my $str = shift; print $str; print $fh $str; close $fh; } sub host($) { my ($host) = @_; my @addresses = gethostbyname($host); @addresses = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; if (@addresses) { logwrite("# resolve $host to @addresses: success\n"); } else { logwrite("# resolve $host: error\n"); } foreach my $n (1..3) { my $ping = Net::Ping->new(); if ($ping->ping($host)) { logwrite("# ping $n $host: success\n"); } else { logwrite("# ping $n $host: error\n"); } } my $tr = new Net::Traceroute::PurePerl( host => $host, max_ttl => 8, protocol => 'icmp', query_timeout => 2, ); my $res; eval { $res = $tr->traceroute; }; if ($@) { logwrite("# traceroute $host: error $@\n"); } else { my $hops = $tr->hops; if ($res) { my $hops = $tr->hops(); logwrite("# traceroute $host: success by $hops hops\n"); } else { logwrite("# traceroute $host: error by $hops hops\n"); } } } sub pg($$) { my ($pghost, $dbname) = @_; my $pguser = "mosaic"; my $pgpass = "aszretir"; my $dsn = "dbi:Pg:dbname=$dbname;host=$pghost;port=6432"; my $dbh; eval { $dbh = DBI->connect($dsn, $pguser, $pgpass); }; if ($@ || !$dbh) { logwrite("# postgreql connect: error $@"); } else { if ($dbh) { logwrite("# postgreql connect to $pghost:$dbname: success\n"); my $query = "select project_name, project_guid from projects5d limit 5"; my $sth = $dbh->prepare($query); my $rv = $sth->execute; logwrite("# postgresql test request result:\n"); while (my @row = $sth->fetchrow_array) { logwrite("project_guid=$row[1]\n"); } $sth->finish; $dbh->disconnect; logwrite("# postgresql $pghost total result: success\n"); } } } sub web($) { my ($url) = @_; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(GET => $url); my $res = $ua->request($req); my $status = $res->status_line; logwrite("# srv1c auth web request: $status\n"); } my $reg = "_REG_"; my $REG = uc($reg); my $pghost = "xxxxxxxxxx-$reg.lazurit.us"; my $dbname = "xxxxxxx_$reg"; my $srvhost = "web.$reg.lazurit.us"; my $url = 'http://_LOGIN_@' . "$srvhost/xxxxxxxxx$REG/xxx/xxxxxx"; my $timestamp = localtime; logwrite("\n# timestamp: $timestamp\n"); host($pghost); pg($pghost, $dbname); host($srvhost); web($url); logwrite("# end\n\n"); print "the window will close after 30 sec\n\n"; sleep 30; #EOF