Skip to content

Instantly share code, notes, and snippets.

@shellscriptx
Last active January 16, 2019 14:36
Show Gist options
  • Select an option

  • Save shellscriptx/c3071990477d9df06e568926df723f51 to your computer and use it in GitHub Desktop.

Select an option

Save shellscriptx/c3071990477d9df06e568926df723f51 to your computer and use it in GitHub Desktop.

ZABBIX.SH

CONTRIBUA

Se você possui conhecimentos na ferramenta Zabbix e gostaria de contribuir na construção da biblioteca no projeto bashsrc, leia a documentação a seguir.

SOBRE

A biblioteca zabbix.sh será constituída por uma coleção de funções que irão integrar os métodos da API oficial e objetos que implementam tais métodos na passagem dos argumentos. Esse modelo de interface requer a conversão de cada método em um estrutura de dados nomeados e com seus respectivos tipos.

A razão desse mini-manual é descrever como um tipo é declarado utilizando os recursos do bashsrc e como devemos proceder na declaração da estrutura de cada método.

O ecossistema do bashsrc suporta os seguintes tipos básicos:

Tipo Descrição
bool Valor booleano. (true ou false)
str Uma cadeia de caracteres.
char Um caractere.
int Inteiro com sinal.
uint Inteiro sem sinal.
float Ponto flutuante.
var Indentificador de uma variável válida.
array Identificador de um array indexado válido.
map Identificador de um array associativo válido.
function Identificador de uma função válida.

Nota: Veja os tipos suportados pelo Zabbix: clique aqui

Criando uma estrutura

Para definir um objeto é necessário a palavra-chave var, veja a sintaxe:

var nome_st struct_t

Por convenção utilize o sufixo _st no identificador do objeto para sinalizar que é uma estrutura.

Após a declaração o objeto irá implementar o método __add__ com o qual iremos adicionar os membros e seus respectivos tipos, veja a sintaxe:

nome_st.__add__   membro1 tipo1 \
                  membro2 tipo2
                  ...

Definindo estrutura dos métodos Zabbix.

Para garantir a exclusividade de nomenclaturas utilize o prefixo zabbix_ seguindo do nome do método ao qual pertence.

Cada método possui um série de argumentos e tipos suportados.

Exemplo:

Considere o método de autenticação user.login da API Oficial que suporta os seguintes parâmetros:

Parâmetro Tipo Descrição
password string Senha do usuaŕio.
user string Nome do usuário.
userData flag Informações sobre autenticação do usuario.

Veja métodos suportados: clique aqui

Convertendo para estrutura. (modelo)

# Criando estrutura
var zabbix_user_login_st struct_t

# Definindo membros da estrutura
zabbix_user_login_st.__add__  password  str \
                              user      str \
                              userdata  str

Nota: substitua o caractere . presente no identificador do método por _.

Os identificadores e membros devem estar em minúsculo.

Observação: O procedimento acima não requer o bashsrc configurado, apenas que o arquivo modelo respeite os padrões de sintaxe e formatação.

(ATENÇÃO): Certifique-se do tipo suportado por cada parâmetro do método durante a declaração do membro na estrutura, pois o tipo é verificado durante a atribuição do valor podendo gerar erros de tipagem a nível de execução.

CONSIDERAÇÕES FINAIS

De todo o processo de implementação a parte que demanda mais tempo é o mapeamento dos métodos/argumentos da API e a definição dos objetos das estruturas cuja tarefa requer um número maior de colaboradores. Caso queira ser esse colaborador, deixe seu comentário com o nome do método que deseja converter e envie o arquivo modelo para shellscriptx@gmail.com.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment