下記のようにcisco機器にloginして、show clockコマンドを事項するperlを複数の機器を対象に実行したいと現在考えております。
ログインパスワードにつきましては定期的に変更するよう運用しているため、外部のファイルを参照するように出来ればと思いますが、perl初心者のため方法が全く分かりません。ご教授頂ければ幸いです。
******************
use Net::Telnet::Cisco;
my $session = Net::Telnet::Cisco->new(Host => 'IPアドレス');
$session->login('login', 'ログインパスワード'); ←※ここを外部ファイルを参照するようにできればと考えています。
# Execute a command
my @output = $session->cmd('show clock');
open(OUT,">showclock.txt");
print OUT @output;
close(OUT);
$session->close;
******************
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
Telnetログインできる機器であれば
Net::Telnetモジュールを使用すれば、ユーザ名が聞かれても
ログインしコマンドを実行することが可能です。
(SSHであればNet::SSHってのもあります。)
(例)
#!/usr/bin/perl
use strict;
use warnings;
use Net::Telnet;
my $host = "hostname";
my $pass = "password";
#ホストに接続しログイン
my $telnet = new Net::Telnet(Timeout => 10);
$telnet->open($host);
$telnet->login($user,$pass);
#コマンド実行(dateコマンドを実行)
my @result = $telnet->cmd("date");
print "@result\n";
#ログアウトし切断
$telnet->cmd("exit");
$telnet->close;
exit;
※使い方の詳細はperldocやcpanで確認してください。
No.1
- 回答日時:
パスワードを外部ファイルから読み込むだけなら
open(PASS,"<./password.txt");
@hoge = <PASS>;
$pass = $hoge[0];
こんな感じで読み込むことも可能ですが、自分だったら
ホスト名、IPアドレス、パスワードも外部ファイルから
読み込むように書きます。
#**********************************************************
■外部ファイル
○下記の形式で記述
ホスト名:
- IPアドレス
- パスワード
※'-'の前後に半角スペースが必要!
#(例) list.yaml
hostname1:
- 192.168.111.111
- password1
hostname2:
- 192.168.111.112
- password2
hostname3:
- 192.168.111.113
- password3
※半角スペースが抜けていたり、不要なスペースが入っていると
読み込み時にエラーが発生するので注意!
#**********************************************************
■Cisco機器へTelnet
○ホスト名毎にログを書き出す
#!/usr/bin/perl
use strict;
use warnings;
use Net::Telnet::Cisco;
use YAML;
use Data::Dumper;
############################################
# hostname,ipaddress,password read file
############################################
my $host = YAML::LoadFile('./list.yaml');
#print Dumper($host);
############################################
# telnet in each host
############################################
foreach my $hostname(keys(%{$host})){
my $ip = $host->{$hostname}[0];
my $pass = $host->{$hostname}[1];
print "$hostname ...";
&telnet_cisco($hostname,$ip,$pass);
print "done\n";
}
#############################################
# Net::Telnet::Cisco sub
#############################################
sub telnet_cisco {
my ($hostname,$ip,$pass) = @_;
my $session = Net::Telnet::Cisco->new(
Host => $ip,
Timeout => 10,
);
$session->login('login',$pass);
my @result = $session->cmd("show clock");
$session->close;
chomp(@result);
open(LOG,">>./$hostname.txt");
foreach my $value(@result){
print LOG "$value\n";
}
close(LOG);
}
exit;
※エラー処理は書いてないので適度に入れてください。
参考になったかな。。。
ご回答有難うございます。
open(PASS,"<./password.txt");
@hoge = <PASS>;
$pass = $hoge[0];
で実行したところ、うまくperlが走りました。有難うございます。
機器によっては、user名をパスワード入力前に聞いてくるものがあります。それにはどのように対応すればよろしいでしょうか。
それほど数がないので、ご返信頂いたように外部ファイルを見に行かないで、perl内にuser名を明記しようと考えています。
再度ご教授頂けたら幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP sessioncookieをではなくcookieを使わなければならない理由について… 4 2022/11/07 13:01
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- PDF PDF ファイルのパスワードの外し方 6 2023/03/29 11:37
- サーバー ログオンユーザーがいない場合に自動再起動 1 2022/09/28 09:53
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- Perl Perlで特定文字列から特定文字列までを抜き出したい 4 2022/04/02 14:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlでファイルの末尾から指定...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlについての質問
-
perlをバージョンアップしたら...
-
perl このテキストファイルを簡...
-
Perlで特定文字列から特定文字...
-
秀丸での一括変換について
-
ターミナルで特定の文字と文字...
-
英数文字列のうちの数値を4桁に...
-
Perl 数値にスラッシュを入れる...
-
vlookupがうまくいきません、教...
-
Perlでsprintf("%02d",$month)...
-
アルファベットに付いて質問し...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
close()で例外が投げられる理由
-
perlのflock関数でロックをかけ...
-
改行コードが勝手に
-
巨大ファイルの行をを逆順に並...
-
オープンしたファイルで行の連結
-
Perl で syntax error
-
where can I buy snowbord in t...
-
open中のファイルをrename
-
perlを用いた特定文字列間の抽...
-
Perlで他サイトの情報を取得し...
-
die関数のエラー出力先について
-
ハッシュにファイルハンドル
-
サブスクリプトとのファイルハ...
-
テキストファイルの本文中に行...
-
perlで大容量CSVのsort方法につ...
-
フォルダが開かなくなりました。
-
AutoCADのスクリプト
-
ジョブショップスケジューリング
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
おすすめ情報