Você está na página 1de 5

Vmware start-stop via Shell http://www.systhread.net/texts/sysutil-book/sect2.html http://www.ecualug.org/2010/07/28/blog/yankusa/clonar_m%C3%A1quinas_virtuales_en _vmware_server_202_sobre_ubuntu_810_server 2.0.

5 Bash Program: vmware init O produto vmware free, vmware-server (antigo GSX) no tem o os clientes corretamente. Uma soluo simples para no ser capaz de auto poder de clientes usando chamar o utilitrio de linha de comando vmware na inicializao usando a funo init local. script de inicializao para lidar com o arranque e, eventualmente, outras funes. Este mples para criar um script de controle para gerenciar as funes de servidor de vmware. Um mtodo ultra-barato O mtodo mais fcil sem se preocupar em escrever um script ctl ou invlucro encontrar a vmid dos clientes VMware para iniciar e inserir uma ligao direta utilizando a interface do vmware-vim-cmd no scr ipt de inicializao dos sistemas locais (geralmente / etc / rc. local). Primeiro pegue o id do cliente: # obtemos o VMID usando o comando: vmware-vim-cmd U user P password vmscvc /getallvms Vmid Name File Guest OS Version Annotation 112 freebsd7 [standard] freebsd7/freebsd7.vmx freebsd64Guest vmx-07 vela: irc server running freeb sd7 208 netbsd5.99.10_amd64 [standard] netbsd5.99.10_amd64/netbsd5.99 .10_amd64.vmx otherGuest64 vmx-07 240 ime.vmx 96 server Um pouco desarrumado, mas os ids so fceis o suficiente, agora s adicion-lo ao script de inicializao do local: # if [ -x /usr/bin/vmware-vim-cmd ]; then echo "Startando o Cliente VMID 112 em 16 segundos" sleep 16 /usr/bin/vmware-vim-cmd -U user -P password vmsvc/power.on 112 fi Claro que muito simples, uma das operaes mais comuns realizadas com convidados VMw are ligar, desligar e reiniciar o host. Um bom administrador de sistemas preguioso, ento hora de elaborar um script ipmitool-como ctl para controlar o poder dos convidados. opensuse11-prime suse64Guest freebsd8 freebsd64Guest [standard] opensuse11-prime/opensuse11-pr vmx-07 [standard] freebsd8/freebsd8.vmx vmx-07 pyxis: freebsd-8.0 development poder de auto startar a interface do vmware A melhor maneira escrever um texto analisar um mtodo si

Arquivo de Configurao Porque o formato de vmsvc vmware-vim-cmd / getallvms no mostra o hostname ou end ereo IP do mapeamento vmid para endereo de host ou endereo IP poupa algum tempo. Segue-se o formato do nosso arquivo gsxh osts: # hostname VMID vela 112 carina 208 pyxis 96 O formato pode no fazer sentido agora, no entanto, quando ele analisado no script o formato muito simples far mais sentido. Para conseguir as coisas comearam a configurao do arquivo hosts, o comando vmsvc, a mensagem de uso e um pequeno erro de sada de rotina para fazer uma simples manipulao de erro - note que o script suporta todas as operaes de alimentao: #!/bin/sh # gsx-ipmi - An ipmilike shell wrapper for vmware-vim-cmd vmsvc/power.* HOSTSFILE=/etc/gsxhosts # Isso pode ser em qualquer lugar, a gosto do ad min VIMVC=" vmware-vim-cmd vmsvc/" # We just tack on the oper usage() { if [ -n "$*" ]; then echo " " echo "${PROG}: $*" fi cat <<usage ${PROG} [host][oper cmd]|[-u] ${PROG} [host][power getstate|hibernate|off|on|reboot|shutdown|suspend]| [-u] Commands: getstate Exibe o estado atual de energia dos clientes hibernate Coloca os clientes em modo hibernar (OS necessita suporte) off Corta energia e desliga o cliente on Liga a energia e inicia o cliente reboot Reinicia o cliente reset Reseta o cliente shutdown Desliga o cliente normalmente suspend Coloca o cliente em modo de suspenso Notes: O usurio deve ter privilgio adequado para poder ligar/desligar o cliente. usage } # Chamar este comando apenas se houve um erro de entrada, pois ele exibe a usabilidade # message error_exit() { message=$1 exit_code=$2 echo $message usage exit $exit_code

} Tome nota do uso, o script deve especificar uma operao - a razo para isso ser capaz de adicionar funcionalidades depois. E mesmo que agora o escopo do script limitado aos comandos do poder, fei to corretamente, o script poderia mais tarde ter outras operaes vimvc adicionado a ele e seu uso semelhante ao coman do IPMI. Agora, para a carne do roteiro, acreditem ou no simples, pois tudo o que tem de ser feito orada em string para o comando "power.$operation" h trs passos bsicos: 1. 2. 3. validar a entrada verificar a vmid tentar executar o comando

