OpDemand Shell

Tela Software:
OpDemand Shell
Detalhes de Software:
Versão: 0.9
Data de upload: 15 Apr 15
Revelador: OpDemand
Licença: Livre
Popularidade: 96

Rating: nan/5 (Total Votes: 0)

O projeto OpDemand Shell contém a interface do cliente de linha de comando para o sistema C2. Estes módulos Python são parte da tecnologia de Comando e Controle de OpDemand (C2).
Open Source
O projeto c2-shell foi feito open source por OpDemand.
C2 Shell Documentação
Antes de você começar
- Você vai precisar de uma conta C2 ativa. Criar uma gratuitamente no https://c2.opdemand.com/
- Instruções de assumir OSX ou Linux (Windows não foi testado, mas deve funcionar)
Instalação
A instalação usa distutils padrão convenção.
sudo python setup.py instalar
Configuração
Adicionar o seu endereço de e-mail C2 de login para a configuração do cliente local.
conjunto local c2 --email=c2user@opdemand.com
A get locais c2 vai exibir a configuração atual.
Logando
Emitir um login c2, que usará o endereço de e-mail configurado acima e pedir-lhe uma senha.
user @ caixa: ~ / workspace / c2-shell $ c2 de login
password:
2011-06-07 08: 44: 12,052 - INFO - => POST https://c2core.opdemand.com/session
2011-06-07 08: 44: 13,095 - INFO - GET https://c2core.opdemand.com/template
2011-06-07 09: 21: 21,879 - INFO - <= 200 OK, leitura 1.822 bytes de application / json
[# Lista JSON de modelos
& Nbsp; {
& Nbsp; # Primeiro modelo
& Nbsp;},
& Nbsp; {
& Nbsp; # Segundo template
& Nbsp;}
]
2011-06-07 09: 21: 21,881 - INFO - (modelo / list) sucesso em 0.524872s
Encontre o valor _id do modelo que pretende implantar, e copiá-lo para o clipboard.
Criar uma nova plataforma
Selecione o modelo desejado e emitir uma carga template c2 do _id modelo, que irá criar uma plataforma fresco.
user @ caixa: ~ / workspace / c2-shell modelo $ c2 carga --_ id = 6c86dfc5ddfe464199021b8dcaf521a2
2011-06-07 09: 42: 36,711 - INFO - => POST https://c2core.opdemand.com/template/6c86dfc5ddfe464199021b8dcaf521a2/load
2011-06-07 09: 42: 38,606 - INFO - <= 201 Criado, leitura 14.850 bytes de application / json
{
& Nbsp; # representação muito mais tempo JSON do modelo
}
2011-06-07 09: 42: 38,757 - INFO - (template / carga) sucesso em 2.061932s
Lista de Plataformas
Emitir uma lista plataforma c2 para ver as plataformas disponíveis na sua conta.
user @ caixa: ~ / workspace / c2-shell lista plataforma $ c2
2011-06-07 09: 46: 48,327 - INFO - => GET https://c2core.opdemand.com/platform
2011-06-07 09: 46: 48,884 - INFO - <= 200 OK, a leitura de 566 bytes de application / json
[
& Nbsp; {
& Nbsp; # Sua nova plataforma
& Nbsp;}
]
2011-06-07 09: 46: 48,885 - INFO - (plataforma / list) sucesso em 0.572228s
Copie o _id desta plataforma para o clipboard.
Leia a plataforma
As operações de lista mostrar apenas representações sumárias de itens em uma coleção. Para visualizar a representação plena de uma plataforma (que inclui os seus componentes aninhados) você deve emitir uma plataforma c2 ler e fornecer o _id:
user @ caixa: ~ / workspace / c2-shell plataforma $ c2 ler --_ id = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 16: 06,050 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 16: 06,984 - INFO - <= 200 OK, leitura 14.850 bytes de application / json
{
& Nbsp; # representação plataforma completa
}
2011-06-07 10: 16: 07,152 - INFO - (plataforma / ler) sucesso em 1.117754s
Trabalhando com respostas JSON
A plataforma acima é muito tempo para ler. Felizmente, o shell C2 inclui um prettifier integrada JSON que torna a saída JSON a partir de qualquer comando shell C2 muito mais fácil de ler.
Basta enviar qualquer comando c2 a c2 bonita:
user @ caixa: ~ / workspace / c2-shell modelo c2 $ ler --_ id = 6c86dfc5ddfe464199021b8dcaf521a2 | c2 bonita
2011-06-07 09: 32: 00,646 - INFO - => GET https://c2core.opdemand.com/template/6c86dfc5ddfe464199021b8dcaf521a2
2011-06-07 09: 32: 01,378 - INFO - <= 200 OK, leitura 12.022 bytes de application / json
2011-06-07 09: 32: 01,535 - INFO - (template / ler) sucesso em 0.904613s
tiers.0.name "Camada de Rede"
tiers.0.doctype "tier"
tiers.0._rev "1-5a37d211b276deee536cd72a016af8fa"
... Resto prettified JSON
Todos os comandos do C2 ler da entrada padrão e escreve na saída padrão. Isto significa JSON cru e JSON prettified pode ser canalizada para qualquer outro comando que usa tubos de estilo UNIX. (Por exemplo grep).
Configurar a plataforma
Primeiro leia a plataforma e grep para obter as informações de configuração padrão:
user @ caixa: ~ / workspace / c2-shell plataforma $ c2 ler --_ id = 7bbeacb1082e4810bb1a6643d024496e | c2 bonita | configuração grep
2011-06-07 10: 26: 29.828 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 26: 30,486 - INFO - <= 200 OK, leitura 14.850 bytes de application / json
2011-06-07 10: 26: 30,635 - INFO - (plataforma / ler) sucesso em 0.821403s
config.access_network "0.0.0.0/0"
config.image_id "ami-06ad526f"
config.doctype "config"
config._rev "1-38d720a0975e4d377ccbfd3cb7864185"
config.access_port "22"
config.cloud_name "us-east-1"
config.clone_.parent_id "ceee3724a3674bc096a2a6d2dfde7209"
config.clone_.parent_impl.cls_ "c2core.resolve.Config"
config.admin_network "0.0.0.0/0"
config._id "ceee3724a3674bc096a2a6d2dfde7209"
config.impl.cls_ "c2core.resolve.Config"
config.views.7bbeacb1082e4810bb1a6643d024496e.0.0 "7bbeacb1082e4810bb1a6643d024496e"
config.views.7bbeacb1082e4810bb1a6643d024496e.0.1 "config"
metadata.config_info.access_port "porta de escuta no servidor"
metadata.config_info.access_network "máscara de rede para os usuários públicos"
metadata.config_info.cloud_name "Nome da região AWS"
metadata.config_info.admin_network "máscara de rede para usuários admin"
Vamos restringir todo o acesso à rede a um host - 1.1.1.1/32. Isso vai exigir alterando as chaves access_network e admin_network.
Desde de configuração é um documento nested com a sua própria _id e _rev, temos de modificar o documento de configuração diretamente. Para fazer isso, seguimos a convenção RESTful de ler a representação e canalizando-a para uma operação de atualização:
user @ caixa: ~ / workspace / c2-shell $ c2 configuração ler --_ id = ceee3724a3674bc096a2a6d2dfde7209 | atualização de configuração c2 - --access_network = 1.1.1.1 / 32 --admin_network = 1.1.1.1 / 32
2011-06-07 10: 35: 39,643 - INFO - objeto de stdin leitura, ctrl-c para quebrar ...
2011-06-07 10: 35: 39,661 - INFO - => GET https://c2core.opdemand.com/config/ceee3724a3674bc096a2a6d2dfde7209
2011-06-07 10: 35: 40,573 - INFO - <= 200 OK, a leitura de 692 bytes de application / json
2011-06-07 10: 35: 40,574 - INFO - (config / ler) sucesso em 0.931527s
2011-06-07 10: 35: 40,603 - INFO - => PUT https://c2core.opdemand.com/config/ceee3724a3674bc096a2a6d2dfde7209
2011-06-07 10: 35: 41,316 - INFO - <= 200 OK, a leitura de 694 bytes de application / json
{
& Nbsp; "_ id": "ceee3724a3674bc096a2a6d2dfde7209",
& Nbsp; "_ rev": "2-6a1cac4a1851fead776d4184e1218028",
& Nbsp; "access_network": "1.1.1.1/32",
& Nbsp; "access_port": "22",
& Nbsp; "admin_network": "1.1.1.1/32",
& Nbsp; "clone_": {
& Nbsp; "parent_id": "ceee3724a3674bc096a2a6d2dfde7209",
& Nbsp; "parent_impl": {
& Nbsp; "cls_": "c2core.resolve.Config"
& Nbsp;}
& Nbsp;},
& Nbsp; "cloud_name": "us-east-1",
& Nbsp; "doctype": "config",
& Nbsp; "image_id": "ami-06ad526f",
& Nbsp; "impl": {
& Nbsp; "cls_": "c2core.resolve.Config"
& Nbsp;},
& nbsp; "visões": {
& Nbsp; "7bbeacb1082e4810bb1a6643d024496e": [
& Nbsp; [
& Nbsp; "7bbeacb1082e4810bb1a6643d024496e",
& Nbsp; "config"
& Nbsp;]
& Nbsp;]
& Nbsp;}
}
2011-06-07 10: 35: 41,317 - INFO - (config / update) sucesso em 0.730138s
Re-ler a configuração da plataforma para confirmar o documento pai inclui o atualizado, configuração aninhada:
user @ caixa: ~ / workspace / c2-shell plataforma $ c2 ler --_ id = 7bbeacb1082e4810bb1a6643d024496e | c2 bonita | configuração grep
2011-06-07 10: 37: 11,131 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 37: 11,825 - INFO - <= 200 OK, leitura 14.852 bytes de application / json
2011-06-07 10: 37: 11,977 - INFO - (plataforma / ler) sucesso em 0.862029s
config.access_network "1.1.1.1/32"
config.image_id "ami-06ad526f"
config.doctype "config"
config._rev "2-6a1cac4a1851fead776d4184e1218028"
config.access_port "22"
config.cloud_name "us-east-1"
config.clone_.parent_id "ceee3724a3674bc096a2a6d2dfde7209"
config.clone_.parent_impl.cls_ "c2core.resolve.Config"
config.admin_network "1.1.1.1/32"
config._id "ceee3724a3674bc096a2a6d2dfde7209"
config.impl.cls_ "c2core.resolve.Config"
config.views.7bbeacb1082e4810bb1a6643d024496e.0.0 "7bbeacb1082e4810bb1a6643d024496e"
config.views.7bbeacb1082e4810bb1a6643d024496e.0.1 "config"
metadata.config_info.access_port "porta de escuta no servidor"
metadata.config_info.access_network "máscara de rede para os usuários públicos"
metadata.config_info.cloud_name "Nome da região AWS"
metadata.config_info.admin_network "máscara de rede para usuários admin"
Iniciar a plataforma
Com as nossas credenciais AWS no lugar, e nossa plataforma na fila, estamos prontos para ir. Emitir um início plataforma c2 e deixe a orquestração começar:
user @ caixa: ~ / workspace / c2-shell $ plataforma c2 começar --_ id = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 42: 52,849 - INFO - => POST https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e/start
2011-06-07 10: 42: 53,816 - INFO - <= 202 Accepted, leitura 0 bytes de application / json
2011-06-07 10: 42: 53,816 - INFO - (plataforma / start) o sucesso na 0.981219s
Para acompanhar o progresso da plataforma, ler a representação plataforma completa e grep para o status de todos os objetos aninhados:
user @ caixa: ~ / workspace / c2-shell plataforma $ c2 ler --_ id = 7bbeacb1082e4810bb1a6643d024496e | c2 bonita | estatuto grep
2011-06-07 10: 43: 06,530 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 43: 07,228 - INFO - <= 200 OK, leitura 22.227 bytes de application / json
2011-06-07 10: 43: 07,451 - INFO - (plataforma / ler) sucesso em 0.935643s
tiers.0.status_.value "building"
tiers.0.keypair.status_.detail "par de chaves criado"
tiers.0.keypair.status_.value "construído"
tiers.0.sg.status_.detail "regras autorizado com sucesso"
tiers.0.sg.status_.value "construído"
tiers.1.status_.value "building"
tiers.1.server.status_.detail "à espera de execução, atualmente pendente"
tiers.1.server.status_.value "building"
status_.detail "iniciar a operação desencadeada"
status_.value "partida"
Podemos ver o status de nível plataforma está começando. Re-emita este comando várias vezes ao status de "poll". Grepping para o estado também é útil para demonstrar que os componentes estão atualmente em transição. Uma vez que a plataforma é feito, o estado deve olhar como se segue:
user @ caixa: ~ / workspace / c2-shell plataforma $ c2 ler --_ id = 7bbeacb1082e4810bb1a6643d024496e | c2 bonita | estatuto grep
2011-06-07 10: 44: 21,015 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 44: 21,736 - INFO - <= 200 OK, leitura 27.129 bytes de application / json
2011-06-07 10: 44: 21,988 - INFO - (plataforma / ler) sucesso em 0.990599s
tiers.0.status_.detail "iniciado com êxito"
tiers.0.status_.value "correr"
tiers.0.keypair.status_.detail "par de chaves criado"
tiers.0.keypair.status_.value "correr"
tiers.0.sg.status_.detail "regras autorizado com sucesso"
tiers.0.sg.status_.value "correr"
tiers.1.status_.detail "iniciado com êxito"
tiers.1.status_.value "correr"
tiers.1.server.status_.detail "ouvinte pronto em 22 / tcp"
tiers.1.server.status_.value "correr"
status_.detail "operação começar bem sucedido"
status_.value "correr"
Nota um estatuto de nível pai de "correr" com o ouvinte servidor pronto em 22 / tcp. Nossa plataforma está pronta.
Utilizando a plataforma
Todas as plataformas de publicar informações sobre a forma como eles são usados. A maioria das plataformas publicar alguma combinação de:
- URLs
- hostname / combinações de portas
- Logins
- Palavras-chave
Se lermos a plataforma e grep para publicar podemos ver esta plataforma publicou uma url SSH simples:
user @ caixa: ~ / workspace / c2-shell plataforma $ c2 ler --_ id = 7bbeacb1082e4810bb1a6643d024496e | c2 bonita | grep publicar
2011-06-07 10: 51: 30,694 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 51: 31,764 - INFO - <= 200 OK, leitura 27.129 bytes de application / json
2011-06-07 10: 51: 32,038 - INFO - (plataforma / ler) sucesso em 1.367026s
tiers.1.server.publish.access_url "ssh: //ubuntu@ec2-50-19-55-84.compute-1.amazonaws.com/"
"URL para acessar a plataforma" metadata.publish_info.access_url
Um padrão comum é para plataformas de publicação:
- Admin URL
- Admin Login
- Admin Password
- URL de Acesso
Parando a plataforma
Uma vez que a plataforma tenha parado, o seu estatuto será algo parecido com isto:
user @ caixa: ~ / workspace / c2-shell plataforma $ c2 ler --_ id = 7bbeacb1082e4810bb1a6643d024496e | c2 bonita | estatuto grep
2011-06-07 10: 57: 51,345 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 57: 52,128 - INFO - <= 200 OK, leitura 27.966 bytes de application / json
2011-06-07 10: 57: 52,424 - INFO - (plataforma / ler) sucesso em 1.093576s
tiers.0.status_.detail "parado com êxito"
tiers.0.status_.value "parado"
tiers.0.keypair.status_.detail "par de chaves criado"
tiers.0.keypair.status_.value "parado"
tiers.0.sg.status_.detail "regras autorizado com sucesso"
tiers.0.sg.status_.value "parado"
tiers.1.status_.detail "parado com êxito"
tiers.1.status_.value "parado"
tiers.1.server.status_.detail "à espera de parado, parado no momento"
tiers.1.server.status_.value "parado"
status_.detail "operação de parada de sucesso"
status_.value "parado"
A plataforma ainda existe na nuvem, mas já não é incorrer em custos de computação caros (que é, no entanto, incorrer em custos de armazenamento insignificantes). Você também está já não incorrer em taxas plataforma C2. Neste ponto, sua plataforma custa efetivamente nada.
As plataformas podem ser interrompido e iniciado sem limite.
Destrua a plataforma
Para realmente destruir todos os componentes nuvem incluídos em sua plataforma, você deve emitir uma plataforma c2 destruir e fornecer o _id da plataforma de destino:
user @ caixa: ~ / workspace / c2-shell plataforma $ c2 destruir --_ id = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11: 04: 10,667 - INFO - => POST https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e/destroy
2011-06-07 11: 04: 11,953 - INFO - <= 202 Accepted, leitura 0 bytes de application / json
2011-06-07 11: 04: 11,953 - INFO - (plataforma / destruir) o sucesso na 1.300462s
Excluir a plataforma
Se você listar as plataformas, você verá que a plataforma destruída ainda existe:
user @ caixa: ~ / workspace / c2-shell lista plataforma $ c2 | c2 bonita
2011-06-07 11: 12: 02,771 - INFO - => GET https://c2core.opdemand.com/platform
2011-06-07 11: 12: 03,149 - INFO - <= 200 OK, leitura 1.577 bytes de application / json
2011-06-07 11: 12: 03,150 - INFO - (plataforma / list) sucesso em 0.394324s
0.views.7bbeacb1082e4810bb1a6643d024496e.0.0 "7bbeacb1082e4810bb1a6643d024496e"
0.time_.disconnect.date_ "1307466249,487580"
0.time_.stop.date_ "1307465858,607597"
0.time_.start.date_ "1307465019,767619"
0.time_.build.date_ "1307465019,475195"
0.time_.destroy.date_ "1307466249,487347"
0.time_.connect.date_ "1307466240,220381"
0.status_.detail "operação destruir sucesso"
0.status_.value "destruído"
0.doctype "plataforma"
0._rev "7-38fe44c5a900894adf48f4a416c94338"
0.template.cls_ "lib.platform.vanilla.natty.UbuntuNattyPlatform"
0._id "7bbeacb1082e4810bb1a6643d024496e"
0.state.running falsa
0.state.transitioning falsa
0.state.built falsa
0.impl.cls_ "lib.platform.vanilla.natty.UbuntuNattyPlatform"
0.interval_.destroy 9,3936290740966797
0.interval_.stop 33,600441932678223
0.interval_.build 57,54404091835022
0.interval_.start 57,836580991744995
A partir do intervalo que você pode vê-lo levou:
- 58 segundos para iniciar esta plataforma
- 33 segundos para pará-lo
- 9 segundos para destruí-la
Você sempre pode voltar a começar uma plataforma destruída e tê-lo a reconstruir os componentes nuvem novamente. No entanto, para completar excluir a plataforma e os seus documentos aninhados, você deve emitir uma plataforma c2 excluir:
user @ caixa: ~ / workspace / c2-shell plataforma $ c2 excluir --_ id = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11: 15: 45,235 - INFO - => Excluir https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11: 15: 46,474 - INFO - <= 204 Nenhum conteúdo, lendo 0 bytes de application / json
2011-06-07 11: 15: 46,474 - INFO - (plataforma / delete) o sucesso na 1.252582s
Para confirmar, podemos ver nossa lista plataforma encontra-se vazio:
user @ caixa: ~ / workspace / c2-shell lista plataforma $ c2
2011-06-07 11: 15: 51,890 - INFO - => GET https://c2core.opdemand.com/platform
2011-06-07 11: 15: 52,296 - INFO - <= 200 OK, lendo dois bytes de application / json
2011-06-07 11: 15: 52,297 - INFO - (plataforma / list) sucesso em 0.423616s
O encerramento da sessão
Ao emitir uma informação c2 podemos ver o estado da nossa sessão:
user @ caixa: ~ / workspace / c2-shell info $ c2
2011-06-07 11: 17: 11,656 - INFO - => GET https://c2core.opdemand.com/session/73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95
2011-06-07 11: 17: 12,134 - INFO - <= 200 OK, leitura 4.082 bytes de application / json
{
& Nbsp; "conta": "c2-opdemand",
& Nbsp; "email": "gabriel@opdemand.com",
& Nbsp; "expires_at": "sexta-feira 10 de junho, 2011 08:44",
& Nbsp; "session_id": "73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95"
}
2011-06-07 11: 17: 12,138 - INFO - (info) sucesso em 0.497018s
O encerramento da sessão é o logout simplesmente c2:
user @ caixa: ~ / workspace / c2-shell $ c2 de logout
2011-06-07 11: 17: 44,903 - INFO - => Excluir https://c2core.opdemand.com/session/73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95
2011-06-07 11: 17: 45,330 - INFO - <= 204 Nenhum conteúdo, lendo 0 bytes de application / json
2011-06-07 11: 17: 45,330 - INFO - (Sair) sucesso em 0.443405s
user @ caixa: ~ / workspace / c2-shell info $ c2
2011-06-07 11: 17: 49,025 - INFO - (info) sucesso em 0.000376s
Sobre C2
Command & Control Tecnologia da OpDemand (C2) automatiza a implantação e gestão da infra-estrutura de computação em nuvem. Com uma interface tão simples como "iniciar, parar, clone e destruir", C2 dá-lhe o comando de seu cloud

Requisitos :.

  • Python

Programas semelhantes

ConMan
ConMan

11 May 15

JCTerm
JCTerm

14 Apr 15

SftpMan GTK
SftpMan GTK

11 May 15

Eter
Eter

11 May 15

Comentário para OpDemand Shell

Comentários não encontrado
Adicionar comentário
Ligue imagens!