Verificando se serviço esta online
Verifica se o Mysql esta online, não estando ele ativa o mysql.
#!/bin/bash
PROC=`ps -A | grep -e mysqld`
echo $PROC
if [[ -z $PROC ]]; then
systemctl restart mysqld
fi
Verifica se o Mysql esta online, não estando ele ativa o mysql.
#!/bin/bash
PROC=`ps -A | grep -e mysqld`
echo $PROC
if [[ -z $PROC ]]; then
systemctl restart mysqld
fi
Neste artigo apresento como criar o pacote de instalador do Debian, já com interface gráfica.
Chamando o aplicativo através do menu.
Para criar o instalador do SSC, siga os passos abaixo:
apt install ssc2_[versao]_[plataforma].deb
Neste segundo artigo iremos abordar como realizar um crud simples em C usando banco de dados Mysql como referência.
No artigo anterior, tratamos de criar o banco de dados.
Agora iremos tratar de algumas definições do nosso projeto:
Para facilitar o CRUD, iremos dividir em pequenos aplicativos, alias, essa divisão deixa muito didática e fácil de entender.
Com isso, finalizamos o crud e teremos alcançado nosso objetivo neste artigo.
Iremos incluir aqui as dependências necessárias para seguir com este programa.
Primeiro pedimos para seguir o primeiro tutorial, pois sem a instalação do mysql fica dificil implementar.
Em seguida a instalação do ncurses, conforme o link abaixo:
http://maurinsoft.com.br/index.php/2022/01/31/instalando-ncurses/
Estaremos modificando o git incluindo a pasta gcc, nela incluiremos todos os fontes do projeto.
https://github.com/marcelomaurin/mysql-vs-todos
Primeiro iremos criar o Makefile
CC=gcc
SOURCE_INS=insPessoa.c
SOURCE_SEL=selPessoa.c
SOURCE_DEL=delPessoa.c
SOURCE_UPD=updPessoa.c
LIBS= -lmysql -lncurses
TARGET_INS=insPessoas
TARGET_SEL=selPessoas
TARGET_DEL=delPessoas
TARGET_UPD=updPessoas
all: clean compile install
clean:
rm *.o
compile:
$(CC) $(SOURCE_INS) -o $(TARGET_INS)
$(CC) $(SOURCE_SEL) -o $(TARGET_SEL)
$(CC) $(SOURCE_DEL) -o $(TARGET_DEL)
$(CC) $(SOURCE_UPD) -o $(TARGET_UPD)
install:
cp $(TARGET_INS) /usr/local/bin/
cp $(TARGET_SEL) /usr/local/bin/
cp $(TARGET_DEL) /usr/local/bin/
cp $(TARGET_UPD) /usr/local/bin/
Ao chamar o make, iremos compilar todos os fontes incluindo eles na pasta /usr/local/bin, que permite executar em qualquer local que quisermos.
Este programa irei apresentar na integra, comentando os pontos principais.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>
#define USER "gcc"
#define HOST "localhost"
#define DATABASE "testedb"
#define PASS "123456"
#define SUCCESS 0
#define ERROR 1
MYSQL *mycon;
//char PASS[20];
int res;
int conecta(void){
mycon = mysql_init(NULL);
/*
mysql_real_connect(MYSQL *mysql,
const char *host,
const char *user,
const char *passwd,
const char *db,
unsigned int port,
const char *unix_socket,
unsigned long client_flag)
*/
//mysql_options(mycon, MYSQL_READ_DEFAULT_FILE, (void *)"./my.cnf");
res = mysql_real_connect(
mycon,
HOST,
USER,
PASS,
DATABASE,
3306,
NULL,
0);
if(res!=NULL)
{
printf("Sucesso na conexão com servidor\n");
return SUCCESS;
}
else {
printf("Falha na conexao! Erro:%s\n",mysql_error(mycon));
return ERROR;
}
}
//Estrutura de cadastro de pessoas
typedef struct PESSOAS {
int idpessoa;
char nome[30];
char dtnasc[20];
char profissao[20];
char sexo;
} PESSOAS;
void desconecta(void){
mysql_close(mycon);
mysql_library_end();
printf("Desconectado\n");
}
int Select( PESSOAS *pes){
char sql[500];
memset(sql,'\0',sizeof(sql));
sprintf(sql,"select * from pessoas where nome like '%%%s%%'",
pes->nome
);
printf("SQL:%s\n\n",sql);
//mysql_prepare(
res = mysql_query(mycon,sql);
if(!res) {
printf("Pesquisa com sucesso!\n");
MYSQL_RES *result = mysql_store_result(mycon);
if (!result) {
printf("Couldn't get results set: %s\n", mysql_error(mycon));
} else {
MYSQL_ROW row;
int i;
unsigned int num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result))) {
for (i = 0; i < num_fields; i++) {
printf("%s, ", row[i]);
}
putchar('\n');
}
mysql_free_result(result);
}
} else {
printf("Falha na pesquisa Error:%s\n",mysql_error(mycon));
}
}
void captura_dados(PESSOAS *pes){
printf("Digite as informações que deseja pesquisar\n");
printf("==========================================\n");
printf("\nNome:");
scanf("%s",pes->nome);
printf("\n\n");
}
void Wellcome(void){
printf("Software selPessoa\n");
printf("Criado por Marcelo Maurin Martins\n");
printf("Maurinsoft.com.br\n");
//printf("Senha do banco:");
//scanf("%s",PASS);
}
//funcao principal
void main(int argc, char *argv[]){
Wellcome();
PESSOAS pessoa;
/*Testa conexao*/
if (conecta()==SUCCESS) {
captura_dados(&pessoa);
Select(&pessoa);
desconecta();
}
}
A primeira parte importante é a inclusão da lib, que permite compilar os comandos do mysql
#include <mysql.h>
Include da lib do mysql
O outro ponto importante é a declaração mycon.
MYSQL *mycon;
variavel de conexão do mysq
A mycon, é um handle do mysql. Que permite identificar a comunicação do banco aberta no comando mysql_init.
mycon = mysql_init(NULL);
inicia a comunicação com o mysql
Atribuindo acesso ao banco.
O comando mysql_real_connect atribui usuário e senha a conexão. Bem como estabelecendo um caminho entre o servidor correto.
res = mysql_real_connect(
mycon,
HOST,
USER,
PASS,
DATABASE,
3306,
NULL,
0);
São os principais parametros, HOST (o ip do servidor), user (usuário do banco), PASS(senha do banco), DATABASE (banco de dados), PORTA (default 3306).
O mysql_query permite rodar os comandos, tanto select, como update, delete e insert, ele é o mais importante comando.
Segue a apresentação dos programas rodando.
https://dev.mysql.com/doc/c-api/8.0/en/
https://zetcode.com/db/mysqlc/
Ao criar um shell script em linux, por vezes ficamos na duvida quando este apresenta algum problema.
O debug, consiste em uma técnica utilizada para analisar e posteriormente identificar problemas.
Os scripts bash (shell script) tambem podem ser debugados, para tanto, usamos os parâmetros a seguir
Usa-se quando for necessário imprimir o resultado do processamento do script
#!/bin/sh
set -x
[comando]
set +x
argumento usado na execução do
Opção | Significado |
---|---|
set -x | Imprime as declarações após interpretar metacaracteres e variáveis |
set+x | Pára a impressão de declarações |
set -v | Imprime as declarações antes de interpretar metacaracteres e variáveis |
set -f | Desativa a geração de nome de arquivo (usando metacaracteres) |
Este artigo foi baseado na referencia:
Para deixar automatizado a atualização de hora, é possível realizar um agendamento para rodar a atualização da data, usando o comando ntpdate.
Desta maneira, sempre que o servidor for aberto, ele auto atualizará.
Entre na pasta /etc , edit o arquivo crontab
10 * * * * ntpdate -u server ntp.research.gov
10 * * * * ntptime -s server ntp.research.gov
Salve este comando.
Desta forma o pdv será atualizado, de 10 em 10 minutos, sem necessidade de novas modificações.
O objetivo destes scripts são de permitir interagir de forma facil e prática a partir do reconhecimento de movimento do programa do linux motion.
Os scripts são dois:
analisa_img.sh
Executa um script, permitindo a programação de outros comandos associados ao reconhecimento de imagem e/ou analise e filtragem da imagem capturada.
analisa_avi.sh
Executa um script, permitindo a progração de outros comandos associados a conversão para formato MP4, permitindo assim a visualização através do browser.
Este script pode ser modificado a medida de sua necessidade, peço apenas que no uso, envie um email para marcelomaurinmartins@gmail.com, informando a finalidade. Justamente para que eu veja os frutos de 3 dias de trabalho, realmente auxiliaram alguem em algum lugar do mundo
Complemento:
Para o perfeito funcionamento deste script é necessário instalar préviamente os seguintes pacotes:
ffmpeg – realiza a conversão do arquivo avi para mp4
sudo apt-get install ffmpeg
2. Copie a pasta analisa_img para o caminho indicado no passo 1
Entre na pasta; cd /projetos/sosconsulta/linux/analisa_img/
3. Rode o Makefile; make all
Este procedimento, irá instalar os scripts na pasta /usr/local/bin
4. Configure o arquivo motion.conf, editando em /etc/motion, vim motion.conf
Altere o arquivo, incluindo:
on_movie_end /usr/local/bin/analisa_avi.sh %f
caso tenha threads.conf, faça nas mesmas, se houver necessidade.
Git:
https://github.com/MarceloMaurin/motion_avi_mp4/blob/master/analisa_img/analisa_avi.sh
The purpose of these scripts is to allow easy and practical interaction from the motion recognition of the linux motion program.
analisa_img.sh
Performs a script, allowing programming of other commands associated with image recognition and / or analysis and filtering of the captured image.
analisa_avi.sh
It executes a script, allowing the programming of other commands associated with the conversion to MP4 format, thus allowing the visualization through the browser.
This script can be modified to suit your needs, just ask that in use, send an email to marcelomaurinmartins@gmail.com, stating the purpose. Just so I can see the fruits of 3 days of work, really helped someone somewhere in the world
Complement:
For the perfect operation of this script it is necessary to install the following packages:
ffmpeg – performs conversion from avi file to mp4
sudo apt-get install ffmpeg
1. You should create the folders / projects / sosconsulta / linux / I recommend changing the folder path, however it will be necessary to change the entire reference in the scripts.
2. Copy the analisa_img folder to the path indicated in step 1
Enter the folder; cd / projects / sosconsulta / linux / analisa_img /
3. Run the Makefile; make all
This will install the scripts in the / usr / local / bin folder
4. Configure the motion.conf file by editing in / etc / motion, vim motion.conf
Change the file, including:
on_movie_end /usr/local/bin/analisa_avi.sh% f
if it has threads.conf, do it on them, if need be.
Git:
https://github.com/MarceloMaurin/motion_avi_mp4/blob/master/analisa_img/analisa_avi.shThis entry was posted in Sem categoria. Bookmark the permalink.