Telnetでログインサーバを再起動するスクリプトです。
Active Perl 5.8.8以降で動作します。ファイル名は「ログインサーバ再起動.pl」とでもしておいてください。
こちらはシャットダウンするスクリプトです。
- ## Active Perl 5.8.8
- use strict;
- use warnings;
- use Net::Telnet;
- use Win32::Console;
- $|=1;
- my $console = new Win32::Console(STD_OUTPUT_HANDLE);
- my $defaultColor = $console->Attr;
- my $password = 'XXXXXXXXXX'; #ここにtelnetのパスワード
- my $telnet = new Net::Telnet(
- Host => '192.168.0.xx' #ここにログインサーバのIPアドレス
- , Port => 12344 #ここにログインサーバのtelnetポート番号
- , Timeout => 10
- );
- &message("Connect LoginServer.");
- $telnet->open;
- print $telnet->waitfor('/Password:/i');
- &echo("*****"); $telnet->print($password);
- my @m = $telnet->waitfor('/\n/'); print @m;
- die unless grep /Password Correct/i,@m;
- &send('restart');
- &flush;
- $telnet->close;
- &message("Disconnect.");
- exit 0;
- sub send {
- my ($msg) = @_;
- &flush;
- &echo($msg);
- $telnet->print($msg);
- }
- sub echo {
- $console->Attr(10);
- print @_,"\n";
- $console->Attr($defaultColor);
- }
- sub message {
- $console->Attr(11);
- print @_,"\n";
- $console->Attr($defaultColor);
- }
- sub flush {
- print @m if my @m = $telnet->getlines(Timeout => 3, Errmode => "return");
- }
ファイル名は「ログインサーバシャットダウン.pl」とでもしておいてください。 -wオプションを指定すると、シャットダウンするまで待機します。
- ## Active Perl 5.8.8
- use strict;
- use warnings;
- use Net::Telnet;
- use Socket;
- use Win32::Console;
- $|=1;
- my $console = new Win32::Console(STD_OUTPUT_HANDLE);
- my $defaultColor = $console->Attr;
- my $wait = 0;
- foreach (@ARGV) {
- $wait = 1 if $_ eq '-w';
- $wait = 1 if $_ eq '/w';
- }
- my $password = 'XXXXXXXXXX'; #ここにtelnetのパスワード
- my $telnet = new Net::Telnet(
- Host => '192.168.0.xx' #ここにログインサーバのIPアドレス
- , Port => 12344 #ここにログインサーバのtelnetポート番号
- , Timeout => 10
- );
- &message("Connect LoginServer.");
- $telnet->open;
- print $telnet->waitfor('/Password:/i');
- &echo("*****"); $telnet->print($password);
- my @m = $telnet->waitfor('/\n/'); print @m;
- die unless grep /Password Correct/i,@m;
- &send('shutdown');
- &flush;
- $telnet->close;
- &message("Disconnect.");
- if ($wait) {
- while (&portCheck($telnet->host, 2106)) {print '.'; sleep 15}
- print "\n";
- }
- exit 0;
- sub portCheck {
- my ($host,$port) = @_;
- my $iaddr = inet_aton($host) or die;
- my $sock_addr = pack_sockaddr_in($port, $iaddr);
- return undef unless socket(SOCKET, PF_INET, SOCK_STREAM, 0);
- return undef unless connect(SOCKET, $sock_addr);
- close(SOCKET);
- 1;
- }
- sub send {
- my ($msg) = @_;
- &flush;
- &echo($msg);
- $telnet->print($msg);
- }
- sub echo {
- $console->Attr(10);
- print @_,"\n";
- $console->Attr($defaultColor);
- }
- sub message {
- $console->Attr(11);
- print @_,"\n";
- $console->Attr($defaultColor);
- }
- sub flush {
- print @m if my @m = $telnet->getlines(Timeout => 3, Errmode => "return");
- }
[PageInfo]
LastUpdate: 2011-01-30 14:52:11, ModifiedBy: torikawatukune
[Permissions]
view:all, edit:login users, delete/config:members