リモートホストにSSH接続してコマンド発行する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
* 目的 [#l629e1e8]
リモートホストでSSHサーバが動作している場合に、自動ログイ...
たとえば、大量のVMがあり1台づつシャットダウンして回るの...
* 導入方法 [#m09b3621]
** インストール [#e1fdddf7]
# Net::OpenSSHとIO::Ptyが必要
[ubuntu@lxc ~]$ sudo aptitude install libnet-openssh-per...
** スクリプト本体 [#l3299498]
#!/usr/bin/perl
use strict;
use Net::OpenSSH;
my ($host,$ssh,$buf,$uid,$pwd,$cmd);
my (@hosts,@bufs);
$uid = "UID";
$pwd = "PWD";
$ssh = Net::OpenSSH->new( $host, (user=>$uid , password=...
$ssh->error and die "Can't ssh to : " . $ssh->error;
# コマンドを発行
$ssh->system("touch /tmp/check") or die "remote command...
# コマンド結果をキャプチャ
@bufs = $ssh->capture("cat /etc/debian_version");
$ssh->error and die "remote ls command failed: " . $ssh-...
foreach(@bufs){
print $_;
}
# コマンド結果をキャプチャ2
$buf = $ssh->capture({ timeout => 1 }, "cat /proc/cpuinf...
$ssh->error and die "remote find command failed: " . $ss...
print $buf."\n";
exit;
* linuxサーバをsshでシャットダウンする場合 [#gbaff7c1]
** linuxサーバでの設定 [#t38ecf33]
sudoコマンドでパスワードを聞かれないようにしておけばOK
$ sudo visudo
----------8<----------
# これを最後の行に追加
UID ALL=NOPASSWD: /sbin/shutdown -h now
----------8<----------
** シャットダウンスクリプト [#y73fdcc1]
#!/usr/bin/perl
use strict;
use Net::OpenSSH;
my ($host,$ssh,$buf,$uid,$pwd,$cmd);
my (@hosts,@bufs);
$uid = "UID";
$pwd = "PWD";
$cmd = "sudo shutdown -h now";
@hosts = qw(192.168.10.1 192.168.10.2 192.168.10.3 192.1...
foreach $host (@hosts) {
print "$host : execute...\n";
if(`ping $host -c 1 -s 1 -w 1 | grep "bytes from"`){
$ssh = Net::OpenSSH->new( $host, (user=>$uid , passw...
$ssh->error and die "Can't ssh to : " . $ssh->error;
$ssh->system($cmd) or die "remote command failed: "...
}else{
print " ping fail\n";
}
}
exit;
* 注意事項 [#fd1f3a8d]
sshで接続しようとする場合、~/.known_hostsにないホストには...
もしくは、/etc/ssh/ssh_config の StrictHostKeyChecking no...
~
~
~
#counter
終了行:
#contents
* 目的 [#l629e1e8]
リモートホストでSSHサーバが動作している場合に、自動ログイ...
たとえば、大量のVMがあり1台づつシャットダウンして回るの...
* 導入方法 [#m09b3621]
** インストール [#e1fdddf7]
# Net::OpenSSHとIO::Ptyが必要
[ubuntu@lxc ~]$ sudo aptitude install libnet-openssh-per...
** スクリプト本体 [#l3299498]
#!/usr/bin/perl
use strict;
use Net::OpenSSH;
my ($host,$ssh,$buf,$uid,$pwd,$cmd);
my (@hosts,@bufs);
$uid = "UID";
$pwd = "PWD";
$ssh = Net::OpenSSH->new( $host, (user=>$uid , password=...
$ssh->error and die "Can't ssh to : " . $ssh->error;
# コマンドを発行
$ssh->system("touch /tmp/check") or die "remote command...
# コマンド結果をキャプチャ
@bufs = $ssh->capture("cat /etc/debian_version");
$ssh->error and die "remote ls command failed: " . $ssh-...
foreach(@bufs){
print $_;
}
# コマンド結果をキャプチャ2
$buf = $ssh->capture({ timeout => 1 }, "cat /proc/cpuinf...
$ssh->error and die "remote find command failed: " . $ss...
print $buf."\n";
exit;
* linuxサーバをsshでシャットダウンする場合 [#gbaff7c1]
** linuxサーバでの設定 [#t38ecf33]
sudoコマンドでパスワードを聞かれないようにしておけばOK
$ sudo visudo
----------8<----------
# これを最後の行に追加
UID ALL=NOPASSWD: /sbin/shutdown -h now
----------8<----------
** シャットダウンスクリプト [#y73fdcc1]
#!/usr/bin/perl
use strict;
use Net::OpenSSH;
my ($host,$ssh,$buf,$uid,$pwd,$cmd);
my (@hosts,@bufs);
$uid = "UID";
$pwd = "PWD";
$cmd = "sudo shutdown -h now";
@hosts = qw(192.168.10.1 192.168.10.2 192.168.10.3 192.1...
foreach $host (@hosts) {
print "$host : execute...\n";
if(`ping $host -c 1 -s 1 -w 1 | grep "bytes from"`){
$ssh = Net::OpenSSH->new( $host, (user=>$uid , passw...
$ssh->error and die "Can't ssh to : " . $ssh->error;
$ssh->system($cmd) or die "remote command failed: "...
}else{
print " ping fail\n";
}
}
exit;
* 注意事項 [#fd1f3a8d]
sshで接続しようとする場合、~/.known_hostsにないホストには...
もしくは、/etc/ssh/ssh_config の StrictHostKeyChecking no...
~
~
~
#counter
ページ名: