λλΆλΆμ λ€νΈμν¬ μ₯λΉμμλ μ½μλ‘ μμ
μ ν μ μλλ‘ 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(); }