Excelente explicação,
só pra constar como ficou a parte mencionada no script
list(){
python -c '
import base64
import commands
path = commands.getoutput("echo $HOME")
f = open(path+"/.shellmox/.moxcfg", "r")
name = f.readline().replace("\n", "")
host = f.readline().replace("\n", "")
user = f.readline().replace("\n", "")+"@pam"
pas1 = f.readline().replace("\n", "")
pas2 = base64.b64decode(pas1).replace("\n", "")
from proxmoxer import ProxmoxAPI; proxmox = ProxmoxAPI(host, user=user, password=pas2, verify_ssl=False)
for vm in proxmox.cluster.resources.get(type="vm"): print("{0}. {1} => {2}" .format(vm["vmid"], vm["name"], vm["status"]))
f.close()
'
}
source:
https://raw.githubusercontent.com/m41k/shellmox/master/shellmox
Curiosidade: Nesse script de inicio escrevi para ser interpretado pelo /bin/bash, resolvi alterar para ser interpretado para /bin/sh, quando resolvi gerar uma imagem o mais compacta possível para o Docker, tive que fazer algumas alterações.
Comentadas no script(#RMsh):
"read -sp" não funcionou
array abaixo substituí, não rolou
OP=('list' 'lxc-ls' 'templates' 'id' 'create' 'config')
function list() substiuído por list()
Nota:
Júlio quando diz do tal open em outras linguagens de programação para pegar conteúdo
de arquivo pode ser notado no script, isso realmente faz eu admirar mais o shell.
________________________________
De: shell-***@yahoogrupos.com.br <shell-***@yahoogrupos.com.br> em nome de 'Julio C. Neves' ***@gmail.com [shell-script] <shell-***@yahoogrupos.com.br>
Enviado: sábado, 15 de julho de 2017 18:06
Para: shell-***@yahoogrupos.com.br
Assunto: Re: [shell-script] Shell Script com CGI [Projeto Cloud]
Maik, suponha que eu esteja dentro de um script shell e não conheça nem o cmd echo, nem o printf, mas sei que em python o cmd print manda o dado para a tela, então veja essa facilidade do Shell, que vc já deve conhecer, mas nem sempre é empregada na sua potencialidade máxima:
$ Num=5
$ Nome=Maik
$ /usr/bin/python << fim
print $Num
print $Nome
fim
5
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'Maik' is not defined
Ele imprimiu $Num, mas deu erro em $Nome, isso pq vc está chamando o interpretador python porém está em um ambiente Shell, ou seja a variável que interpreta é o Shell, que passa o literal Maik para o print do Python, mas o Python só entende literais que estào dentro de aspas (sem aspas ele imagina que seja um número ou uma variável) vamos então listar esta variável entre aspas:
$ /usr/bin/python << fim
print $Num
print "$Nome"
fim
5
Maik
Agora funcionou. Dei essa volta toda, só para mostrar para a nossa lista que qq interpretador (inclusive os *SQL* da vida) pode ser usado nativamente dentro de um script, inclusive partilhando seus dados.
Volto a dizer: nunca pergunte se dá para fazer em Shell. A pergunta correta é: qual é a melhor maneira de se fazer em Shell. ;)
No dia 19/07 farei um hangout somente sobre Shell que começará as
20:00h até mais ou menos as 21:00h ou até acabarem as perguntas.
Isto é, só acabará quando se encerrarem as dúvidas.
Inscreva-se em: https://app.webinarjam.net/register/37942/66d16b7d7c
[
Loading Image...]<https://app.webinarjam.net/register/37942/66d16b7d7c>
WEBINARJAM | Desvendando o Shell Script<https://app.webinarjam.net/register/37942/66d16b7d7c>
app.webinarjam.net
Hangout Online e Gratuito Escola Linux - Desvendando o Shell Script
[https://docs.google.com/uc?export=download&id=0B6Rg1uyhMVcbSlVpcWVlY0VpMmc&revid=0B6Rg1uyhMVcbVWZQemlSSzZDT1QySjZDbmdvTWQraUNZUVFjPQ]
Abcs,
Julio
Damos treinamento em sua empresa por um preço,
no mínimo, 50% mais barato que qualquer curso,
com certificado e nota fiscal.
Nosso time de instrutores in company é formado somente por
autores
de Best Sellers
laureados sobre os temas. P. exemplo:
Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Em 15 de julho de 2017 12:54, maik alberto ***@hotmail.com<mailto:***@hotmail.com> [shell-script] <shell-***@yahoogrupos.com.br<mailto:shell-***@yahoogrupos.com.br>> escreveu:
Então,
tava apreendo um pouco sobre Ansible, vi que nele tinha um módulo para LXC(tem tb pra kvm, naum mexi ainda), resolvi então juntar o que estava aprendendo(Ansible), com um pouco que sei(LXC) e com o que gosto(SHELL), então coloquei isso no script. O gerenciamento dos containers tá baseado nesse pilares. Quando você faz a criação de container através do script, ele sobe uma máquina como estivesse fazendo através do proxmox na web. Se fizer a criação através do terminal e estiver com o browser aberto em paralelo, vai ver a máquina sendo criada, parada ou excluída em tempo real, e poderá administra por lá sem problema, "o script agiliza o processo de cliques".
No meio do caminho me deparei com a API do proxmox, pouco conhecimento sobre, mas peguei o proxmoxer - Python Wrapper for the Proxmox 2.x API - (Vale compartilhar com os demais, dentro do shell tá rodando algo em python, a forma que achei, talvez seja útil para alguém) que faz a interação com a API, joguei dentro de uma função no shell script, no momento ele apenas faz a listagem das VMs e Containers para consulta no terminal.
Dá pra fazer muita coisa ainda. Espero ter esclarecido algumas dúvidas. Disponha.
PS: Só pra manter o foco, o projeto do tópico tem algumas características parecidas do proxmox. (em relação ao gerenciamento de containers LXC).
________________________________
De: shell-***@yahoogrupos.com.br<mailto:shell-***@yahoogrupos.com.br> <shell-***@yahoogrupos.com.br<mailto:shell-***@yahoogrupos.com.br>> em nome de Gilberto Nunes ***@gmail.com<mailto:***@gmail.com> [shell-script] <shell-***@yahoogrupos.com.br<mailto:shell-***@yahoogrupos.com.br>>
Enviado: sábado, 15 de julho de 2017 12:03
Para: shell-***@yahoogrupos.com.br<mailto:shell-***@yahoogrupos.com.br>
Assunto: Re: [shell-script] Shell Script com CGI [Projeto Cloud]
Olà Maik....
Muito interessante...
O que acho que falta ao Proxmox é algo no estilo que vc criou, algo mais simples e direto!
Pra quem é técnico como nós, quanto mais detalhes melhor... rs....
Mas a tua interface shell é mais direta ao ponto...
O backend também é em Proxmox???
Digo, seu shell é capaz de "interfacear" ( perdoem-me pela infâmia do termo... ) com a API do Proxmox
( https://pve.proxmox.com/wiki/Proxmox_VE_API ).
Proxmox VE API - Proxmox VE<https://pve.proxmox.com/wiki/Proxmox_VE_API>
pve.proxmox.com<http://pve.proxmox.com>
Introduction. Proxmox VE uses a REST like API. The concept is described in [1] (Resource Oriented Architectur - ROA). We choose JSON as primary data format, and the ...
Tipo poderia criar as VM's no Proxmox mas gerenciá-las pelo sua interface web-shell ???
Obrigado
Cordialmente
Gilberto Ferreira
Consultor TI Linux | IaaS Proxmox, CloudStack, KVM | Zentyal Server | Zimbra Mail Server
(47) 3025-5907<tel:(47)%203025-5907>
(47) 99676-7530<tel:(47)%2099676-7530>
Skype: gilberto.nunes36
konnectati.com.br<http://www.konnectati.com.br/>
http://youtu.be/dsiTPeNWcSE
Em 15 de julho de 2017 11:37, ***@hotmail.com<mailto:***@hotmail.com> [shell-script] <shell-***@yahoogrupos.com.br<mailto:shell-***@yahoogrupos.com.br>> escreveu:
Obrigado Gilberto!
Observei em sua assinatura o Proxmox, só para conhecimento o projetohttp://luw.servehttp.com/<http://luw.servehttp.com/> está numa VM dele, e como a lista é de shell, recentemente escrevi um script para administrar remotamente o proxmox através de linha de comando, de inicio o foco foi o gerenciamento de containers(LXC).
Segue para conhecimento: https://github.com/m41k/shellmox