darktemplaaa
06-05-2010, 11:25
Hallo zusammen!
Ich habe mir ein kleines Script geschrieben, um unsere ESXi standalone hosts upzudaten und abzufragen welche bundles schon installiert sind. Bei step 1 kann man die Server abfragen. Bei step 2 verbindet man sich zum Server den man updaten will und installiert alle patches aus seinem repository. Das Problem bei step 2 ist, dass ich wie unten zu sehen die Funktion quotemeta($passwd) verwenden muss, damit er ohne Unterbrechung durchläuft und alle Patche nach der Reihe installiert. Tue ich dies nicht fragt mich das vihostupdate utility beim Start vor jedem patch nach dem Passwort. Der Nachteil bei quotemeta ist jetzt aber, dass man beim Eintippen des Passwortes alles im Klartext sieht. Hat hier noch einer eine Idee wie man es vielleicht hinbekommt? Vielen Dank.
#!/usr/bin/perl
system ("clear");
print "################################################## ################################################## ####
######################################### ESX server patch utility######################################
################################################## ################################################## ####
#This program can query or update ESX and ESXi servers. #
#Following options are available: : #
# 1 = List installed patches of a ESX server #
# 2 = Install all patches of repository /vmware_updates/ESXi #
################################################## ################################################## ####\n";
print "Choose an option from list above: ";
chomp ($select = <STDIN>);
while ($select ne '1' && $select ne '2') {
print "Undefined input!!!\n";
print "Please choose again: ";
chomp($select = <STDIN>);
}
#Listet alle patches
if ($select eq '1') {
print "Server to connect: ";
chomp ($server = <STDIN>);
system ("vihostupdate -q --username root --server $server");
}
#Installiert patches von /vmware-updates/ESXi
if ($select eq '2') {
print "Server to connect: ";
chomp ($server = <STDIN>);
print "Type password: ";
chomp ($passwd = <STDIN>);
$passwd = quotemeta($passwd);
my @patches = glob("/vmware-updates/ESXi/*.zip");
foreach (@patches) {
system "vihostupdate --server $server update --username root --password $passwd -i -b $_ --verbose";
}
}
Ich habe mir ein kleines Script geschrieben, um unsere ESXi standalone hosts upzudaten und abzufragen welche bundles schon installiert sind. Bei step 1 kann man die Server abfragen. Bei step 2 verbindet man sich zum Server den man updaten will und installiert alle patches aus seinem repository. Das Problem bei step 2 ist, dass ich wie unten zu sehen die Funktion quotemeta($passwd) verwenden muss, damit er ohne Unterbrechung durchläuft und alle Patche nach der Reihe installiert. Tue ich dies nicht fragt mich das vihostupdate utility beim Start vor jedem patch nach dem Passwort. Der Nachteil bei quotemeta ist jetzt aber, dass man beim Eintippen des Passwortes alles im Klartext sieht. Hat hier noch einer eine Idee wie man es vielleicht hinbekommt? Vielen Dank.
#!/usr/bin/perl
system ("clear");
print "################################################## ################################################## ####
######################################### ESX server patch utility######################################
################################################## ################################################## ####
#This program can query or update ESX and ESXi servers. #
#Following options are available: : #
# 1 = List installed patches of a ESX server #
# 2 = Install all patches of repository /vmware_updates/ESXi #
################################################## ################################################## ####\n";
print "Choose an option from list above: ";
chomp ($select = <STDIN>);
while ($select ne '1' && $select ne '2') {
print "Undefined input!!!\n";
print "Please choose again: ";
chomp($select = <STDIN>);
}
#Listet alle patches
if ($select eq '1') {
print "Server to connect: ";
chomp ($server = <STDIN>);
system ("vihostupdate -q --username root --server $server");
}
#Installiert patches von /vmware-updates/ESXi
if ($select eq '2') {
print "Server to connect: ";
chomp ($server = <STDIN>);
print "Type password: ";
chomp ($passwd = <STDIN>);
$passwd = quotemeta($passwd);
my @patches = glob("/vmware-updates/ESXi/*.zip");
foreach (@patches) {
system "vihostupdate --server $server update --username root --password $passwd -i -b $_ --verbose";
}
}