๋๋ถ๋ถ์ ๋คํธ์ํฌ ์ฅ๋น์์๋ ์ฝ์๋ก ์์
์ ํ ์ ์๋๋ก ssh, telnet ๋ฑ์ ์ ์์ ์ง์ํ๊ณ ์๋ค. ๊ฐ์ฅ ๋ง์ด ์ด์ฉ๋๋ SAN ์ค์์น ์ค์ ํ๋์ธ ๋ธ๋ก์ผ์ด๋(EMC) ์ SAN ์ค์์น์์๋ switchstatusshow ๋ช
๋ น์ ํตํด์ ์ฅ๋น์ ์ํ๋ฅผ ํ์ธํ ์ ์๋๋ฐ, SwitchState ํญ๋ชฉ์ ์ฒดํฌํ๋ฉด ์ฅ๋น์ ์ ์ฒด์ ์ธ ์ํ๋ฅผ ์์๋ณผ ์ ์๋ค. ์ฌ๊ธฐ์์๋ ๊ฐ๋จํ๊ฒ Telnet ์ผ๋ก ์ ๊ทผํ์ฌ ํด๋น ํญ๋ชฉ์ด HEALTHY ์ธ์ง ์ฌ๋ถ์ ๋ฐ๋ผ์ ์ ์์ด ์๋๋ฉด, ๋ด๋น์์๊ฒ ๋ฌธ์๋ฅผ ๋ณด๋ผ ์ ์๋ค๋ก ํด๋ณด์๋ค.
#!perl # ------------------------------------------------------------------------------ # SAN ์ค์์น ์ฅ์ ์ฒดํฌ (Telnet) # ------------------------------------------------------------------------------ # (1) SAN ์ค์์น์ Telnet์ ์ฐ๊ฒฐํ์ฌ, switchstatusshow ๋ช
๋ น์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ์ # HEALTHY ๊ฐ ์๋๋ฉด ์ฅ์ ๋ก ๊ฐ์ฃผํ๊ณ ๋ด๋น์์๊ฒ ๋ฌธ์๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค. # # (2) ํ๋ฃจ์ 1๋ฒ ์๋ํ๋ค. # # Perl Version : 5.16.2 # # Normal Status ---------------------------------------------------------------- # SwitchState: HEALTHY # ------------------------------------------------------------------------------ use 5.016; use strict; use warnings; use diagnostics; use Net::Telnet; use DBI; # ------------------------------------------------------------------------------ sub send_sms { my $msg = shift(@_); my $dsn = "DBI:ODBC:Driver={SQL Server};Server=์๋ฒ์ฃผ์;Database=๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ"; # ์๋ ์ค SMS ์ ๊ฒฝ์ฐ my $sql = "insert arreo_sms ( CMP_MSG_ID, CMP_USR_ID, WRT_DTTM, RCV_PHN_ID, CALLBACK, SND_DTTM, SND_MSG , SND_PHN_ID, RSRVD_ID ) values ('011' + CONVERT(varchar, GETDATE(), 12) + REPLACE(CONVERT(varchar, GETDATE(), 14), ':', '') + SUBSTRING(CONVERT(VARCHAR, RAND(), 109), 3, 2), '00000', CONVERT(varchar, GETDATE(), 112) + REPLACE(CONVERT(varchar, GETDATE(), 8), ':', ''), '01055551234', '01055554321', CONVERT(varchar, GETDATE(), 112) + REPLACE(CONVERT(varchar, GETDATE(), 8), ':', ''), '$msg', 'ADMIN', 'ADMIN' ) "; my $dbh = DBI->connect($dsn, '์์ด๋', '๋น๋ฐ๋ฒํธ') || die $DBI::errstr; $dbh->do($sql); $dbh->disconnect; } # ------------------------------------------------------------------------------ my %devices = ( "SAN_SW1", "172.16.0.21", "SAN_SW2", "172.16.0.22", "SAN_SW3", "172.16.0.23", "SAN_SW4", "172.16.0.24", ); foreach my $device_key (keys %devices) { my $tn = new Net::Telnet (Host => $devices{$device_key}, Timeout => 5, Prompt => '/> /'); $tn->login("์์ด๋", "๋น๋ฐ๋ฒํธ"); my @lines = $tn->cmd("switchstatusshow"); foreach my $line (@lines) { if ($line =~ /SwitchState/) { my $msg = ""; if ($line =~ /HEALTHY/) { $msg = "$device_key : Normal"; # send_sms($msg); } else { $msg = "$device_key : Error"; send_sms($msg); } say $msg; } } $tn->close(); }