0

Perl スクリプトを作成しようとしています (これまでやったことがありません)。

基本的に、このスクリプトは VoIP 電話システムに接続し、デバイスを再起動します。各サイトのデバイスに接続して再起動し、再起動が発生しているというデバイスの確認または接続エラーをログ ファイルに出力します。私は自分が Perl で何をしているのかわかりませんし、これまでのことが少しでも正しいかどうかさえわかりません。これは、Google/フォーラムを掘り下げて見つけたものです。

スクリプトで実行したいことは次のとおりです。

Perl スクリプトを使用して、事前に設定された IP アドレスのリストに Telnet で接続します。

接続先の IP の .txt リストが必要です (すべて同じログイン/パスワードを使用します)。または、IP を追加/削除するために将来編集できる実際の Perl スクリプト内にリストを含めることは可能ですか?

スクリプトが telnet になったら、コマンド「reboot now」を送信し、コマンド送信時に接続されていた IP とともに応答をログ ファイルに出力します (コマンドが発行されたときの応答は、 「システムは現在、再起動のためにダウンしています」など)。接続先の IP ごとにこれを実行したいのですが、接続できない場合は、「XXX.XXX.XXX.XXX Unable to Connect」の行に沿ってエラーを出力したいのです。

したがって、ログは次のようになります。

XXX.XXX.XXX.101 System going down for reboot
XXX.XXX.XXX.102 System going down for reboot
XXX.XXX.XXX.103 Unable to Connect
XXX.XXX.XXX.104 Unable to Connect
XXX.XXX.XXX.105 System going down for reboot

これは可能ですか?

私は現在これを持っています:

#!/usr/bin/perl -w
use strict;
use Net::Telnet;

my $log = './log.txt';

$telnet = new Net::Telnet ( Timeout=>10,
Errmode=>'die'
Prompt => '/\$ $/i');
$telnet->open('IPADDRESS');
$telnet->login('USERNAME', 'PASSWORD');
print $telnet->cmd('reboot now');
writef($log);

プロンプトの場合 => telnet して IP に接続したときに表示される記号と一致するように変更する必要がありますか? 私が見る記号は # なので、コマンドは次のようになります。

Promt => '/\# #/i);

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

1

それらのデバイスで SSH を有効にしていますか? プロンプトに一致させるには正規表現が必要です。持っている#か、something#そのまま使用できます/# $/

#!/usr/bin/perl -w
use strict;
use Net::Telnet;

my $log = './log.txt';

open LOG, ">>$log";         #open log file - append mode
open IPS, "<ip.list";       #open ip.list file - read mode
while(<IPS>){
 my $ip = $_;               #current iteration (line) of IPs file
 $telnet = new Net::Telnet ( Timeout=>10,
         Errmode=>'die'
         Prompt => '/# $/i');
 $telnet->open($ip);
 $telnet->login('USERNAME', 'PASSWORD');
 if($telnet->cmd('reboot now')){
  print LOG "$ip System going for reboot";
 }else{
  print LOG "$ip Unable to Connect";
 }
}
close LOG;                  #close files
close IPS;

これip.listは、1 行に 1 つずつ、IP の単なるリストです。

XXX.XXX.XXX.101
XXX.XXX.XXX.102
XXX.XXX.XXX.103
...
于 2013-09-22T00:47:09.260 に答える