quinta-feira, 16 de março de 2017

Formatar pen-drive Debian linha comando (terminal) e granvar imagem (iso) do debian no pen-drive.

Formatando pen-drive no Debian pela linha de comando (terminal) e granvar imagem (iso) do debian no pen-drive.


Entre como superusuário no terminal:


========================

# su

========================


Liste as partições:


========================

#  lsblk

========================


Identifique  qual é o pen-drive, no meu caso era o "sdb".

Desmonte o pen-drive

========================

# umount /dev/sdb

======================== 


Utilize o comando (o -I (letra i em maiúsculo) é para sobrepor, caso tenha sdb1, sdb2, ele vai formatar tudo)
" -n " é para colocar o nome do volume:

========================

# mkfs.vfat -n CRISTI /dev/sdb -I

======================== 

Execute o comando que segue para permitir escrita e leitura no pendrive que foi formatado:

======================== 

# chmod 777 -R /dev/sdb

======================== 

Verifique onde o pen-drive está montado com o comando:

======================================

$ lsblk


NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465,8G  0 disk
├─sda1   8:1    0     1K  0 part
├─sda2   8:2    0 436,9G  0 part /home
├─sda3   8:3    0    28G  0 part /
└─sda5   8:5    0   976M  0 part [SWAP]
sdb      8:16   1  14,6G  0 disk
├─sdb1   8:17   1   3,7G  0 part
└─sdb2   8:18   1   416K  0 part
sr0     11:0    1  1024M  0 rom

======================================

No exemplo acima o pendrive está montado em sdb.

comando para copiar a imagem iso da distribuição.


--> entre no terminal como superusuário;
--> entre (no terminal) na pasta onde se encontra a imagem.

Digite o comando que segue:


======================================

# dd if=debian-9.2.1-amd64-DVD-1.iso  of=/dev/sdb bs=8MB status=progress

======================================

Espere  até que a imagem seja gravada.

No computador que testei demorou cerca de 12 minutos.

terça-feira, 14 de março de 2017

Como enviar notas para estudantes por e-mail ( e-mail com mala direta)

Programa feito em C para enviar notas para estudantes a partir de uma planilha (que é convertida em um arquivo de extensão csv).

Programa feito em C:

=========================================

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(int argc, char *argv[]){

    if ( argc < 2 ){
        printf("\nDigite o nome do arquivo com a extensão após o comando %s\n", argv[0]);
        printf("Exemplo: %s arquivo.csv\n\n", argv[0]);
        return 1;
    }

    if ( argc > 2 ){
        printf("\nDigite somente o nome do arquivo com a extensão após o comando %s\n", argv[0]);
        printf("Exemplo: %s arquivo.csv\n\n", argv[0]);
        return 1;
    }

    char nomearquivo[256];
    strcpy(nomearquivo,argv[1]);

    FILE *arq;

    arq = fopen(nomearquivo,"r");
    if (arq == NULL){
        printf("\nHouve um erro ao abrir o arquivo.\n\n");
        return 1;
    } else printf("\nArquivo %s aberto com sucesso!\n\n", nomearquivo);

    char *ano;
    char *semestre;
    char *cod;
    char *matricula;
    char *nome;
    char *curso;
    char *turma;
    char *email;

    char linha[512], comando[256], assunto[256];

    char *prova1;
    char *seminario1;
    char *totalfaltas;

    while(fgets(linha, 512, arq) != NULL){
        printf("%s", linha);

        ano = strtok(linha,";");
        semestre = strtok(NULL,";");
        cod = strtok(NULL,";");
        matricula = strtok(NULL,";");
        nome = strtok(NULL,";");
        curso = strtok(NULL,";");
        turma = strtok(NULL,";");
        email = strtok(NULL,";");
        prova1 = strtok(NULL,";");
        seminario1 = strtok(NULL,";");
        totalfaltas = strtok(NULL,";");

        printf("\n\n%s %s %s %s %s %s %s %s %s %s %s\n\n", ano, semestre, cod, matricula, nome, curso, turma, email, prova1, seminario1, totalfaltas);

        sprintf(assunto, "Notas de %s.\n\nProva 1 = 25%%\nSeminário 1 = 10%%\n\nNome: %s\nMatrícula: %s\n\nNota da prova 1: %s\nNota do seminario 1: %s\nTotal de faltas: %s\n", cod, nome, matricula, prova1, seminario1, totalfaltas);
//        sprintf(assunto, "Notas de %s.\n\nNome: %s\nMatrícula: %s\n\nProva 1: %s\nProva 2: %s\nTotal de faltas: %s\n", cod, nome, matricula, prova1, prova2, totalfaltas);

        sprintf(comando, "echo \"From: cristianoltfs@gmail.com\nTo: %s\nSubject: Notas e faltas de %s\n\n%s \" | sendmail -t\n\n", email, cod, assunto);
        printf(comando);

//        system(comando);

    }

    fclose(arq);
    printf("Arquivo %s fechado com sucesso!\n\n", nomearquivo);

    return 0;
}
=========================================

Comando para compilar:
$ gcc -std=c11 -Wall -pedantic -lm enviarnotas.c -o enviarnotas

Para executar deve estar logado como superusuário:
# ./enviarnotas dados.csv

O formato do arquivo dados.csv pode ser verificado a seguir:

=========================================

COD;MATRICULA;NOME;EMAIL;PROVA1;PROVA2;TOTALFALTAS
PRO491;11.1.4378;CRISTIANO LUIS;cristianoltfs@gmail.com;3;5;10
PRO491;11.2.1286;NOME DO ALUNO 2;email_do_aluno2@gmail.com ;10;5;15
PRO491;11.1.1359;NOME DO ALUNO 3;email_do_aluno2@hotmail.com ;8;8;20

=========================================

Instalar o ssmtp:
# apt-get install ssmtp

Configurando o ssmtp:
Fazer as mudanças no arquivo ssmpt.conf e salvar

# gedit /etc/ssmtp/ssmtp.conf

alterações:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
alterar as linhas:
-----------------------------
mailhub=smtp.gmail.com:587
FromLineOverride=YES
-----------------------------

inserir as linhas no final:
-----------------------------
AuthUser=meu-email@gmail.com(INSERIR SEU E-MAIL AQUI)
AuthPass=minha-senha(INSERIR SUA SENHA DO E-MAIL AQUI)
UseSTARTTLS=YES
-----------------------------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

arquivo completo antes das alterações:
=========================================
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=mail

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=cristianoltfs-Inspiron-3647.Home

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES
=========================================


arquivo completo depois das alterações:
=========================================
 #
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=cristianoltfs-Inspiron-3647.Home

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

AuthUser=meu-email@gmail.com(INSERIR SEU E-MAIL AQUI)
AuthPass=minha-senha(INSERIR SUA SENHA DO E-MAIL AQUI)
UseSTARTTLS=YES

=========================================