Primeiramente a validao: # Anlise de entrada - A usabilidade explica oque cada um faz if [ $# -gt 0 -a "$1" = "-u" ];then usage exit 0 fi guest=$1 oper=$2 subcmd=$3 if [ ! $guest ]; then echo "Erro: Nenhum cliente especificado" usage exit 1 fi [ ! $guest ] << error_exit "Nenhum cliente especificado" 1 [ ! $oper ] << error_exit "Nenhuma operao especificada" 1 [ ! $subcmd ] << error_exit "Nenhum subcomando especificado" 1 nada muito difcil, o proximo comando tentara obter o vmid usando grep e awk, este o lugar onde o formato de arquivo simples, entra em jogo: # vmid=`grep $guest $HOSTSFILE|awk '{print $2}'` [ ! $vmid ] << error_exit "${guest} efetuado no corresponde a nada em $HO STSFILE" 2 Com o vmid em mos o proximo passo determinar a operao e , em seguida, tentar execut ar: # case $oper in power)

$VIMVC"power."$subcmd $vmid 2>/dev/null if [ $? -gt 0 ]; then error_exit "$subcmd failed" 1 fi ;; *) error_exit "Operao Invlida" 2 ;; esac exit 0 The power case could be more exotic but to keep from having to include all of th e valid commands (even as a sed compare) we just fail. Note how by casing in the operation the doorway is left open to ad d other vimvc commands. O case power poderia ser mais complexo, mas para no ter que incluir todos os coma ndos vlidos (mesmo como um sed compare) como acabamos de deixar. Note como o case operation da porta deixada aberta para adicionar outros comandos vimvc. O Script na Integra #!/bin/sh # gsx-ipmi - Um wrapper shell ipmilike para vmware-vim-cmd vmsvc/power.* HOSTSFILE=/etc/gsxhosts # Isso pode ser em qualquer lugar, a gosto do ad min VIMVC=" vmware-vim-cmd vmsvc/" # Tomados apenas sobre a oper usage() { if [ -n "$*" ]; then echo " " echo "${PROG}: $*" fi cat <<usage ${PROG} [host][oper cmd]|[-u] ${PROG} [host][power getstate|hibernate|off|on|reboot|shutdown|suspend]| [-u] Commands: getstate Exibe o estado atual de energia dos clientes hibernate Coloca os clientes em modo hibernar (OS necessita suporte) off Corta energia e desliga o cliente on Liga a energia e inicia o cliente reboot Reinicia o cliente reset Reseta o cliente shutdown Desliga o cliente normalmente suspend Coloca o cliente em modo de suspenso Notes: O usurio deve ter privilgio adequado para poder ligar/desligar o cliente. usage } # Chamar este comando apenas se houve um erro de entrada, pois ele exibe a usabilidade # message error_exit()

{ message=$1 exit_code=$2 echo $message usage exit $exit_code } # Anlise de entrada - A usabilidade explica oque cada um faz if [ $# -gt 0 -a "$1" = "-u" ];then usage exit 0 fi guest=$1 oper=$2 subcmd=$3 if [ ! $guest ]; then echo "Erro: Nenhum cliente especificado" usage exit 1 fi [ ! $guest ] << error_exit "Nenhum cliente especificado" 1 [ ! $oper ] << error_exit "Nenhuma operao especificada" 1 [ ! $subcmd ] << error_exit "Nenhum subcomando especificado" 1 vmid=`grep $guest $HOSTSFILE|awk '{print $2}'` [ ! $vmid ] << error_exit "${guest} efetuado no corresponde a nada em $HO STSFILE" 2 case $oper in power) $VIMVC"power."$subcmd $vmid 2>/dev/null if [ $? -gt 0 ]; then error_exit "$subcmd failed" 1 fi ;; *) error_exit "Operaco invalida" 2 ;; esac exit 0 FIM

Você também pode gostar